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:
@@ -7,6 +7,7 @@ import OfflineContext from '@/context/OfflineContext';
|
||||
import { SeriesSyncContext } from '@/context/SeriesSyncContext';
|
||||
import { SeriesSyncCompare, SyncedSeries } from '@/lib/models/SyncedSeries';
|
||||
import { useTranslations } from 'next-intl';
|
||||
import * as tauri from '@/lib/tauri';
|
||||
|
||||
interface RemovedItemRecord {
|
||||
removal_id: string;
|
||||
@@ -72,7 +73,7 @@ export default function useSyncSeries() {
|
||||
if (isCurrentlyOffline()) return false;
|
||||
|
||||
try {
|
||||
const seriesToSync: CompleteSeries = await window.electron.invoke<CompleteSeries>('db:series:uploadToServer', seriesId);
|
||||
const seriesToSync: CompleteSeries = await tauri.uploadSeriesToServer(seriesId) as CompleteSeries;
|
||||
if (!seriesToSync) {
|
||||
errorMessage(t('seriesCard.uploadError'));
|
||||
return false;
|
||||
@@ -130,7 +131,7 @@ export default function useSyncSeries() {
|
||||
return false;
|
||||
}
|
||||
|
||||
const syncStatus: boolean = await window.electron.invoke<boolean>('db:series:syncSave', response);
|
||||
const syncStatus: boolean = await tauri.syncSaveSeries(response);
|
||||
if (!syncStatus) {
|
||||
errorMessage(t('seriesCard.downloadError'));
|
||||
return false;
|
||||
@@ -188,7 +189,7 @@ export default function useSyncSeries() {
|
||||
return false;
|
||||
}
|
||||
|
||||
const syncStatus: boolean = await window.electron.invoke<boolean>('db:series:sync:toClient', response);
|
||||
const syncStatus: boolean = await tauri.syncSeriesToClient(response);
|
||||
if (!syncStatus) {
|
||||
errorMessage(t('seriesCard.syncFromServerError'));
|
||||
return false;
|
||||
@@ -230,10 +231,7 @@ export default function useSyncSeries() {
|
||||
return true;
|
||||
}
|
||||
|
||||
const seriesToSync: CompleteSeries = await window.electron.invoke<CompleteSeries>(
|
||||
'db:series:sync:toServer',
|
||||
seriesToFetch
|
||||
);
|
||||
const seriesToSync: CompleteSeries = await tauri.syncSeriesToServer(seriesToFetch) as CompleteSeries;
|
||||
if (!seriesToSync) {
|
||||
errorMessage(t('seriesCard.syncToServerError'));
|
||||
return false;
|
||||
@@ -288,19 +286,13 @@ export default function useSyncSeries() {
|
||||
|
||||
if (!isCurrentlyOffline()) {
|
||||
if (offlineMode.isDatabaseInitialized) {
|
||||
localSeriesResponse = await window.electron.invoke<SyncedSeries[]>('db:series:synced');
|
||||
localSeriesResponse = await tauri.getSyncedSeries() as SyncedSeries[];
|
||||
|
||||
// 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: SyncedSeriesResponse = await System.authPostToServer<SyncedSeriesResponse>(
|
||||
'series/synced',
|
||||
{ lastOnlineTimestamp, tombstones: localTombstones },
|
||||
@@ -310,8 +302,7 @@ export default function useSyncSeries() {
|
||||
|
||||
serverSeriesResponse = serverResponse.series;
|
||||
|
||||
// Apply server tombstones locally via IPC
|
||||
await window.electron.invoke<void>('db:tombstones:apply:series', serverResponse.tombstones);
|
||||
await tauri.applySeriesTombstones(serverResponse.tombstones as tauri.TombstoneRecord[]);
|
||||
} else {
|
||||
// No local DB but online - just get server series without tombstones
|
||||
const serverResponse: SyncedSeriesResponse = await System.authPostToServer<SyncedSeriesResponse>(
|
||||
@@ -324,7 +315,7 @@ export default function useSyncSeries() {
|
||||
}
|
||||
} else {
|
||||
if (offlineMode.isDatabaseInitialized) {
|
||||
localSeriesResponse = await window.electron.invoke<SyncedSeries[]>('db:series:synced');
|
||||
localSeriesResponse = await tauri.getSyncedSeries() as SyncedSeries[];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user