This commit is contained in:
freedakgmail
2025-11-23 09:24:14 +08:00
parent bade25ff26
commit 00cfae381b
488 changed files with 4141 additions and 1182075 deletions
@@ -42,7 +42,7 @@ var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$ch
;
;
const FamilyContext = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["createContext"])(undefined);
function FamilyProvider({ children }) {
function FamilyProviderInner({ children }) {
const { data: session, status } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$2d$auth$40$4$2e$24$2e$13_next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0_$5f$nodemailer$40$7_3c43d6bc4ecce810d1d16651fe207b00$2f$node_modules$2f$next$2d$auth$2f$react$2f$index$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useSession"])();
const searchParams = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useSearchParams"])();
const [searchResults, setSearchResults] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useState"])([]);
@@ -81,12 +81,10 @@ function FamilyProvider({ children }) {
const targetTreeId = treeId || 'first';
// 如果正在加载相同的树,跳过
if (loadingTreeIdRef.current === targetTreeId) {
console.log('⏭️ 跳过重复加载:', targetTreeId);
return;
}
// 如果 treeId 与当前树相同,跳过
if (treeId && treeId === currentTree?.id) {
console.log('⏭️ 已加载该树,跳过:', treeId);
return;
}
// 标记正在加载
@@ -101,14 +99,6 @@ function FamilyProvider({ children }) {
throw new Error(`HTTP error! status: ${res.status}`);
}
const data = await res.json();
console.log('🌳 获取家族树响应:', {
fetchUrl,
targetTreeId,
responseData: data,
treesCount: data.trees?.length,
firstTree: data.trees?.[0],
singleTree: data.tree
});
if (signal.aborted) return;
let tree = null;
if (targetTreeId === 'first') {
@@ -116,41 +106,23 @@ function FamilyProvider({ children }) {
} else {
tree = data.tree;
}
console.log('🎯 选择的家族树:', tree);
if (tree) {
setCurrentTree(tree);
// 加载该树的成员数据
console.log('🔄 开始加载成员数据:', {
treeId: tree.id,
treeName: tree.name
});
try {
const memberRes = await fetch(`/api/trees/${tree.id}/members`, {
signal
});
console.log('📡 成员数据响应状态:', memberRes.status, memberRes.ok);
if (!memberRes.ok) {
throw new Error(`Failed to load members: ${memberRes.status}`);
}
const memberData = await memberRes.json();
console.log('📊 获取到的成员数据:', {
treeId: tree.id,
treeName: tree.name,
membersCount: memberData.members?.length || 0,
members: memberData.members,
rootId: memberData.rootId
});
if (signal.aborted) return;
if (memberData.members) {
const membersMap = memberData.members.reduce((acc, member)=>{
acc[member.id] = member;
return acc;
}, {});
console.log('✅ 设置 treeData:', {
rootId: memberData.rootId || "",
membersMapKeys: Object.keys(membersMap),
membersMapCount: Object.keys(membersMap).length
});
setTreeData({
rootId: memberData.rootId || "",
members: membersMap
@@ -158,7 +130,6 @@ function FamilyProvider({ children }) {
}
} catch (err) {
if (err.name === 'AbortError') {
console.log('❌ 成员数据加载被中断');
return;
}
console.error('加载成员数据失败:', err);
@@ -177,7 +148,6 @@ function FamilyProvider({ children }) {
}
} catch (err) {
if (err.name === 'AbortError') {
console.log('❌ 家族树加载被中断');
return;
}
// 忽略 Failed to fetch 错误
@@ -346,18 +316,15 @@ function FamilyProvider({ children }) {
loadData
]);
// 监听 treeData 变化
(0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useEffect"])(()=>{
console.log('🔄 FamilyContext treeData 更新:', {
rootId: treeData.rootId,
membersCount: Object.keys(treeData.members).length,
memberIds: Object.keys(treeData.members),
currentTreeId: currentTree?.id,
currentTreeName: currentTree?.name
});
}, [
treeData,
currentTree
]);
// useEffect(() => {
// console.log('🔄 FamilyContext treeData 更新:', {
// rootId: treeData.rootId,
// membersCount: Object.keys(treeData.members).length,
// memberIds: Object.keys(treeData.members),
// currentTreeId: currentTree?.id,
// currentTreeName: currentTree?.name
// })
// }, [treeData, currentTree])
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(FamilyContext.Provider, {
value: {
treeData,
@@ -377,7 +344,29 @@ function FamilyProvider({ children }) {
children: children
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/context/family-context.tsx",
lineNumber: 371,
lineNumber: 341,
columnNumber: 5
}, this);
}
function FamilyProvider({ children }) {
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["Suspense"], {
fallback: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: "Loading..."
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/context/family-context.tsx",
lineNumber: 365,
columnNumber: 25
}, void 0),
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(FamilyProviderInner, {
children: children
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/context/family-context.tsx",
lineNumber: 366,
columnNumber: 7
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/context/family-context.tsx",
lineNumber: 365,
columnNumber: 5
}, this);
}