- Refactor components to support conditional offline and online CRUD operations. - Introduce `addToQueue` mechanism for syncing offline changes to the server. - Add `isChapterContentExist` method and related existence checks in repositories. - Consolidate data structures and streamline book, chapter, character, and guideline synchronization workflows. - Encrypt additional character fields and adjust repository inserts for offline data.
30 lines
1.2 KiB
TypeScript
30 lines
1.2 KiB
TypeScript
import {BookSyncCompare, SyncedBook} from "@/lib/models/SyncedBook";
|
|
import {Context, createContext, Dispatch, SetStateAction} from "react";
|
|
|
|
export type SyncType = 'server-only' | 'local-only' | 'to-sync-from-server' | 'to-sync-to-server' | 'synced'
|
|
|
|
export interface BooksSyncContextProps {
|
|
serverSyncedBooks:SyncedBook[];
|
|
localSyncedBooks:SyncedBook[];
|
|
booksToSyncFromServer:BookSyncCompare[];
|
|
booksToSyncToServer:BookSyncCompare[];
|
|
setServerSyncedBooks:Dispatch<SetStateAction<SyncedBook[]>>;
|
|
setLocalSyncedBooks:Dispatch<SetStateAction<SyncedBook[]>>;
|
|
setServerOnlyBooks:Dispatch<SetStateAction<SyncedBook[]>>;
|
|
setLocalOnlyBooks:Dispatch<SetStateAction<SyncedBook[]>>;
|
|
serverOnlyBooks:SyncedBook[];
|
|
localOnlyBooks:SyncedBook[];
|
|
}
|
|
|
|
export const BooksSyncContext:Context<BooksSyncContextProps> = createContext<BooksSyncContextProps>({
|
|
serverSyncedBooks:[],
|
|
localSyncedBooks:[],
|
|
booksToSyncFromServer:[],
|
|
booksToSyncToServer:[],
|
|
setServerSyncedBooks:():void => {},
|
|
setLocalSyncedBooks:():void => {},
|
|
setServerOnlyBooks:():void => {},
|
|
setLocalOnlyBooks:():void => {},
|
|
serverOnlyBooks:[],
|
|
localOnlyBooks:[]
|
|
}) |