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