import { Redirect, Tabs } from "expo-router";
import { Text } from "react-native";
import { useQuery, useQueryClient } from "@tanstack/react-query";
import { api, getConsent, type ConsentStatus } from "@/lib/api";
import { persistLanguageTag, useAuth } from "@/lib/auth";
import { colors } from "@/lib/theme";
import { getLanguageTag, t } from "@/lib/i18n";
import { setMeasurementSystem, setUnitLanguage } from "@/lib/units";
import { ConsentScreen } from "@/components/ConsentScreen";
import type { MeasurementSystem } from "@app/shared-types";
import { TERMS_VERSION } from "@app/shared-types";
function TabIcon({ glyph, focused }: { glyph: string; focused: boolean }) {
return {glyph};
}
interface LocalePrefs {
languageTag: string;
measurementSystem: MeasurementSystem;
}
/** Applicera backend-preferenser på språk/mått vid inloggad start (i18n M4–M5). */
function useApplyLocalePreferences(enabled: boolean) {
useQuery({
queryKey: ["locale-preferences"],
queryFn: async () => {
const prefs = await api("/v1/me/locale-preferences");
setMeasurementSystem(prefs.measurementSystem);
setUnitLanguage(prefs.languageTag.split("-")[0] ?? "sv");
if (prefs.languageTag !== getLanguageTag()) await persistLanguageTag(prefs.languageTag);
return prefs;
},
enabled,
staleTime: 3600_000,
});
}
export default function TabsLayout() {
const accessToken = useAuth((s) => s.accessToken);
const onboardingCompleted = useAuth((s) => s.onboardingCompleted);
const onboardingStep = useAuth((s) => s.onboardingStep);
useApplyLocalePreferences(Boolean(accessToken));
const queryClient = useQueryClient();
const { data: consent, isLoading: consentLoading } = useQuery({
queryKey: ["consent"],
queryFn: getConsent,
enabled: Boolean(accessToken),
staleTime: 60_000,
});
if (!accessToken) return ;
if (consentLoading) return null;
if (!consent?.accepted || consent.version !== TERMS_VERSION) {
return (
void queryClient.invalidateQueries({ queryKey: ["consent"] })}
/>
);
}
// Progressive onboarding (FAS 1b): only block if step A not done
if (!onboardingCompleted && onboardingStep === "a") return ;
return (
,
}}
/>
,
}}
/>
,
}}
/>
,
}}
/>
,
}}
/>
);
}