Add terms of use translations, sync detection, and refactor book components

- Introduced new translations for terms of use in French and English locales.
- Added sync status detection logic for books in `BookList` and `BookCard` components.
- Refactored `BookCard` to handle additional props and improve layout flexibility.
- Enhanced `TermsOfUse` component with complete localization support and refuse functionality.
- Updated data decryption logic in Rust services to handle optional fields and additional metadata consistently.
- Improved offline/online synchronization workflows with extended context properties.
This commit is contained in:
natreex
2026-03-23 11:56:35 -04:00
parent 64ed90d993
commit a114592ac9
23 changed files with 588 additions and 438 deletions

View File

@@ -67,14 +67,14 @@ export default function SyncBook({bookId, status}: SyncBookProps) {
return (
<div className="flex items-center gap-2">
{currentStatus === 'synced' && (
<Cloud className="w-4 h-4 text-gray-light" title={t("bookCard.synced")}/>
<IconButton icon={Cloud} variant="ghost" tooltip={t("bookCard.synced")} disabled/>
)}
{currentStatus === 'local-only' && (
<IconButton
icon={CloudUpload}
variant={isOffline ? 'muted' : 'primary'}
size="sm"
variant={isOffline ? 'ghost' : 'primary'}
size="md"
onClick={upload}
disabled={isOffline}
tooltip={t("bookCard.localOnly")}
@@ -83,8 +83,8 @@ export default function SyncBook({bookId, status}: SyncBookProps) {
{currentStatus === 'server-only' && (
<IconButton
icon={CloudDownload}
variant={isOffline ? 'muted' : 'primary'}
size="sm"
variant={isOffline ? 'ghost' : 'primary'}
size="md"
onClick={download}
disabled={isOffline}
tooltip={t("bookCard.serverOnly")}
@@ -93,8 +93,8 @@ export default function SyncBook({bookId, status}: SyncBookProps) {
{currentStatus === 'to-sync-from-server' && (
<IconButton
icon={CloudDownload}
variant={isOffline ? 'muted' : 'primary'}
size="sm"
variant={isOffline ? 'ghost' : 'primary'}
size="md"
onClick={syncFromServer}
disabled={isOffline}
tooltip={t("bookCard.toSyncFromServer")}
@@ -103,8 +103,8 @@ export default function SyncBook({bookId, status}: SyncBookProps) {
{currentStatus === 'to-sync-to-server' && (
<IconButton
icon={CloudUpload}
variant={isOffline ? 'muted' : 'primary'}
size="sm"
variant={isOffline ? 'ghost' : 'primary'}
size="md"
onClick={syncToServer}
disabled={isOffline}
tooltip={t("bookCard.toSyncToServer")}