<!-- #region HomePage [C:3] [TYPE Page] [SEMANTICS sveltekit, redirect, landing, profile, startpage] -->
<!-- @BRIEF Redirect to preferred start page (dashboards/datasets/reports) based on profile settings, with safe fallback. -->
<!-- @LAYER Page -->
<!-- @RELATION BINDS_TO -> [EXT:frontend:api_module] -->
<!-- @UX_STATE Loading -> Shows centered spinner while resolving the preferred landing route. -->
<!-- @UX_FEEDBACK Redirects to preferred start page once profile or local fallback is resolved. -->
<!-- @INVARIANT Redirect target resolves to one of /dashboards, /datasets, /reports. -->
<script lang="ts">
  import { onMount } from "svelte";
  import { goto } from "$app/navigation";
  import { api } from "$lib/api.js";

  function normalizeStartPage(value) {
    const normalized = String(value || "").trim().toLowerCase();
    if (normalized === "datasets") return "datasets";
    if (normalized === "reports" || normalized === "reports-logs") return "reports";
    return "dashboards";
  }

  function resolveStartPagePath(startPage) {
    if (startPage === "datasets") return "/datasets";
    if (startPage === "reports") return "/reports";
    return "/dashboards";
  }

  async function redirectToStartPage() {
    let startPage = "dashboards";

    if (typeof window !== "undefined") {
      const cachedStartPage = window.localStorage.getItem("ss_tools.profile.start_page");
      startPage = normalizeStartPage(cachedStartPage);
    }

    try {
      const response = await api.getProfilePreferences();
      const preferredStartPage = normalizeStartPage(response?.preference?.start_page);
      startPage = preferredStartPage;
      if (typeof window !== "undefined") {
        window.localStorage.setItem("ss_tools.profile.start_page", preferredStartPage);
      }
    } catch (error) {
      console.warn(
        "[HomePage][REFLECT] Failed to resolve preferred start page, using fallback",
        error,
      );
    }

    goto(resolveStartPagePath(startPage), { replaceState: true });
  }

  onMount(() => {
    void redirectToStartPage();
  });
</script>

<div class="flex items-center justify-center min-h-screen">
  <svg
    class="animate-spin h-8 w-8 text-primary"
    xmlns="http://www.w3.org/2000/svg"
    fill="none"
    viewBox="0 0 24 24"
  >
    <circle
      class="opacity-25"
      cx="12"
      cy="12"
      r="10"
      stroke="currentColor"
      stroke-width="4"
    ></circle>
    <path
      class="opacity-75"
      fill="currentColor"
      d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
    ></path>
  </svg>
</div>

<!-- #endregion HomePage -->
