From 0fb780a61502b16ebde9f4515b8afd663ca0c746 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 1 Oct 2026 01:55:26 +0000 Subject: [PATCH] feat(cordn): fold "Review invitations" into the Cordn card on the new-conversation screen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The invitations entry was a flat row appended after the Relay-aware section, styled unlike every other card and sharing the relay group's icon, so it read as part of the wrong group. It now sits inside the Cordn card as an outlined secondary button under "Create Cordn group" (a new optional SecondaryAction on ConversationType). Still a button, never a count: fetching invitations is a call to every coordinator (spec/00.md §8). Also: - Add an invitations button to the Cordn groups list top bar, which was the other natural place to look and had no way in. - Tighten the Cordn card copy to match the other types: title case, short pros/cons, and drop the "Best for" prefix that duplicated the BEST FOR header. - Remove the now-unused cordn_invitations_entry string from all locales. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01DUVZKGPbRB9gWBUrBMU5x5 --- .../chats/cordnGroup/CordnGroupListScreen.kt | 11 +++ .../composeResources/values-cs/strings.xml | 1 - .../values-de-rDE/strings.xml | 1 - .../values-hi-rIN/strings.xml | 1 - .../values-hu-rHU/strings.xml | 1 - .../values-pl-rPL/strings.xml | 1 - .../values-pt-rBR/strings.xml | 1 - .../values-sv-rSE/strings.xml | 1 - .../composeResources/values/strings.xml | 13 ++-- .../commons/chats/ui/NewConversationScreen.kt | 78 +++++++++---------- 10 files changed, 52 insertions(+), 57 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/cordnGroup/CordnGroupListScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/cordnGroup/CordnGroupListScreen.kt index 68c10c0a45..a6f0fb7fcb 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/cordnGroup/CordnGroupListScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/cordnGroup/CordnGroupListScreen.kt @@ -60,6 +60,7 @@ import com.vitorpamplona.amethyst.commons.resources.cordn_groups_none import com.vitorpamplona.amethyst.commons.resources.cordn_groups_none_detail import com.vitorpamplona.amethyst.commons.resources.cordn_groups_start import com.vitorpamplona.amethyst.commons.resources.cordn_groups_title +import com.vitorpamplona.amethyst.commons.resources.cordn_invitations_title import com.vitorpamplona.amethyst.commons.ui.components.EmptyState import com.vitorpamplona.amethyst.commons.ui.navigation.navs.INav import com.vitorpamplona.amethyst.commons.ui.navigation.topbars.TopBarWithBackButton @@ -110,6 +111,16 @@ fun CordnGroupListScreen( Scaffold( topBar = { TopBarWithBackButton(stringRes(Res.string.cordn_groups_title), nav) { + // Invitations are fetched only when someone opens that screen + // (every call to a coordinator is metadata, spec/00.md §8), so + // this is a plain way in, never a badge. + IconButton(onClick = { nav.nav(Route.CordnInvitations) }) { + Icon( + symbol = MaterialSymbols.MoveToInbox, + contentDescription = stringRes(Res.string.cordn_invitations_title), + modifier = Modifier.size(22.dp), + ) + } IconButton(onClick = { nav.nav(Route.CordnCoordinators) }) { Icon( symbol = MaterialSymbols.Dns, diff --git a/commonsUI/src/commonMain/composeResources/values-cs/strings.xml b/commonsUI/src/commonMain/composeResources/values-cs/strings.xml index 98c17c59ed..76af1723d5 100644 --- a/commonsUI/src/commonMain/composeResources/values-cs/strings.xml +++ b/commonsUI/src/commonMain/composeResources/values-cs/strings.xml @@ -5591,7 +5591,6 @@ End-to-end šifrování pomocí MLS — koordinátor nikdy nepřečte žádnou zprávu. Jedno dohodnuté pořadí pro všechny, takže historii nemohou přeházet špatně nastavené hodiny. Koordinátor zjistí, kdo je ve skupině a kdy spolu mluvíte, i když nemůže číst, co píšete. - Máte pozvánku do skupiny cordn? Zobrazit pozvánky