fix: QA — add missing translation namespaces + fix sharedWithMe dead path
- Add 'signatures' translation namespace (27 keys) to locales - Add 'settings.tabs.signatures' translation key - Add 'settings.importer' translation namespace (18 keys) - Fix sharedWithMe never populated in sharing-store — now discovers incoming mail/calendar/addressBook shares by checking isShared+myRights
This commit is contained in:
@@ -894,6 +894,7 @@
|
|||||||
"about_data": "About & Data",
|
"about_data": "About & Data",
|
||||||
"import": "Import",
|
"import": "Import",
|
||||||
"sharing": "Sharing",
|
"sharing": "Sharing",
|
||||||
|
"signatures": "Signatures",
|
||||||
"debug": "Debug"
|
"debug": "Debug"
|
||||||
},
|
},
|
||||||
"tab_groups": {
|
"tab_groups": {
|
||||||
@@ -2010,6 +2011,26 @@
|
|||||||
"preview": {
|
"preview": {
|
||||||
"label": "Preview"
|
"label": "Preview"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"importer": {
|
||||||
|
"title": "Import Data",
|
||||||
|
"description": "Import emails from .eml files or .zip/.tgz archives.",
|
||||||
|
"file_label": "Select Files",
|
||||||
|
"file_placeholder": "Choose .eml, .zip, or .tgz files",
|
||||||
|
"folder_label": "Import into Folder",
|
||||||
|
"conflict_label": "If Email Already Exists",
|
||||||
|
"start_import": "Start Import",
|
||||||
|
"importing": "Importing...",
|
||||||
|
"cancel": "Cancel",
|
||||||
|
"success": "Import successful",
|
||||||
|
"fail": "Import failed",
|
||||||
|
"import_complete": "Import Complete",
|
||||||
|
"summary_imported": "{count} imported",
|
||||||
|
"summary_skipped": "{count} skipped",
|
||||||
|
"summary_failed": "{count} failed",
|
||||||
|
"error_details": "Error Details",
|
||||||
|
"import_more": "Import More Files",
|
||||||
|
"progress_title": "Import Progress"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
@@ -3363,5 +3384,45 @@
|
|||||||
"install": "Install",
|
"install": "Install",
|
||||||
"dont_remind": "Don't remind me again",
|
"dont_remind": "Don't remind me again",
|
||||||
"dismiss_aria": "Dismiss install prompt"
|
"dismiss_aria": "Dismiss install prompt"
|
||||||
|
},
|
||||||
|
"signatures": {
|
||||||
|
"title": "Signatures",
|
||||||
|
"description": "Create and manage email signatures. Assign default signatures for new messages and replies.",
|
||||||
|
"no_signature": "No signatures created yet.",
|
||||||
|
"add_signature": "Add Signature",
|
||||||
|
"duplicate": "Duplicate",
|
||||||
|
"your_signatures": "Your Signatures",
|
||||||
|
"delete_title": "Delete Signature",
|
||||||
|
"delete_message": "Are you sure you want to delete \"{name}\"?",
|
||||||
|
"edit_signature": "Edit Signature",
|
||||||
|
"new_signature": "New Signature",
|
||||||
|
"name_required": "Signature name is required",
|
||||||
|
"name_label": "Signature Name",
|
||||||
|
"name_placeholder": "e.g., Work, Personal, Legal",
|
||||||
|
"editor_label": "Signature Content",
|
||||||
|
"show_preview": "Preview",
|
||||||
|
"show_editor": "Editor",
|
||||||
|
"html_preview_label": "HTML Preview",
|
||||||
|
"plain_text_preview_label": "Plain Text Preview",
|
||||||
|
"default_signature": "Default for new messages",
|
||||||
|
"reply_signature": "Default for replies",
|
||||||
|
"no_signatures_available": "No signatures available",
|
||||||
|
"per_identity_signatures": "Per-Identity Signature Overrides",
|
||||||
|
"per_identity_description": "Assign different signatures to specific identities.",
|
||||||
|
"select_signature": "Select signature",
|
||||||
|
"cancel": "Cancel",
|
||||||
|
"save": "Save Signature",
|
||||||
|
"toolbar": {
|
||||||
|
"bold": "Bold",
|
||||||
|
"italic": "Italic",
|
||||||
|
"underline": "Underline",
|
||||||
|
"strikethrough": "Strikethrough",
|
||||||
|
"link": "Link",
|
||||||
|
"bullet_list": "Bullet List",
|
||||||
|
"ordered_list": "Ordered List",
|
||||||
|
"text_color": "Text Color",
|
||||||
|
"alignment": "Alignment",
|
||||||
|
"font_size": "Font Size"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -258,6 +258,21 @@ export const useSharingStore = create<SharingState>((set, get) => ({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (mb.isShared && mb.myRights) {
|
||||||
|
withMe.push({
|
||||||
|
id: `mb-withme-${mb.id}`,
|
||||||
|
resourceId: mb.id,
|
||||||
|
resourceName: mb.name,
|
||||||
|
resourceKind: "mailbox",
|
||||||
|
principalId: mb.accountId || "unknown",
|
||||||
|
principalName: mb.accountName || "Unknown",
|
||||||
|
principalEmail: null,
|
||||||
|
role: roleLabel("mailbox", detectMailboxPreset(mb.myRights)),
|
||||||
|
direction: "withMe",
|
||||||
|
pending: false,
|
||||||
|
accountId: mb.accountId,
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
/* mailboxes may not be available */
|
/* mailboxes may not be available */
|
||||||
@@ -286,6 +301,21 @@ export const useSharingStore = create<SharingState>((set, get) => ({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (cal.isShared && cal.myRights) {
|
||||||
|
withMe.push({
|
||||||
|
id: `cal-withme-${cal.id}`,
|
||||||
|
resourceId: cal.id,
|
||||||
|
resourceName: cal.name,
|
||||||
|
resourceKind: "calendar",
|
||||||
|
principalId: cal.accountId || "unknown",
|
||||||
|
principalName: cal.accountName || "Unknown",
|
||||||
|
principalEmail: null,
|
||||||
|
role: roleLabel("calendar", detectCalendarPreset(cal.myRights)),
|
||||||
|
direction: "withMe",
|
||||||
|
pending: false,
|
||||||
|
accountId: cal.accountId,
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
@@ -318,6 +348,21 @@ export const useSharingStore = create<SharingState>((set, get) => ({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (book.isShared && book.myRights) {
|
||||||
|
withMe.push({
|
||||||
|
id: `ab-withme-${book.id}`,
|
||||||
|
resourceId: book.id,
|
||||||
|
resourceName: book.name,
|
||||||
|
resourceKind: "addressBook",
|
||||||
|
principalId: book.accountId || "unknown",
|
||||||
|
principalName: book.accountName || "Unknown",
|
||||||
|
principalEmail: null,
|
||||||
|
role: roleLabel("addressBook", detectAddressBookPreset(book.myRights)),
|
||||||
|
direction: "withMe",
|
||||||
|
pending: false,
|
||||||
|
accountId: book.accountId,
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
|
|||||||
Reference in New Issue
Block a user