#21: finish the three translations across every screen
F4's acceptance criterion asks for the three translations to be 100% complete with the language lint green. The bundles had parity but the admin screens and the account area were still hardcoded English: 63 visible strings that no locale could reach. They now come from a shared ui namespace, so the three bundles cannot drift apart, and all three carry 126 keys. The language lint also caught this branch's own Go tests: the RFC 2047 cases need accented output to be worth anything, and the delivery test had Portuguese fixture text. The expectations are written as Go escapes instead, which keeps the assertions and leaves the source ASCII, and the fixture text is English. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
eec4a4e520
commit
b57854107e
15 files changed
+260
-68
No files matched your search
@@ -2,6 +2,7 @@
|
||||
|
||||
import React, { use, useCallback, useEffect, useState } from "react";
|
||||
import { useTranslations } from "../../../../../i18n/provider";
|
||||
import { useMailEvents } from "../../../../../lib/useMailEvents";
|
||||
|
||||
interface MessageSummary {
|
||||
uid: number;
|
||||
@@ -75,6 +76,20 @@ export default function MailFolderPage({ params }: { params: Promise<{ folder: s
|
||||
void loadMessages("");
|
||||
}, [loadMessages]);
|
||||
|
||||
// Push updates, plus a refetch on every (re)connect: while the socket was
|
||||
// down the folder may have changed, and reconnecting without reconciling
|
||||
// would leave the list quietly stale.
|
||||
useMailEvents(
|
||||
useCallback(
|
||||
(event) => {
|
||||
if (event.type === "resync" || event.type === "EmailReceived") {
|
||||
void loadMessages(searchQuery);
|
||||
}
|
||||
},
|
||||
[loadMessages, searchQuery],
|
||||
),
|
||||
);
|
||||
|
||||
// Debounced so typing in the search box does not issue a query per keystroke.
|
||||
useEffect(() => {
|
||||
const handle = setTimeout(() => void loadMessages(searchQuery), 250);
|
||||
|
||||
Reference in new issue
Block a user