<script lang="ts">
	import Hilfe from "#components/Ausweis/Hilfe.svelte";
	import { ausweisSpeichern } from "#client/lib/ausweisSpeichern.js";
	import { validateAccessTokenClient } from "#client/lib/validateAccessToken.js";
	import { AufnahmeClient, BedarfsausweisWohnenClient, BenutzerClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
	import Overlay from "#components/Overlay.svelte";
	import EmbeddedAuthFlowModule from "#modules/EmbeddedAuthFlowModule.svelte";

	import { Enums } from "@ibcornelsen/database/client";

	export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient;
	export let bilder: UploadedGebaeudeBild[];
	export let user: BenutzerClient;
	export let objekt: ObjektClient;
	export let aufnahme: AufnahmeClient;
	export let ausweisart: Enums.Ausweisart

	async function ausweisAbschicken() {
		if (!await validateAccessTokenClient()) {
			loginOverlayHidden = false;
			return
		}

		loginOverlayHidden = true

		const result = await ausweisSpeichern(ausweis, objekt, aufnahme, bilder, ausweisart);

		if (result !== null) {
			window.history.pushState(
				{},
				"",
				`${location.pathname}?uid=${ausweis.uid}`
			);
			window.location.href = `/kundendaten?uid=${ausweis.uid}`;
		}
	}

	async function spaeterWeitermachen() {
		if (!await validateAccessTokenClient()) {
			loginOverlayHidden = false;
			return
		}

		loginOverlayHidden = true

		const result = await ausweisSpeichern(ausweis, objekt, aufnahme, bilder, ausweisart);

		if (result !== null) {
			window.history.pushState(
				{},
				"",
				`${location.pathname}?uid=${ausweis.uid}`
			);
		}
	}

	let loginOverlayHidden = true;
</script>

<div class="grid grid-cols-1 grid-rows-[min_content_1fr] gap-x-2 gap-y-1 self-start mt-0 
sm:grid-cols-[1fr_min-content_min-content_min-content] sm:justify-self-end sm:mt-8">

	<div></div>

	<Hilfe />

	<button class="button" type="button" on:click={spaeterWeitermachen}
		>Später Weitermachen
	</button>

	<div>
		<Overlay bind:hidden={loginOverlayHidden}>
			<div class="bg-white w-full max-w-screen-sm py-8">
				<EmbeddedAuthFlowModule onLogin={ausweisAbschicken}></EmbeddedAuthFlowModule>
			</div>
		</Overlay>
		
		<button on:click={ausweisAbschicken} type="button" class="button" data-cy="weiter">Weiter</button>
	</div>
</div>
