From 0f3e87b67a40c212d7f093a6b1a5d8082e2a2526 Mon Sep 17 00:00:00 2001 From: Mannu Date: Tue, 2 Jun 2026 21:44:58 +0530 Subject: [PATCH] feat: home nudge for existing users with no phone number MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Existing users (signed up before phone collection) won't have a number. Show a dismissable home banner prompting them to add one. - Checks /api/auth/profile on load; shows banner only if user.phone is empty - "Add" links to /profile; ✕ dismisses - Dismissal remembered in localStorage (tia_phone_nudge_dismissed) so it never nags repeatedly - Dark-mode styled, sits below the vaccine reminder banner Co-Authored-By: Claude Opus 4.8 --- src/app/(app)/home/page.tsx | 42 +++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/app/(app)/home/page.tsx b/src/app/(app)/home/page.tsx index f6965b1..0bfd17a 100644 --- a/src/app/(app)/home/page.tsx +++ b/src/app/(app)/home/page.tsx @@ -99,6 +99,7 @@ export default function HomePage() { const [recentLogs, setRecentLogs] = useState([]); const [logsLoading, setLogsLoading] = useState(true); const [vaccineReminders, setVaccineReminders] = useState([]); + const [showPhoneNudge, setShowPhoneNudge] = useState(false); const [aiChips, setAiChips] = useState([]); const [uploadingPhoto, setUploadingPhoto] = useState(false); const [photoError, setPhotoError] = useState(false); @@ -134,6 +135,24 @@ export default function HomePage() { return () => window.removeEventListener("online", handleOnline); }, [childId]); + // One-time nudge for existing users who have no phone number on file. + // Dismissable; remembered in localStorage so it never nags repeatedly. + useEffect(() => { + if (!childId) return; + if (localStorage.getItem("tia_phone_nudge_dismissed") === "1") return; + fetch("/api/auth/profile") + .then(r => r.json()) + .then(data => { + if (data.user && !data.user.phone) setShowPhoneNudge(true); + }) + .catch(() => {}); + }, [childId]); + + const dismissPhoneNudge = () => { + setShowPhoneNudge(false); + localStorage.setItem("tia_phone_nudge_dismissed", "1"); + }; + const fetchRecentLogs = async () => { if (!childId) return; try { @@ -413,6 +432,29 @@ export default function HomePage() { )} + {showPhoneNudge && ( +
+ 📱 +
+
Add your phone number
+
Get important reminders & updates about your baby
+
+ + Add + + +
+ )} + {stage && (() => {