From 7eb8ccae48b0cc18a9dcaa9c3626a02df8e6d919 Mon Sep 17 00:00:00 2001 From: JustZvan Date: Fri, 6 Feb 2026 13:22:33 +0100 Subject: feat: initial commit! --- app/(tabs)/alerts.tsx | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 app/(tabs)/alerts.tsx (limited to 'app/(tabs)/alerts.tsx') diff --git a/app/(tabs)/alerts.tsx b/app/(tabs)/alerts.tsx new file mode 100644 index 0000000..590fe87 --- /dev/null +++ b/app/(tabs)/alerts.tsx @@ -0,0 +1,114 @@ +import { Ionicons } from "@expo/vector-icons"; +import { useEffect, useState } from "react"; +import { ActivityIndicator, Text, View } from "react-native"; +import { Alert, getAlerts } from "../../api"; +import { t } from "../../lib/locales"; +import { colors } from "../../lib/theme"; +import { Card, Divider, H2, Muted, Pill, Row, Screen } from "../../lib/ui"; + +export default function AlertsScreen() { + const [alerts, setAlerts] = useState([]); + const [loading, setLoading] = useState(true); + + useEffect(() => { + console.log("AlertsScreen: Fetching alerts..."); + setLoading(true); + getAlerts() + .then((data) => { + console.log("AlertsScreen: Received alerts:", data); + setAlerts(data); + }) + .catch((error) => { + console.error("AlertsScreen: Error fetching alerts:", error); + }) + .finally(() => { + setLoading(false); + }); + }, []); + + return ( + + {loading ? ( + + + + {t("loadingAlerts")} + + + ) : alerts.length === 0 ? ( + + + +

{t("allClearTitle")}

+ + {t("noAlertsToReview")} + +
+
+ ) : ( + alerts.map((alert) => ( + + + + +

{alert.title}

+ {alert.timeLabel} +
+ + } + right={ + + } + /> + + + +

{t("whatHappened")}

+ {alert.whatHappened} + +

{t("whyItMatters")}

+ {alert.whyItMatters} + +

{t("suggestedNextStep")}

+ {alert.suggestedAction} +
+ )) + )} +
+ ); +} -- cgit v1.2.3