Merge pull request #220 from Coffey-Labs/fix/archive-role-message

Say the Archive folder needs the role, not the name
This commit is contained in:
Coffey Labs
2026-09-02 08:10:10 -07:00
committed by GitHub
11 changed files with 20 additions and 11 deletions
+1 -1
View File
@@ -986,7 +986,7 @@ export const catalog: Catalog = {
"New all-day event on {date}": "Neuer ganztägiger Termin am {date}", "New all-day event on {date}": "Neuer ganztägiger Termin am {date}",
"New event at {time}": "Neuer Termin um {time}", "New event at {time}": "Neuer Termin um {time}",
"New identity": "Neue Absenderidentität", "New identity": "Neue Absenderidentität",
"No Archive folder found. Create one named “Archive” first.": "Kein Archivordner gefunden. Legen Sie zuerst einen mit dem Namen „Archive“ an.", "No Archive folder is set. A folder needs the Archive role on the server; naming it “Archive” is not enough.": "Kein Archivordner festgelegt. Ein Ordner braucht auf dem Server die Rolle „Archive“; ihn so zu benennen genügt nicht.",
"No contacts yet": "Noch keine Kontakte", "No contacts yet": "Noch keine Kontakte",
"No longer shared": "Nicht mehr freigegeben", "No longer shared": "Nicht mehr freigegeben",
"No matches": "Keine Treffer", "No matches": "Keine Treffer",
+1 -1
View File
@@ -959,7 +959,7 @@ export const catalog: Catalog = {
"New all-day event on {date}": "Nuevo evento de todo el día el {date}", "New all-day event on {date}": "Nuevo evento de todo el día el {date}",
"New event at {time}": "Nuevo evento a las {time}", "New event at {time}": "Nuevo evento a las {time}",
"New identity": "Nueva identidad", "New identity": "Nueva identidad",
"No Archive folder found. Create one named “Archive” first.": "No se encontró una carpeta de archivo. Cree primero una llamada «Archive».", "No Archive folder is set. A folder needs the Archive role on the server; naming it “Archive” is not enough.": "No hay carpeta de archivo definida. Una carpeta necesita el rol «Archive» en el servidor; no basta con llamarla así.",
"No contacts yet": "Aún no hay contactos", "No contacts yet": "Aún no hay contactos",
"No longer shared": "Ya no está compartido", "No longer shared": "Ya no está compartido",
"No matches": "Sin coincidencias", "No matches": "Sin coincidencias",
+1 -1
View File
@@ -964,7 +964,7 @@ export const catalog: Catalog = {
"New all-day event on {date}": "Nouvel événement sur la journée du {date}", "New all-day event on {date}": "Nouvel événement sur la journée du {date}",
"New event at {time}": "Nouvel événement à {time}", "New event at {time}": "Nouvel événement à {time}",
"New identity": "Nouvelle identité", "New identity": "Nouvelle identité",
"No Archive folder found. Create one named “Archive” first.": "Aucun dossier darchive trouvé. Créez-en dabord un nommé « Archive ».", "No Archive folder is set. A folder needs the Archive role on the server; naming it “Archive” is not enough.": "Aucun dossier darchive défini. Un dossier doit avoir le rôle « Archive » sur le serveur ; le nommer ainsi ne suffit pas.",
"No contacts yet": "Pas encore de contacts", "No contacts yet": "Pas encore de contacts",
"No longer shared": "Nest plus partagé", "No longer shared": "Nest plus partagé",
"No matches": "Aucune correspondance", "No matches": "Aucune correspondance",
+1 -1
View File
@@ -967,7 +967,7 @@ export const catalog: Catalog = {
"New all-day event on {date}": "{date} に終日の予定を作成", "New all-day event on {date}": "{date} に終日の予定を作成",
"New event at {time}": "{time} に予定を作成", "New event at {time}": "{time} に予定を作成",
"New identity": "新しい差出人", "New identity": "新しい差出人",
"No Archive folder found. Create one named “Archive” first.": "アーカイブフォルダーが見つかりません。先に「Archive」という名前で作成してください。", "No Archive folder is set. A folder needs the Archive role on the server; naming it “Archive” is not enough.": "アーカイブフォルダーが設定されていません。サーバーでフォルダーに「Archive」ロールが必要です。名前をそうするだけでは不十分です。",
"No contacts yet": "連絡先がまだありません", "No contacts yet": "連絡先がまだありません",
"No longer shared": "共有を解除しました", "No longer shared": "共有を解除しました",
"No matches": "一致するものがありません", "No matches": "一致するものがありません",
+1 -1
View File
@@ -955,7 +955,7 @@ export const catalog: Catalog = {
"New all-day event on {date}": "Nieuwe hele dag durende afspraak op {date}", "New all-day event on {date}": "Nieuwe hele dag durende afspraak op {date}",
"New event at {time}": "Nieuwe afspraak om {time}", "New event at {time}": "Nieuwe afspraak om {time}",
"New identity": "Nieuwe afzender", "New identity": "Nieuwe afzender",
"No Archive folder found. Create one named “Archive” first.": "Geen archiefmap gevonden. Maak er eerst een met de naam Archive.", "No Archive folder is set. A folder needs the Archive role on the server; naming it “Archive” is not enough.": "Geen archiefmap ingesteld. Een map heeft op de server de rol Archive nodig; die naam geven is niet genoeg.",
"No contacts yet": "Nog geen contacten", "No contacts yet": "Nog geen contacten",
"No longer shared": "Niet langer gedeeld", "No longer shared": "Niet langer gedeeld",
"No matches": "Geen overeenkomsten", "No matches": "Geen overeenkomsten",
+1 -1
View File
@@ -962,7 +962,7 @@ export const catalog: Catalog = {
"New all-day event on {date}": "Novo evento de dia inteiro em {date}", "New all-day event on {date}": "Novo evento de dia inteiro em {date}",
"New event at {time}": "Novo evento às {time}", "New event at {time}": "Novo evento às {time}",
"New identity": "Nova identidade", "New identity": "Nova identidade",
"No Archive folder found. Create one named “Archive” first.": "Nenhuma pasta de arquivamento encontrada. Crie uma chamada “Archive” primeiro.", "No Archive folder is set. A folder needs the Archive role on the server; naming it “Archive” is not enough.": "Nenhuma pasta de arquivamento definida. Uma pasta precisa da função “Archive” no servidor; nomeá-la assim não basta.",
"No contacts yet": "Ainda não há contatos", "No contacts yet": "Ainda não há contatos",
"No longer shared": "Não está mais compartilhado", "No longer shared": "Não está mais compartilhado",
"No matches": "Nenhuma correspondência", "No matches": "Nenhuma correspondência",
+1 -1
View File
@@ -961,7 +961,7 @@ export const catalog: Catalog = {
"New all-day event on {date}": "Новое событие на весь день {date}", "New all-day event on {date}": "Новое событие на весь день {date}",
"New event at {time}": "Новое событие в {time}", "New event at {time}": "Новое событие в {time}",
"New identity": "Новый профиль отправителя", "New identity": "Новый профиль отправителя",
"No Archive folder found. Create one named “Archive” first.": "Папка архива не найдена. Сначала создайте папку с именем «Archive».", "No Archive folder is set. A folder needs the Archive role on the server; naming it “Archive” is not enough.": "Папка архива не задана. На сервере папке нужна роль «Archive»; просто назвать её так недостаточно.",
"No contacts yet": "Контактов пока нет", "No contacts yet": "Контактов пока нет",
"No longer shared": "Общий доступ прекращён", "No longer shared": "Общий доступ прекращён",
"No matches": "Совпадений нет", "No matches": "Совпадений нет",
+1 -1
View File
@@ -955,7 +955,7 @@ export const catalog: Catalog = {
"New all-day event on {date}": "Нова подія на весь день {date}", "New all-day event on {date}": "Нова подія на весь день {date}",
"New event at {time}": "Нова подія о {time}", "New event at {time}": "Нова подія о {time}",
"New identity": "Новий профіль відправника", "New identity": "Новий профіль відправника",
"No Archive folder found. Create one named “Archive” first.": "Теку архіву не знайдено. Спершу створіть теку з назвою «Archive».", "No Archive folder is set. A folder needs the Archive role on the server; naming it “Archive” is not enough.": "Теку архіву не задано. На сервері теці потрібна роль «Archive»; просто назвати її так недостатньо.",
"No contacts yet": "Контактів ще немає", "No contacts yet": "Контактів ще немає",
"No longer shared": "Спільний доступ припинено", "No longer shared": "Спільний доступ припинено",
"No matches": "Збігів немає", "No matches": "Збігів немає",
+1 -1
View File
@@ -966,7 +966,7 @@ export const catalog: Catalog = {
"New all-day event on {date}": "在 {date} 新建全天日程", "New all-day event on {date}": "在 {date} 新建全天日程",
"New event at {time}": "在 {time} 新建日程", "New event at {time}": "在 {time} 新建日程",
"New identity": "新建发件身份", "New identity": "新建发件身份",
"No Archive folder found. Create one named “Archive” first.": "未找到归档文件夹。请先创建一个名为「Archive」的文件夹。", "No Archive folder is set. A folder needs the Archive role on the server; naming it “Archive” is not enough.": "未设置归档文件夹。文件夹需要在服务器上具有「Archive」角色,仅命名为此并不够。",
"No contacts yet": "还没有联系人", "No contacts yet": "还没有联系人",
"No longer shared": "已停止共享", "No longer shared": "已停止共享",
"No matches": "没有匹配项", "No matches": "没有匹配项",
@@ -177,6 +177,15 @@ describe("archiveByDate", () => {
expect(s.created).toEqual([]); expect(s.created).toEqual([]);
expect(s.moves).toEqual([]); expect(s.moves).toEqual([]);
expect(messages()[0]).toContain("No Archive folder"); expect(messages()[0]).toContain("No Archive folder");
/*
* What it says, not just that it complains. The folder is found by its
* special-use role and by nothing else, so telling someone to create a
* folder *named* "Archive" sent them round a loop that could not end --
* naming a folder does not give it the role, and ihasmail cannot assign
* one. Issue #217.
*/
expect(messages()[0]).toContain("role");
expect(messages()[0]).not.toMatch(/Create one named/);
}); });
it("has nothing to do with an empty selection", async () => { it("has nothing to do with an empty selection", async () => {
+2 -2
View File
@@ -610,7 +610,7 @@ export const useMail = create<MailState>((set, get) => ({
async archive(ids) { async archive(ids) {
const archiveId = get().roleId("archive") ?? get().roleId("all"); const archiveId = get().roleId("archive") ?? get().roleId("all");
if (!archiveId) { if (!archiveId) {
toast.error(t("No Archive folder found. Create one named “Archive” first.")); toast.error(t("No Archive folder is set. A folder needs the Archive role on the server; naming it “Archive” is not enough."));
return; return;
} }
await get().move(ids, archiveId, { label: "Archive" }); await get().move(ids, archiveId, { label: "Archive" });
@@ -621,7 +621,7 @@ export const useMail = create<MailState>((set, get) => ({
const archiveId = get().roleId("archive") ?? get().roleId("all"); const archiveId = get().roleId("archive") ?? get().roleId("all");
if (!accountId || !ids.length) return; if (!accountId || !ids.length) return;
if (!archiveId) { if (!archiveId) {
toast.error(t("No Archive folder found. Create one named “Archive” first.")); toast.error(t("No Archive folder is set. A folder needs the Archive role on the server; naming it “Archive” is not enough."));
return; return;
} }
const { emails } = get(); const { emails } = get();