0.6.0.1
This commit is contained in:
@@ -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,
|
||||
])
|
||||
|
||||
Reference in New Issue
Block a user