Add deletedAt timestamps to delete operations for better audit tracking
- Updated delete methods across hooks and components to include `deletedAt: System.timeStampInSeconds()`. - Refactored synchronized delete logic to pass `deletedAt` for both offline and online states. - Improved synchronization workflows to include `deletedAt` in server and IPC requests. - Enhanced destructuring patterns for cleaner and more consistent request data.
This commit is contained in:
@@ -523,10 +523,11 @@ export function useCharacters(config: UseCharactersConfig): UseCharactersReturn
|
||||
const deleteCharacter = useCallback(async function (characterId: string): Promise<void> {
|
||||
try {
|
||||
let response: boolean;
|
||||
const requestData = {characterId: characterId};
|
||||
const deletedAt: number = System.timeStampInSeconds();
|
||||
|
||||
if (isSeriesMode) {
|
||||
// Series mode - dual logic
|
||||
const requestData = {characterId, deletedAt};
|
||||
if (isCurrentlyOffline() || localSeries) {
|
||||
response = await window.electron.invoke<boolean>('db:series:character:delete', requestData);
|
||||
} else {
|
||||
@@ -537,6 +538,7 @@ export function useCharacters(config: UseCharactersConfig): UseCharactersReturn
|
||||
}
|
||||
} else {
|
||||
// Pattern A: mutations
|
||||
const requestData = {characterId, bookId: entityId, deletedAt};
|
||||
if (isCurrentlyOffline() || book?.localBook) {
|
||||
// Offline OU livre local → IPC
|
||||
response = await window.electron.invoke<boolean>('db:character:delete', requestData);
|
||||
@@ -649,11 +651,12 @@ export function useCharacters(config: UseCharactersConfig): UseCharactersReturn
|
||||
setSelectedCharacter({...selectedCharacter, [section]: updatedSection});
|
||||
} else {
|
||||
try {
|
||||
const requestData = {attributeId: attrId};
|
||||
const deletedAt: number = System.timeStampInSeconds();
|
||||
|
||||
let response: boolean;
|
||||
if (isSeriesMode) {
|
||||
// Series mode - dual logic
|
||||
const requestData = {attributeId: attrId, deletedAt};
|
||||
if (isCurrentlyOffline() || localSeries) {
|
||||
response = await window.electron.invoke<boolean>('db:series:character:attribute:delete', requestData);
|
||||
} else {
|
||||
@@ -664,6 +667,7 @@ export function useCharacters(config: UseCharactersConfig): UseCharactersReturn
|
||||
}
|
||||
} else {
|
||||
// Pattern A: mutations
|
||||
const requestData = {attributeId: attrId, bookId: entityId, deletedAt};
|
||||
if (isCurrentlyOffline() || book?.localBook) {
|
||||
// Offline OU livre local → IPC
|
||||
response = await window.electron.invoke<boolean>('db:character:attribute:delete', requestData);
|
||||
|
||||
Reference in New Issue
Block a user