Migrate from window.electron to tauri IPC functions across components
- Replaced `window.electron.invoke` calls with equivalent `tauri` function calls for all IPC interactions. - Removed `electron.d.ts` TypeScript definitions as they are no longer needed. - Updated related logic for offline/online state synchronization. - Added `types.rs` and `shared/mod.rs` modules to support Tauri IPC integration with Rust enums and shared logic. - Refactored IPC request queues to use updated handler names for consistency with Tauri.
This commit is contained in:
@@ -8,6 +8,7 @@ import {BooksSyncContext} from '@/context/BooksSyncContext';
|
||||
import {CompleteBook} from '@/lib/models/Book';
|
||||
import {BookSyncCompare, SyncedBook} from '@/lib/models/SyncedBook';
|
||||
import {useTranslations} from 'next-intl';
|
||||
import * as tauri from '@/lib/tauri';
|
||||
|
||||
interface RemovedItemRecord {
|
||||
removal_id: string;
|
||||
@@ -46,7 +47,7 @@ export default function useSyncBooks() {
|
||||
if (isCurrentlyOffline()) return false;
|
||||
|
||||
try {
|
||||
const bookToSync: CompleteBook = await window.electron.invoke<CompleteBook>('db:book:uploadToServer', bookId);
|
||||
const bookToSync: CompleteBook = await tauri.uploadBookToServer(bookId) as CompleteBook;
|
||||
if (!bookToSync) {
|
||||
errorMessage(t('bookCard.uploadError'));
|
||||
return false;
|
||||
@@ -86,7 +87,7 @@ export default function useSyncBooks() {
|
||||
errorMessage(t('bookCard.downloadError'));
|
||||
return false;
|
||||
}
|
||||
const syncStatus: boolean = await window.electron.invoke<boolean>('db:book:syncSave', response);
|
||||
const syncStatus: boolean = await tauri.syncSaveBook(response);
|
||||
if (!syncStatus) {
|
||||
errorMessage(t('bookCard.downloadError'));
|
||||
return false;
|
||||
@@ -126,7 +127,7 @@ export default function useSyncBooks() {
|
||||
errorMessage(t('bookCard.syncFromServerError'));
|
||||
return false;
|
||||
}
|
||||
const syncStatus: boolean = await window.electron.invoke<boolean>('db:book:sync:toClient', response);
|
||||
const syncStatus: boolean = await tauri.syncBookToClient(response);
|
||||
if (!syncStatus) {
|
||||
errorMessage(t('bookCard.syncFromServerError'));
|
||||
return false;
|
||||
@@ -154,7 +155,7 @@ export default function useSyncBooks() {
|
||||
errorMessage(t('bookCard.syncToServerError'));
|
||||
return false;
|
||||
}
|
||||
const bookToSync: CompleteBook = await window.electron.invoke<CompleteBook>('db:book:sync:toServer', bookToFetch);
|
||||
const bookToSync: CompleteBook = await tauri.syncBookToServer(bookToFetch) as CompleteBook;
|
||||
if (!bookToSync) {
|
||||
errorMessage(t('bookCard.syncToServerError'));
|
||||
return false;
|
||||
@@ -199,19 +200,13 @@ export default function useSyncBooks() {
|
||||
|
||||
if (!isCurrentlyOffline()) {
|
||||
if (offlineMode.isDatabaseInitialized) {
|
||||
localBooksResponse = await window.electron.invoke<SyncedBook[]>('db:books:synced');
|
||||
localBooksResponse = await tauri.getSyncedBooks() as SyncedBook[];
|
||||
|
||||
// Get lastOnlineTimestamp from localStorage (or 0 if not set)
|
||||
const lastOnlineStr: string | null = localStorage.getItem('lastOnlineTimestamp');
|
||||
const lastOnlineTimestamp: number = lastOnlineStr ? parseInt(lastOnlineStr, 10) : 0;
|
||||
|
||||
// Get local tombstones since lastOnlineTimestamp via IPC
|
||||
const localTombstones: RemovedItemRecord[] = await window.electron.invoke<RemovedItemRecord[]>(
|
||||
'db:tombstones:since',
|
||||
lastOnlineTimestamp
|
||||
);
|
||||
const localTombstones: RemovedItemRecord[] = await tauri.getTombstonesSince(lastOnlineTimestamp) as RemovedItemRecord[];
|
||||
|
||||
// Call server with POST and tombstones
|
||||
const serverResponse: SyncedBooksResponse = await System.authPostToServer<SyncedBooksResponse>(
|
||||
'books/synced',
|
||||
{ lastOnlineTimestamp, tombstones: localTombstones },
|
||||
@@ -221,8 +216,7 @@ export default function useSyncBooks() {
|
||||
|
||||
serverBooksResponse = serverResponse.books;
|
||||
|
||||
// Apply server tombstones locally via IPC
|
||||
await window.electron.invoke<void>('db:tombstones:apply:books', serverResponse.tombstones);
|
||||
await tauri.applyBookTombstones(serverResponse.tombstones as tauri.TombstoneRecord[]);
|
||||
} else {
|
||||
// No local DB but online - just get server books without tombstones
|
||||
const serverResponse: SyncedBooksResponse = await System.authPostToServer<SyncedBooksResponse>(
|
||||
@@ -235,7 +229,7 @@ export default function useSyncBooks() {
|
||||
}
|
||||
} else {
|
||||
if (offlineMode.isDatabaseInitialized) {
|
||||
localBooksResponse = await window.electron.invoke<SyncedBook[]>('db:books:synced');
|
||||
localBooksResponse = await tauri.getSyncedBooks() as SyncedBook[];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user