import {Text} from "react-native" import {useQuery,useQueryClient} from "@tanstack/react-query" import {useState} from "react" import {useRouter} from "expo-router" import {useSession} from "../src/state/session" import {useSwitchAccount} from "../src/state/accounts" import {Body,Button,EmptyState,ErrorMessage,Panel,Screen,Title,styles} from "../src/components/ui" import type {Plan} from "../src/lib/plans" type Notification={id:string;title:string;body:string;plan_id:string|null;read_at:string|null;created_at:string} export default function Notifications(){ const {session,client}=useSession(),router=useRouter(),switchAccount=useSwitchAccount(),cache=useQueryClient(),[error,setError]=useState(""),[busy,setBusy]=useState(false) const query=useQuery({queryKey:["notifications",session?.user.id],enabled:!!session,queryFn:({signal})=>client("/api/v1/notifications",{signal}),refetchInterval:10000}) async function read(n:Notification,open=false){setBusy(true);setError("");try{await client(`/api/v1/notifications/${n.id}/read`,{method:"POST",body:{}});await cache.invalidateQueries({queryKey:["notifications"]});if(open&&n.plan_id){const plans=await client("/api/v1/plans");const plan=plans.find(p=>p.id===n.plan_id);if(plan){await switchAccount(plan.account_id);router.push("/(tabs)/plans")}else setError("原计划不在当前列表中,请到计划页查看历史状态。")}}catch(e){setError(e instanceof Error?e.message:"操作失败")}finally{setBusy(false)}} return 提醒中心站内提醒来自计划条件或候选状态变化。提醒不代表交易;打开后请核对最新状态。远程推送尚未接入。