0.8.0.0
This commit is contained in:
@@ -19,9 +19,9 @@ interface FamilyContextType {
|
||||
treeData: FamilyTreeData
|
||||
currentTree: FamilyTreeInfo | null
|
||||
getMember: (id: string) => FamilyMember | undefined
|
||||
addMember: (member: FamilyMember) => Promise<void>
|
||||
addMember: (member: FamilyMember) => Promise<{ member: FamilyMember; message?: string }>
|
||||
updateMember: (id: string, updates: Partial<FamilyMember>) => Promise<void>
|
||||
deleteMember: (id: string) => Promise<void>
|
||||
deleteMember: (id: string) => Promise<{ success: boolean; message?: string; newRootMemberId?: string }>
|
||||
searchResults: FamilyMember[]
|
||||
searchMembers: (query: string) => void
|
||||
loadData: (data: FamilyTreeData) => Promise<void>
|
||||
@@ -212,6 +212,28 @@ function FamilyProviderInner({ children }: { children: React.ReactNode }) {
|
||||
|
||||
const data = await response.json()
|
||||
|
||||
// 如果发生了代数重新计算,需要重新加载所有成员数据
|
||||
if (data.generationRecalculated) {
|
||||
const membersResponse = await fetch(`/api/trees/${currentTree.id}/members`)
|
||||
if (membersResponse.ok) {
|
||||
const membersData = await membersResponse.json()
|
||||
const membersMap: Record<string, FamilyMember> = {}
|
||||
membersData.members.forEach((m: FamilyMember) => {
|
||||
membersMap[m.id] = m
|
||||
})
|
||||
setTreeData(prev => ({
|
||||
rootId: membersData.rootId || prev.rootId,
|
||||
members: membersMap,
|
||||
}))
|
||||
|
||||
// 返回提示信息
|
||||
return {
|
||||
member: data.member,
|
||||
message: `已成功添加成员。由于给始祖添加了父母,全族代数已自动调整(+${data.generationOffset}代)。`
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 更新本地状态
|
||||
setTreeData(prev => ({
|
||||
...prev,
|
||||
@@ -220,6 +242,8 @@ function FamilyProviderInner({ children }: { children: React.ReactNode }) {
|
||||
[data.member.id]: data.member,
|
||||
},
|
||||
}))
|
||||
|
||||
return { member: data.member }
|
||||
}, [currentTree?.id])
|
||||
|
||||
const updateMember = useCallback(async (id: string, updates: Partial<FamilyMember>) => {
|
||||
@@ -291,6 +315,30 @@ function FamilyProviderInner({ children }: { children: React.ReactNode }) {
|
||||
throw new Error(error.error || '删除成员失败')
|
||||
}
|
||||
|
||||
const data = await response.json()
|
||||
|
||||
// 如果发生了代数重新计算,需要重新加载所有成员数据
|
||||
if (data.generationRecalculated) {
|
||||
const membersResponse = await fetch(`/api/trees/${currentTree.id}/members`)
|
||||
if (membersResponse.ok) {
|
||||
const membersData = await membersResponse.json()
|
||||
const membersMap: Record<string, FamilyMember> = {}
|
||||
membersData.members.forEach((m: FamilyMember) => {
|
||||
membersMap[m.id] = m
|
||||
})
|
||||
setTreeData(prev => ({
|
||||
rootId: membersData.rootId || prev.rootId,
|
||||
members: membersMap,
|
||||
}))
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: `已成功删除成员。由于删除了始祖,全族代数已自动调整(-1代)。`,
|
||||
newRootMemberId: data.newRootMemberId
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 更新本地状态
|
||||
setTreeData(prev => {
|
||||
const newMembers = { ...prev.members }
|
||||
@@ -300,6 +348,8 @@ function FamilyProviderInner({ children }: { children: React.ReactNode }) {
|
||||
members: newMembers,
|
||||
}
|
||||
})
|
||||
|
||||
return { success: true }
|
||||
}, [currentTree?.id])
|
||||
|
||||
const loadData = useCallback(async (data: FamilyTreeData) => {
|
||||
|
||||
Reference in New Issue
Block a user