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:
natreex
2026-03-21 09:34:13 -04:00
parent 1a15692e40
commit ee4438834c
144 changed files with 21258 additions and 876 deletions

View File

@@ -15,6 +15,7 @@ import OfflineContext, {OfflineContextType} from "@/context/OfflineContext";
import {LocalSyncQueueContext, LocalSyncQueueContextProps} from "@/context/SyncQueueContext";
import {BooksSyncContext, BooksSyncContextProps} from "@/context/BooksSyncContext";
import {SyncedBook} from "@/lib/models/SyncedBook";
import * as tauri from '@/lib/tauri';
export default function ScribeChapterComponent() {
const t = useTranslations();
@@ -79,14 +80,10 @@ export default function ScribeChapterComponent() {
async function getChapterList(): Promise<void> {
try {
let response: ChapterListProps[]|null;
if (isCurrentlyOffline()){
response = await window.electron.invoke<ChapterListProps[]>('db:book:chapters', book?.bookId)
if (isCurrentlyOffline() || book?.localBook){
response = await tauri.getChapters(book?.bookId ?? '') as ChapterListProps[];
} else {
if (book?.localBook){
response = await window.electron.invoke<ChapterListProps[]>('db:book:chapters', book?.bookId)
} else {
response = await System.authGetQueryToServer<ChapterListProps[]>(`book/chapters?id=${book?.bookId}`, userToken, lang);
}
response = await System.authGetQueryToServer<ChapterListProps[]>(`book/chapters?id=${book?.bookId}`, userToken, lang);
}
if (response) {
setChapters(response);
@@ -104,26 +101,14 @@ export default function ScribeChapterComponent() {
const version: number = chapter?.chapterContent.version ? chapter?.chapterContent.version : 2;
try {
let response: ChapterProps | null
if (isCurrentlyOffline()) {
response = await window.electron.invoke<ChapterProps>('db:chapter:whole', {
if (isCurrentlyOffline() || book?.localBook) {
response = await tauri.getWholeChapter(chapterId, version, book?.bookId ?? '');
} else {
response = await System.authGetQueryToServer<ChapterProps>(`chapter/whole`, userToken, lang, {
bookid: book?.bookId,
id: chapterId,
version: version,
})
} else {
if (book?.localBook){
response = await window.electron.invoke<ChapterProps>('db:chapter:whole', {
bookid: book?.bookId,
id: chapterId,
version: version,
})
} else {
response = await System.authGetQueryToServer<ChapterProps>(`chapter/whole`, userToken, lang, {
bookid: book?.bookId,
id: chapterId,
version: version,
});
}
});
}
if (!response) {
errorMessage(t("scribeChapterComponent.errorFetchChapter"));
@@ -148,12 +133,12 @@ export default function ScribeChapterComponent() {
title: title,
};
if (isCurrentlyOffline() || book?.localBook) {
response = await window.electron.invoke<boolean>('db:chapter:update', updateData);
response = await tauri.updateChapter(updateData.chapterId, updateData.title, updateData.chapterOrder);
} else {
response = await System.authPostToServer<boolean>('chapter/update', updateData, userToken, lang);
if (localSyncedBooks.find((syncedBook: SyncedBook): boolean => syncedBook.id === book?.bookId)) {
addToQueue('db:chapter:update', updateData);
addToQueue('update_chapter', {data: updateData});
}
}
if (!response) {
@@ -190,11 +175,7 @@ export default function ScribeChapterComponent() {
let response:boolean = false;
const deletedAt: number = System.timeStampInSeconds();
if (isCurrentlyOffline() || book?.localBook) {
response = await window.electron.invoke<boolean>('db:chapter:remove', {
chapterId: removeChapterId,
bookId: book?.bookId,
deletedAt,
});
response = await tauri.removeChapter(removeChapterId, book?.bookId ?? '', deletedAt);
} else {
response = await System.authDeleteToServer<boolean>('chapter/remove', {
chapterId: removeChapterId,
@@ -203,11 +184,7 @@ export default function ScribeChapterComponent() {
}, userToken, lang);
if (localSyncedBooks.find((syncedBook: SyncedBook): boolean => syncedBook.id === book?.bookId)) {
addToQueue('db:chapter:remove', {
chapterId: removeChapterId,
bookId: book?.bookId,
deletedAt,
});
addToQueue('remove_chapter', {data: {chapterId: removeChapterId, bookId: book?.bookId, deletedAt}});
}
}
if (!response) {
@@ -241,15 +218,16 @@ export default function ScribeChapterComponent() {
title: chapterTitle
};
if (isCurrentlyOffline() || book?.localBook){
chapterId = await window.electron.invoke<string>('db:chapter:add', addData);
chapterId = await tauri.addChapter({
bookId: addData.bookId ?? '',
title: addData.title,
chapterOrder: addData.chapterOrder,
});
} else {
chapterId = await System.authPostToServer<string>('chapter/add', addData, userToken, lang);
if (localSyncedBooks.find((syncedBook: SyncedBook): boolean => syncedBook.id === book?.bookId)) {
addToQueue('db:chapter:add', {
...addData,
chapterId,
});
addToQueue('add_chapter', {data: {...addData, chapterId}});
}
}
if (!chapterId) {