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:
@@ -23,6 +23,7 @@ import {SyncedBook} from '@/lib/models/SyncedBook';
|
||||
import {SeriesContext, SeriesContextProps} from '@/context/SeriesContext';
|
||||
import {SeriesSyncContext, SeriesSyncContextProps} from '@/context/SeriesSyncContext';
|
||||
import {SyncedSeries} from '@/lib/models/SyncedSeries';
|
||||
import * as tauri from '@/lib/tauri';
|
||||
|
||||
export interface UseSpellsConfig {
|
||||
entityType: 'book' | 'series';
|
||||
@@ -113,10 +114,7 @@ export function useSpells(config: UseSpellsConfig): UseSpellsReturn {
|
||||
let response: SeriesSpellListResponse;
|
||||
// Dual logic: offline ou livre local → IPC, sinon serveur
|
||||
if (isCurrentlyOffline() || book?.localBook) {
|
||||
response = await window.electron.invoke<SeriesSpellListResponse>(
|
||||
'db:series:spell:list',
|
||||
{seriesId: bookSeriesId}
|
||||
);
|
||||
response = await tauri.getSeriesSpellList(bookSeriesId) as SeriesSpellListResponse;
|
||||
} else {
|
||||
response = await System.authGetQueryToServer<SeriesSpellListResponse>(
|
||||
'series/spell/list',
|
||||
@@ -142,10 +140,7 @@ export function useSpells(config: UseSpellsConfig): UseSpellsReturn {
|
||||
// Series mode - dual logic
|
||||
let response: SeriesSpellListResponse;
|
||||
if (isCurrentlyOffline() || localSeries) {
|
||||
response = await window.electron.invoke<SeriesSpellListResponse>(
|
||||
'db:series:spell:list',
|
||||
{seriesId: entityId}
|
||||
);
|
||||
response = await tauri.getSeriesSpellList(entityId) as SeriesSpellListResponse;
|
||||
} else {
|
||||
response = await System.authGetQueryToServer<SeriesSpellListResponse>(
|
||||
'series/spell/list',
|
||||
@@ -174,9 +169,9 @@ export function useSpells(config: UseSpellsConfig): UseSpellsReturn {
|
||||
} else {
|
||||
let response: SpellListResponse;
|
||||
if (isCurrentlyOffline()) {
|
||||
response = await window.electron.invoke<SpellListResponse>('db:spell:list', {bookid: entityId});
|
||||
response = await tauri.getSpellList(entityId, true) as SpellListResponse;
|
||||
} else if (book?.localBook) {
|
||||
response = await window.electron.invoke<SpellListResponse>('db:spell:list', {bookid: entityId});
|
||||
response = await tauri.getSpellList(entityId, true) as SpellListResponse;
|
||||
} else {
|
||||
response = await System.authGetQueryToServer<SpellListResponse>(
|
||||
'spell/list',
|
||||
@@ -242,10 +237,7 @@ export function useSpells(config: UseSpellsConfig): UseSpellsReturn {
|
||||
// Series mode - dual logic
|
||||
let response: SeriesSpellDetailResponse;
|
||||
if (isCurrentlyOffline() || localSeries) {
|
||||
response = await window.electron.invoke<SeriesSpellDetailResponse>(
|
||||
'db:series:spell:detail',
|
||||
{spellId: spell.id}
|
||||
);
|
||||
response = await tauri.getSeriesSpellDetail(spell.id) as SeriesSpellDetailResponse;
|
||||
} else {
|
||||
response = await System.authGetQueryToServer<SeriesSpellDetailResponse>(
|
||||
'series/spell/detail',
|
||||
@@ -270,9 +262,9 @@ export function useSpells(config: UseSpellsConfig): UseSpellsReturn {
|
||||
} else {
|
||||
let response: SpellProps;
|
||||
if (isCurrentlyOffline()) {
|
||||
response = await window.electron.invoke<SpellProps>('db:spell:detail', {spellid: spell.id});
|
||||
response = await tauri.getSpellDetail(spell.id) as SpellProps;
|
||||
} else if (book?.localBook) {
|
||||
response = await window.electron.invoke<SpellProps>('db:spell:detail', {spellid: spell.id});
|
||||
response = await tauri.getSpellDetail(spell.id) as SpellProps;
|
||||
} else {
|
||||
response = await System.authGetQueryToServer<SpellProps>(
|
||||
'spell/detail',
|
||||
@@ -298,10 +290,7 @@ export function useSpells(config: UseSpellsConfig): UseSpellsReturn {
|
||||
if (response.seriesSpellId) {
|
||||
let seriesSpellResponse: SeriesSpellDetailResponse;
|
||||
if (isCurrentlyOffline() || book?.localBook) {
|
||||
seriesSpellResponse = await window.electron.invoke<SeriesSpellDetailResponse>(
|
||||
'db:series:spell:detail',
|
||||
{spellId: response.seriesSpellId}
|
||||
);
|
||||
seriesSpellResponse = await tauri.getSeriesSpellDetail(response.seriesSpellId) as SeriesSpellDetailResponse;
|
||||
} else {
|
||||
seriesSpellResponse = await System.authGetQueryToServer<SeriesSpellDetailResponse>(
|
||||
'series/spell/detail',
|
||||
@@ -353,11 +342,11 @@ export function useSpells(config: UseSpellsConfig): UseSpellsReturn {
|
||||
};
|
||||
let response: boolean;
|
||||
if (isCurrentlyOffline() || book?.localBook) {
|
||||
response = await window.electron.invoke<boolean>('db:book:tool:update', requestData);
|
||||
response = await tauri.updateBookToolSetting(requestData.bookId, requestData.toolName, requestData.enabled);
|
||||
} else {
|
||||
response = await System.authPatchToServer<boolean>('book/tool-setting', requestData, userToken, lang);
|
||||
if (localSyncedBooks.find((sb: SyncedBook): boolean => sb.id === book?.bookId)) {
|
||||
addToQueue('db:book:tool:update', requestData);
|
||||
addToQueue('update_book_tool_setting', {data: requestData});
|
||||
}
|
||||
}
|
||||
if (response && setBook && book) {
|
||||
@@ -410,11 +399,11 @@ export function useSpells(config: UseSpellsConfig): UseSpellsReturn {
|
||||
notes: spell.notes,
|
||||
};
|
||||
if (isCurrentlyOffline() || localSeries) {
|
||||
newSpellId = await window.electron.invoke<string>('db:series:spell:add', data);
|
||||
newSpellId = await tauri.addSeriesSpell(data);
|
||||
} else {
|
||||
newSpellId = await System.authPostToServer<string>('series/spell/add', data, userToken, lang);
|
||||
if (localSyncedSeries.find((s: SyncedSeries): boolean => s.id === entityId)) {
|
||||
addToQueue('db:series:spell:add', {...data, id: newSpellId});
|
||||
addToQueue('add_series_spell', {data: {...data, id: newSpellId}});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -432,11 +421,11 @@ export function useSpells(config: UseSpellsConfig): UseSpellsReturn {
|
||||
}
|
||||
};
|
||||
if (isCurrentlyOffline() || book?.localBook) {
|
||||
newSpellId = await window.electron.invoke<string>('db:spell:create', data);
|
||||
newSpellId = await tauri.createSpell(data.bookId, data.spell);
|
||||
} else {
|
||||
newSpellId = await System.authPostToServer<string>('spell/add', data, userToken, lang);
|
||||
if (localSyncedBooks.find((sb: SyncedBook): boolean => sb.id === entityId)) {
|
||||
addToQueue('db:spell:create', {...data, id: newSpellId});
|
||||
addToQueue('create_spell', {data: {...data, id: newSpellId}});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -492,20 +481,20 @@ export function useSpells(config: UseSpellsConfig): UseSpellsReturn {
|
||||
if (isSeriesMode) {
|
||||
// Series mode - dual logic
|
||||
if (isCurrentlyOffline() || localSeries) {
|
||||
success = await window.electron.invoke<boolean>('db:series:spell:update', data);
|
||||
success = await tauri.updateSeriesSpell(data);
|
||||
} else {
|
||||
success = await System.authPutToServer<boolean>('series/spell/update', data, userToken, lang);
|
||||
if (localSyncedSeries.find((s: SyncedSeries): boolean => s.id === entityId)) {
|
||||
addToQueue('db:series:spell:update', data);
|
||||
addToQueue('update_series_spell', {data});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (isCurrentlyOffline() || book?.localBook) {
|
||||
success = await window.electron.invoke<boolean>('db:spell:update', data);
|
||||
success = await tauri.updateSpell(data.id, data);
|
||||
} else {
|
||||
success = await System.authPutToServer<boolean>('spell/update', data, userToken, lang);
|
||||
if (localSyncedBooks.find((sb: SyncedBook): boolean => sb.id === entityId)) {
|
||||
addToQueue('db:spell:update', data);
|
||||
addToQueue('update_spell', {data});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -549,21 +538,21 @@ export function useSpells(config: UseSpellsConfig): UseSpellsReturn {
|
||||
// Series mode - dual logic
|
||||
const requestData = {spellId, deletedAt};
|
||||
if (isCurrentlyOffline() || localSeries) {
|
||||
success = await window.electron.invoke<boolean>('db:series:spell:delete', requestData);
|
||||
success = await tauri.deleteSeriesSpell(requestData.spellId, requestData.deletedAt);
|
||||
} else {
|
||||
success = await System.authDeleteToServer<boolean>('series/spell/delete', requestData, userToken, lang);
|
||||
if (localSyncedSeries.find((s: SyncedSeries): boolean => s.id === entityId)) {
|
||||
addToQueue('db:series:spell:delete', requestData);
|
||||
addToQueue('delete_series_spell', {data: requestData});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
const requestData = {spellId, bookId: entityId, deletedAt};
|
||||
if (isCurrentlyOffline() || book?.localBook) {
|
||||
success = await window.electron.invoke<boolean>('db:spell:delete', requestData);
|
||||
success = await tauri.deleteSpell(requestData.spellId, requestData.bookId, requestData.deletedAt);
|
||||
} else {
|
||||
success = await System.authDeleteToServer<boolean>('spell/delete', requestData, userToken, lang);
|
||||
if (localSyncedBooks.find((sb: SyncedBook): boolean => sb.id === entityId)) {
|
||||
addToQueue('db:spell:delete', requestData);
|
||||
addToQueue('delete_spell', {data: requestData});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -605,7 +594,7 @@ export function useSpells(config: UseSpellsConfig): UseSpellsReturn {
|
||||
let seriesSpellId: string;
|
||||
if (isCurrentlyOffline() || book?.localBook) {
|
||||
// Mode offline ou livre local → IPC
|
||||
seriesSpellId = await window.electron.invoke<string>('db:series:spell:add', seriesSpellData);
|
||||
seriesSpellId = await tauri.addSeriesSpell(seriesSpellData);
|
||||
} else {
|
||||
// Mode online → Serveur
|
||||
seriesSpellId = await System.authPostToServer<string>(
|
||||
@@ -616,7 +605,7 @@ export function useSpells(config: UseSpellsConfig): UseSpellsReturn {
|
||||
);
|
||||
// Si la série a une copie locale → addToQueue
|
||||
if (localSyncedSeries.find((s: SyncedSeries): boolean => s.id === bookSeriesId)) {
|
||||
addToQueue('db:series:spell:add', {...seriesSpellData, id: seriesSpellId});
|
||||
addToQueue('add_series_spell', {data: {...seriesSpellData, id: seriesSpellId}});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -636,14 +625,14 @@ export function useSpells(config: UseSpellsConfig): UseSpellsReturn {
|
||||
|
||||
let updateSuccess: boolean;
|
||||
if (isCurrentlyOffline() || book?.localBook) {
|
||||
// Mode offline ou livre local → IPC
|
||||
updateSuccess = await window.electron.invoke<boolean>('db:spell:update', updateData);
|
||||
// Mode offline ou livre local → Tauri
|
||||
updateSuccess = await tauri.updateSpell(updateData.id, updateData);
|
||||
} else {
|
||||
// Mode online → Serveur
|
||||
updateSuccess = await System.authPutToServer<boolean>('spell/update', updateData, userToken, lang);
|
||||
// Si le livre a une copie locale → addToQueue
|
||||
if (localSyncedBooks.find((sb: SyncedBook): boolean => sb.id === entityId)) {
|
||||
addToQueue('db:spell:update', updateData);
|
||||
addToQueue('update_spell', {data: updateData});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -680,11 +669,8 @@ export function useSpells(config: UseSpellsConfig): UseSpellsReturn {
|
||||
// 1. Récupérer les détails du sort de la série
|
||||
let seriesSpellDetail: SeriesSpellDetailResponse;
|
||||
if (isCurrentlyOffline() || book?.localBook) {
|
||||
// Mode offline → IPC pour récupérer les détails du sort de la série locale
|
||||
seriesSpellDetail = await window.electron.invoke<SeriesSpellDetailResponse>(
|
||||
'db:series:spell:detail',
|
||||
{spellId: seriesSpellId}
|
||||
);
|
||||
// Mode offline → Tauri pour récupérer les détails du sort de la série locale
|
||||
seriesSpellDetail = await tauri.getSeriesSpellDetail(seriesSpellId) as SeriesSpellDetailResponse;
|
||||
} else {
|
||||
// Mode online → Serveur
|
||||
seriesSpellDetail = await System.authGetQueryToServer<SeriesSpellDetailResponse>(
|
||||
@@ -715,14 +701,14 @@ export function useSpells(config: UseSpellsConfig): UseSpellsReturn {
|
||||
|
||||
let createdSpellId: string;
|
||||
if (isCurrentlyOffline() || book?.localBook) {
|
||||
// Mode offline ou livre local → IPC
|
||||
createdSpellId = await window.electron.invoke<string>('db:spell:create', spellData);
|
||||
// Mode offline ou livre local → Tauri
|
||||
createdSpellId = await tauri.createSpell(spellData.bookId, spellData.spell);
|
||||
} else {
|
||||
// Mode online → Serveur
|
||||
createdSpellId = await System.authPostToServer<string>('spell/add', spellData, userToken, lang);
|
||||
// Si le livre a une copie locale → addToQueue
|
||||
if (localSyncedBooks.find((sb: SyncedBook): boolean => sb.id === entityId)) {
|
||||
addToQueue('db:spell:create', {...spellData, id: createdSpellId});
|
||||
addToQueue('create_spell', {data: {...spellData, id: createdSpellId}});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -758,7 +744,7 @@ export function useSpells(config: UseSpellsConfig): UseSpellsReturn {
|
||||
};
|
||||
let tagId: string;
|
||||
if (isCurrentlyOffline() || localSeries) {
|
||||
tagId = await window.electron.invoke<string>('db:series:spell:tag:add', addData);
|
||||
tagId = await tauri.addSeriesSpellTag(addData);
|
||||
} else {
|
||||
tagId = await System.authPostToServer<string>(
|
||||
'series/spell/tag/add',
|
||||
@@ -767,7 +753,7 @@ export function useSpells(config: UseSpellsConfig): UseSpellsReturn {
|
||||
lang
|
||||
);
|
||||
if (localSyncedSeries.find((s: SyncedSeries): boolean => s.id === entityId)) {
|
||||
addToQueue('db:series:spell:tag:add', {...addData, id: tagId});
|
||||
addToQueue('add_series_spell_tag', {data: {...addData, id: tagId}});
|
||||
}
|
||||
}
|
||||
if (tagId) {
|
||||
@@ -786,11 +772,11 @@ export function useSpells(config: UseSpellsConfig): UseSpellsReturn {
|
||||
};
|
||||
let newTag: SpellTagProps;
|
||||
if (isCurrentlyOffline() || book?.localBook) {
|
||||
newTag = await window.electron.invoke<SpellTagProps>('db:spell:tag:create', requestData);
|
||||
newTag = await tauri.createSpellTag(requestData.bookId, requestData.name, requestData.color) as SpellTagProps;
|
||||
} else {
|
||||
newTag = await System.authPostToServer<SpellTagProps>('spell/tag/add', requestData, userToken, lang);
|
||||
if (localSyncedBooks.find((sb: SyncedBook): boolean => sb.id === entityId)) {
|
||||
addToQueue('db:spell:tag:create', {...requestData, id: newTag?.id});
|
||||
addToQueue('create_spell_tag', {data: {...requestData, id: newTag?.id}});
|
||||
}
|
||||
}
|
||||
if (newTag && newTag.id) {
|
||||
@@ -816,20 +802,20 @@ export function useSpells(config: UseSpellsConfig): UseSpellsReturn {
|
||||
if (isSeriesMode) {
|
||||
// Series mode - dual logic
|
||||
if (isCurrentlyOffline() || localSeries) {
|
||||
success = await window.electron.invoke<boolean>('db:series:spell:tag:update', requestData);
|
||||
success = await tauri.updateSeriesSpellTag(requestData);
|
||||
} else {
|
||||
success = await System.authPutToServer<boolean>('series/spell/tag/update', requestData, userToken, lang);
|
||||
if (localSyncedSeries.find((s: SyncedSeries): boolean => s.id === entityId)) {
|
||||
addToQueue('db:series:spell:tag:update', requestData);
|
||||
addToQueue('update_series_spell_tag', {data: requestData});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (isCurrentlyOffline() || book?.localBook) {
|
||||
success = await window.electron.invoke<boolean>('db:spell:tag:update', requestData);
|
||||
success = await tauri.updateSpellTag(requestData.tagId, requestData.name, requestData.color);
|
||||
} else {
|
||||
success = await System.authPutToServer<boolean>('spell/tag/update', requestData, userToken, lang);
|
||||
if (localSyncedBooks.find((sb: SyncedBook): boolean => sb.id === entityId)) {
|
||||
addToQueue('db:spell:tag:update', requestData);
|
||||
addToQueue('update_spell_tag', {data: requestData});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -859,21 +845,21 @@ export function useSpells(config: UseSpellsConfig): UseSpellsReturn {
|
||||
// Series mode - dual logic
|
||||
const deleteData = {tagId, deletedAt};
|
||||
if (isCurrentlyOffline() || localSeries) {
|
||||
success = await window.electron.invoke<boolean>('db:series:spell:tag:delete', deleteData);
|
||||
success = await tauri.deleteSeriesSpellTag(deleteData.tagId, deleteData.deletedAt);
|
||||
} else {
|
||||
success = await System.authDeleteToServer<boolean>('series/spell/tag/delete', deleteData, userToken, lang);
|
||||
if (localSyncedSeries.find((s: SyncedSeries): boolean => s.id === entityId)) {
|
||||
addToQueue('db:series:spell:tag:delete', deleteData);
|
||||
addToQueue('delete_series_spell_tag', {data: deleteData});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
const requestData = {tagId, bookId: entityId, deletedAt};
|
||||
if (isCurrentlyOffline() || book?.localBook) {
|
||||
success = await window.electron.invoke<boolean>('db:spell:tag:delete', requestData);
|
||||
success = await tauri.deleteSpellTag(requestData.tagId, requestData.bookId, requestData.deletedAt);
|
||||
} else {
|
||||
success = await System.authDeleteToServer<boolean>('spell/tag/delete', requestData, userToken, lang);
|
||||
if (localSyncedBooks.find((sb: SyncedBook): boolean => sb.id === entityId)) {
|
||||
addToQueue('db:spell:tag:delete', requestData);
|
||||
addToQueue('delete_spell_tag', {data: requestData});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -898,10 +884,7 @@ export function useSpells(config: UseSpellsConfig): UseSpellsReturn {
|
||||
if (selectedSpell?.seriesSpellId) {
|
||||
let seriesSpellResponse: SeriesSpellDetailResponse;
|
||||
if (isCurrentlyOffline() || (isSeriesMode ? localSeries : book?.localBook)) {
|
||||
seriesSpellResponse = await window.electron.invoke<SeriesSpellDetailResponse>(
|
||||
'db:series:spell:detail',
|
||||
{spellId: selectedSpell.seriesSpellId}
|
||||
);
|
||||
seriesSpellResponse = await tauri.getSeriesSpellDetail(selectedSpell.seriesSpellId) as SeriesSpellDetailResponse;
|
||||
} else {
|
||||
seriesSpellResponse = await System.authGetQueryToServer<SeriesSpellDetailResponse>(
|
||||
'series/spell/detail',
|
||||
|
||||
Reference in New Issue
Block a user