From 1e6407d9e6901cd4a2f0c0045742627f76f77db9 Mon Sep 17 00:00:00 2001 From: "Sven (AAMOS AI)" Date: Fri, 14 Aug 2026 18:59:39 +0700 Subject: [PATCH] =?UTF-8?q?feat(mobile):=20slutf=C3=B6r-profil-prompt=20sa?= =?UTF-8?q?mlar=20kost=20&=20allergier=20progressivt=20(MIKRO=2057)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/mobile/src/app/(tabs)/home.tsx | 20 +++++++++++++++++++- apps/mobile/src/locales/sv/common.json | 2 ++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/apps/mobile/src/app/(tabs)/home.tsx b/apps/mobile/src/app/(tabs)/home.tsx index 6177b34..9aec0c6 100644 --- a/apps/mobile/src/app/(tabs)/home.tsx +++ b/apps/mobile/src/app/(tabs)/home.tsx @@ -1,7 +1,9 @@ import { Pressable, View } from "react-native"; -import { router } from "expo-router"; +import { useCallback } from "react"; +import { router, useFocusEffect } from "expo-router"; import { useQuery } from "@tanstack/react-query"; import { api } from "@/lib/api"; +import { useAuth } from "@/lib/auth"; import { t } from "@/lib/i18n"; import { formatMinor } from "@/lib/money"; import { @@ -53,10 +55,18 @@ export default function HomeScreen() { queryKey: ["budget"], queryFn: () => api("/v1/budget/summary"), }); + const onboardingStatus = useQuery({ + queryKey: ["onboarding-status"], + queryFn: () => + api<{ step: "a" | "b" | "c"; onboardingCompleted: boolean }>("/v1/onboarding/status"), + }); + const setOnboardingStep = useAuth((s) => s.setOnboardingStep); if (inventory.isLoading) return ; if (inventory.isError) return void inventory.refetch()} />; + useFocusEffect(useCallback(() => { void onboardingStatus.refetch(); }, [])); + const items = inventory.data?.items ?? []; const urgent = expiring.data?.items ?? []; @@ -68,10 +78,18 @@ export default function HomeScreen() { } const trustStatus = inventory.data?.trustStatus; + const needsProfile = onboardingStatus.data && !onboardingStatus.data.onboardingCompleted; + const profileStep = onboardingStatus.data?.step ?? "b"; return ( {t("home.title")} + {needsProfile && ( + { setOnboardingStep(profileStep); router.push("/onboarding"); }}> + {t("home.completeProfile.title")} + {t("home.completeProfile.body")} + + )} {trustStatus && ( router.push("/reconciliation")}> diff --git a/apps/mobile/src/locales/sv/common.json b/apps/mobile/src/locales/sv/common.json index 958065f..342eb98 100644 --- a/apps/mobile/src/locales/sv/common.json +++ b/apps/mobile/src/locales/sv/common.json @@ -87,6 +87,8 @@ "home.shopping": "Inköpslista", "home.thisWeek": "Denna vecka", "home.title": "Hemma", + "home.completeProfile.title": "Gör appen smartare", + "home.completeProfile.body": "Berätta om kost och allergier så blir förslagen mer personliga (ca 30 sek).", "home.useSoon": "Använd snart", "home.useSoonHint": "Bäst före handlar om kvalitet – lukta, titta och smaka innan du slänger. Sista förbrukningsdag ska däremot respekteras.", "home.waste": "Matsvinn",