This commit is contained in:
freedakgmail
2025-11-23 00:49:16 +08:00
parent c033e46782
commit 626d7dddde
184 changed files with 321926 additions and 2720 deletions
+30 -6
View File
@@ -7,6 +7,7 @@ import { mockFamilyData } from "@/lib/mock-data"
import { db } from "@/lib/db"
import { useLiveQuery } from "dexie-react-hooks"
import { setupDailyNotificationCheck } from "@/lib/notifications"
import { logActivity } from "@/lib/activity-logger"
interface FamilyContextType {
treeData: FamilyTreeData
@@ -80,7 +81,7 @@ export function FamilyProvider({ children }: { children: React.ReactNode }) {
)
const addMember = useCallback(async (member: FamilyMember) => {
await db.transaction("rw", db.members, async () => {
await db.transaction("rw", db.members, db.activityLogs, async () => {
// Add the member
await db.members.add(member)
@@ -115,18 +116,31 @@ export function FamilyProvider({ children }: { children: React.ReactNode }) {
}
}
}
// 记录日志(在事务内)
await logActivity("create", "member", member.id, member.fullName)
})
}, [])
const updateMember = useCallback(async (id: string, updates: Partial<FamilyMember>) => {
await db.members.update(id, {
...updates,
updatedAt: new Date().toISOString(),
await db.transaction("rw", db.members, db.activityLogs, async () => {
const member = await db.members.get(id)
await db.members.update(id, {
...updates,
updatedAt: new Date().toISOString(),
})
// 记录日志(在事务内)
if (member) {
await logActivity("update", "member", id, member.fullName, updates)
}
})
}, [])
const deleteMember = useCallback(async (id: string) => {
await db.transaction("rw", db.members, db.settings, async () => {
await db.transaction("rw", db.members, db.settings, db.activityLogs, async () => {
const member = await db.members.get(id)
// Remove from DB
await db.members.delete(id)
@@ -134,14 +148,24 @@ export function FamilyProvider({ children }: { children: React.ReactNode }) {
// childrenIds, spouseIds, etc. For now, we'll keep it simple as per the original implementation.
// If we deleted the root, we might want to handle that, but for now let's leave it.
// 记录日志(在事务内)
if (member) {
await logActivity("delete", "member", id, member.fullName)
}
})
}, [])
const loadData = useCallback(async (data: FamilyTreeData) => {
await db.transaction("rw", db.members, db.settings, async () => {
await db.transaction("rw", db.members, db.settings, db.activityLogs, async () => {
await db.members.clear()
await db.members.bulkAdd(Object.values(data.members))
await db.settings.put({ key: "rootId", value: data.rootId })
// 记录日志(在事务内)
await logActivity("import", "settings", undefined, "导入家族数据", {
memberCount: Object.keys(data.members).length
})
})
}, [])