This commit is contained in:
freedakgmail
2025-12-09 18:52:00 +08:00
parent debcce71bf
commit 09809c0e49
156 changed files with 1150 additions and 1330 deletions
+33
View File
@@ -26,6 +26,7 @@ interface FamilyContextType {
searchMembers: (query: string) => void
loadData: (data: FamilyTreeData) => Promise<void>
resetData: () => Promise<void>
refreshData: () => Promise<void>
isLoading: boolean
highlightedMemberId: string | null
setHighlightedMemberId: (id: string | null) => void
@@ -340,6 +341,36 @@ function FamilyProviderInner({ children }: { children: React.ReactNode }) {
setTreeData({ rootId: "", members: {} })
}, [])
// 刷新数据(从服务器重新加载当前树的成员数据)
const refreshData = useCallback(async () => {
if (!currentTree?.id) return
try {
setIsLoading(true)
const membersResponse = await fetch(`/api/trees/${currentTree.id}/members`)
if (membersResponse.ok) {
const membersData = await membersResponse.json()
if (membersData.members) {
const membersMap = membersData.members.reduce(
(acc: Record<string, FamilyMember>, member: FamilyMember) => {
acc[member.id] = member
return acc
},
{}
)
setTreeData({
rootId: membersData.rootId || "",
members: membersMap,
})
}
}
} catch (err) {
console.error('刷新数据失败:', err)
} finally {
setIsLoading(false)
}
}, [currentTree?.id])
const searchMembers = useCallback(
(query: string) => {
if (!query.trim()) {
@@ -393,6 +424,7 @@ function FamilyProviderInner({ children }: { children: React.ReactNode }) {
searchMembers,
loadData,
resetData,
refreshData,
isLoading,
highlightedMemberId,
setHighlightedMemberId,
@@ -407,6 +439,7 @@ function FamilyProviderInner({ children }: { children: React.ReactNode }) {
searchMembers,
loadData,
resetData,
refreshData,
isLoading,
highlightedMemberId,
])