Add error handling, enhance syncing, and refactor deletion logic
- Introduce new error messages for syncing and book deletion in `en.json`. - Update `DeleteBook` to support local-only deletion and synced book management. - Refine offline/online behavior with `deleteLocalToo` checkbox and update related state handling. - Extend repository and IPC methods to handle optional IDs for updates. - Add `SyncQueueContext` for queueing offline changes and improving synchronization workflows. - Enhance refined text generation logic in `DraftCompanion` and `GhostWriter` components. - Replace PUT with PATCH for world updates to align with API expectations. - Streamline `AlertBox` by integrating dynamic translation keys for deletion prompts.
This commit is contained in:
@@ -151,7 +151,12 @@
|
||||
"serverOnly": "Server only",
|
||||
"toSyncFromServer": "Download from server",
|
||||
"toSyncToServer": "Upload to server",
|
||||
"sync": "Sync"
|
||||
"sync": "Sync",
|
||||
"uploadError": "Error uploading book.",
|
||||
"downloadError": "Error downloading book.",
|
||||
"syncFromServerError": "Error syncing from server.",
|
||||
"syncToServerError": "Error syncing to server.",
|
||||
"refreshError": "Error refreshing books."
|
||||
},
|
||||
"scribeTopBar": {
|
||||
"logoAlt": "Logo",
|
||||
@@ -873,7 +878,11 @@
|
||||
"lastChapterError": "Error retrieving last chapter",
|
||||
"localDataError": "Unable to load local data",
|
||||
"encryptionKeyError": "Encryption key not found",
|
||||
"offlineModeError": "Error initializing offline mode"
|
||||
"offlineModeError": "Error initializing offline mode",
|
||||
"offlineInitError": "Error initializing offline mode",
|
||||
"syncError": "Error syncing data",
|
||||
"dbInitError": "Error initializing local database",
|
||||
"offlineError": "Error checking offline mode"
|
||||
}
|
||||
},
|
||||
"shortStoryGenerator": {
|
||||
@@ -975,5 +984,14 @@
|
||||
"setupFailed": "Error configuring PIN"
|
||||
}
|
||||
}
|
||||
},
|
||||
"deleteBook": {
|
||||
"title": "Delete book",
|
||||
"message": "You are about to permanently delete your book.",
|
||||
"confirm": "Delete",
|
||||
"cancel": "Cancel",
|
||||
"deleteLocalToo": "Also delete local version",
|
||||
"deleteLocalWarning": "Warning: This action will delete the book from the server AND your device. This action is irreversible.",
|
||||
"errorUnknown": "An unknown error occurred while deleting the book."
|
||||
}
|
||||
}
|
||||
@@ -151,7 +151,12 @@
|
||||
"serverOnly": "Sur le serveur uniquement",
|
||||
"toSyncFromServer": "Télécharger depuis le serveur",
|
||||
"toSyncToServer": "Envoyer vers le serveur",
|
||||
"sync": "Synchroniser"
|
||||
"sync": "Synchroniser",
|
||||
"uploadError": "Erreur lors du téléversement du livre.",
|
||||
"downloadError": "Erreur lors du téléchargement du livre.",
|
||||
"syncFromServerError": "Erreur lors de la synchronisation depuis le serveur.",
|
||||
"syncToServerError": "Erreur lors de la synchronisation vers le serveur.",
|
||||
"refreshError": "Erreur lors du rafraîchissement des livres."
|
||||
},
|
||||
"scribeTopBar": {
|
||||
"logoAlt": "Logo",
|
||||
@@ -874,7 +879,11 @@
|
||||
"lastChapterError": "Erreur lors de la récupération du dernier chapitre",
|
||||
"localDataError": "Impossible de charger les données locales",
|
||||
"encryptionKeyError": "Clé de chiffrement non trouvée",
|
||||
"offlineModeError": "Erreur lors de l'initialisation du mode hors ligne"
|
||||
"offlineModeError": "Erreur lors de l'initialisation du mode hors ligne",
|
||||
"offlineInitError": "Erreur lors de l'initialisation du mode hors ligne",
|
||||
"syncError": "Erreur lors de la synchronisation des données",
|
||||
"dbInitError": "Erreur lors de l'initialisation de la base de données locale",
|
||||
"offlineError": "Erreur lors de la vérification du mode hors ligne"
|
||||
}
|
||||
},
|
||||
"shortStoryGenerator": {
|
||||
@@ -976,5 +985,14 @@
|
||||
"setupFailed": "Erreur lors de la configuration du PIN"
|
||||
}
|
||||
}
|
||||
},
|
||||
"deleteBook": {
|
||||
"title": "Suppression du livre",
|
||||
"message": "Vous êtes sur le point de supprimer votre livre définitivement.",
|
||||
"confirm": "Supprimer",
|
||||
"cancel": "Annuler",
|
||||
"deleteLocalToo": "Supprimer également la version locale",
|
||||
"deleteLocalWarning": "Attention : Cette action supprimera le livre du serveur ET de votre appareil. Cette action est irréversible.",
|
||||
"errorUnknown": "Une erreur inconnue est survenue lors de la suppression du livre."
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,5 @@
|
||||
import axios, {AxiosResponse} from "axios";
|
||||
import {configs} from "@/lib/configs";
|
||||
import * as electron from "electron";
|
||||
import * as os from "node:os";
|
||||
|
||||
export default class System{
|
||||
static verifyInput(input: string): boolean {
|
||||
@@ -36,7 +34,7 @@ export default class System{
|
||||
},
|
||||
params: {
|
||||
lang: lang,
|
||||
plateforme: os.platform(),
|
||||
plateforme: window.electron.platform,
|
||||
...params
|
||||
},
|
||||
url: configs.apiUrl + url,
|
||||
@@ -77,7 +75,7 @@ export default class System{
|
||||
},
|
||||
params: {
|
||||
lang: lang,
|
||||
plateforme: os.platform(),
|
||||
plateforme: window.electron.platform,
|
||||
},
|
||||
url: configs.apiUrl + url,
|
||||
data: data
|
||||
@@ -105,7 +103,7 @@ export default class System{
|
||||
},
|
||||
params: {
|
||||
lang: lang,
|
||||
plateforme: os.platform(),
|
||||
plateforme: window.electron.platform,
|
||||
},
|
||||
url: configs.apiUrl + url,
|
||||
data: data
|
||||
@@ -133,7 +131,7 @@ export default class System{
|
||||
url: configs.apiUrl + url,
|
||||
params: {
|
||||
lang: lang,
|
||||
plateforme: os.platform(),
|
||||
plateforme: window.electron.platform,
|
||||
},
|
||||
data: data
|
||||
})
|
||||
@@ -161,7 +159,7 @@ export default class System{
|
||||
url: configs.apiUrl + url,
|
||||
params: {
|
||||
lang: lang,
|
||||
plateforme: os.platform(),
|
||||
plateforme: window.electron.platform,
|
||||
},
|
||||
data: data
|
||||
})
|
||||
@@ -220,7 +218,7 @@ export default class System{
|
||||
url: configs.apiUrl + url,
|
||||
params: {
|
||||
lang: lang,
|
||||
plateforme: os.platform(),
|
||||
plateforme: window.electron.platform,
|
||||
},
|
||||
data: data
|
||||
})
|
||||
|
||||
@@ -72,8 +72,7 @@ export default class User {
|
||||
|
||||
static guideTourDone(guide: GuideTour[], tour: string): boolean {
|
||||
if (!tour) return false;
|
||||
|
||||
// Vérifier d'abord dans le guide du serveur
|
||||
|
||||
if (guide && guide.find((guide: GuideTour): boolean => guide[tour]) !== undefined) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user