fix(webmail): corrige os contadores das pastas e as ações do leitor
Todos estes foram reproduzidos na interface real, com a conta em
mail.lucasrguerra.dev.br, e não em teste.
Contadores das pastas. O badge caía para o total sempre que não havia
nada por ler, no mesmo lugar e no mesmo estilo do contador de não
lidas: uma caixa de entrada com catorze mensagens lidas mostrava "14",
e ler mais uma nunca movia o número - ele nunca esteve contando o que
o leitor pensava. Os dois números agora são visualmente distintos e o
de não lidas só aparece quando existe mensagem por ler.
Em Rascunhos o badge e o total são o mesmo número por definição, então
o sidebar imprimia-o duas vezes: "Rascunhos 1 1". A regra passou para
folderBadge, onde é testada, e o tamanho da pasta é renderizado num
único sítio.
Ações do leitor. Todas as mensagens ofereciam os mesmos quatro botões,
onde a pasta devia decidir. Um e-mail que o próprio utilizador enviou
oferecia "marcar como não lida" - uma flag que nada lê numa pasta onde
nada é entregue - e um rascunho por acabar oferecia Responder e
Encaminhar, mas nenhuma forma de o terminar. Abrir um rascunho agora
abre o compositor com o que estava escrito e adota o seu UID, para que
continuar a escrever substitua esse rascunho em vez de deixar o antigo
para trás. Em Lixeira o botão de apagar diz que apaga em definitivo,
porque é o que faz.
Anexos. t("mail.attachments") era chamado sem o parâmetro que a string
declara, e a interface mostrava literalmente "Anexos ({count})" nos
três idiomas. Na lista, que sabe que há anexos mas não quantos, passa a
nomear o facto em vez de imprimir uma contagem que não tem.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
1dc87a06c8
commit
203316f2c3
9 files changed
+320
-46
No files matched your search
@@ -28,10 +28,21 @@ describe("the counters the sidebar shows", () => {
|
||||
// The badge was computed inline from folders.find(...).unread_count, which
|
||||
// missed folders with no special-use role and printed nothing for Drafts.
|
||||
it("goes through the tested counting rules", () => {
|
||||
expect(code(USER_LAYOUT)).toContain("badgeCount");
|
||||
// folderBadge, not badgeCount: the sidebar needs to know which of the two
|
||||
// numbers to emphasise, not just what the number is. Rendering was where
|
||||
// the defect lived - a folder with nothing unread printed its total in the
|
||||
// unread badge's place, so reading a message never moved it.
|
||||
expect(code(USER_LAYOUT)).toContain("folderBadge");
|
||||
expect(code(USER_LAYOUT)).not.toMatch(/unread_count\s*\?\?/);
|
||||
});
|
||||
|
||||
// The total was rendered twice for Drafts, where the badge and the size are
|
||||
// the same number: "Rascunhos 1 1".
|
||||
it("renders the folder size in exactly one place", () => {
|
||||
const layout = code(USER_LAYOUT);
|
||||
expect(layout.match(/\{badge\.total\}/g) ?? []).toHaveLength(1);
|
||||
});
|
||||
|
||||
// The folder list was fetched once on mount, so every badge froze at the
|
||||
// value it had when the tab was opened: new mail did not raise it and reading
|
||||
// a message did not lower it.
|
||||
|
||||
Reference in new issue
Block a user