<template>
    <div class="from-dark-600 to-dark-900 bg-gradient-to-tl min-h-dvh">
        <LazySidebarsNavigation />
        <div class="relative md:pl-20 min-h-dvh flex flex-row overflow-hidden justify-center xl:justify-between">
            <OverlayScrollbarsComponent :defer="true" class="w-full max-h-dvh overflow-y-auto">
                <slot />
            </OverlayScrollbarsComponent>
            <ClientOnly>
                <LazySidebarsCollapsibleAside v-if="width > 1280 && tokenData" direction="right"
                    class="max-w-md max-h-dvh overflow-y-auto w-full hidden absolute inset-y-0 xl:flex">
                    <LazyTimelinesTimelineScroller>
                        <LazyTimelinesNotifications />
                    </LazyTimelinesTimelineScroller>
                    <!-- <div class="mt-auto prose prose-invert prose-sm flex flex-col gap-4 px-10 pb-10" v-if="!tokenData">
                        <div class="text-center">
                            <strong
                                class="bg-gradient-to-tr from-pink-300 via-purple-300 to-indigo-400 text-transparent bg-clip-text">Lysand
                                {{ instance?.lysand_version ?? instance?.version }}</strong> • <a
                                href="https://github.com/lysand-org/lysand" target="_blank">Source Code</a>• <a
                                href="https://github.com/lysand-org/lysand/issues" target="_blank">Report an Issue</a>
                        </div>


                        <NuxtLink href="https://github.com/lysand-org/lysand" target="_blank">
                            <ButtonsSecondary class="w-full">
                                Create your own instance
                            </ButtonsSecondary>
                        </NuxtLink>

                        <NuxtLink href="/about/apps">
                            <ButtonsSecondary class="w-full">
                                Mobile Apps
                            </ButtonsSecondary>
                        </NuxtLink>
                    </div> -->
                </LazySidebarsCollapsibleAside>
            </ClientOnly>
        </div>
    </div>
    <LazyComposerModal />
</template>

<script setup lang="ts">
import { OverlayScrollbarsComponent } from "#imports";
const { width } = useWindowSize();

const { n, o_i_d_c, t_e_s_t } = useMagicKeys();
const tokenData = useTokenData();
const client = useMegalodon(tokenData);
const providers = useSSOConfig();

watchEffect(async () => {
    if (n.value) {
        // Wait 50ms
        await new Promise((resolve) => setTimeout(resolve, 50));
        useEvent("composer:open");
    }
    if (o_i_d_c.value) {
        const issuer = providers.value?.providers[0];

        if (!issuer) {
            console.error("No SSO provider found");
            return;
        }

        const response = await fetch(
            new URL("/api/v1/sso", client.value?.baseUrl),
            {
                method: "POST",
                headers: {
                    Authorization: `Bearer ${tokenData.value?.access_token}`,
                    "Content-Type": "application/json",
                },
                body: JSON.stringify({
                    issuer: issuer.id,
                }),
            },
        );

        const json = await response.json();
        window.location.href = json.link;
    }
    if (t_e_s_t.value) {
        useEvent("notification:new", {
            type: "info",
            title: "Test Notification",
            message: "This is a test notification",
        });
    }
});
</script>