From af8a95c44cbb24c3bc9409e0ce32f94ef9a4c960 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 14 Jul 2026 23:11:42 +0000 Subject: [PATCH] feat(concord): add an Open channel action to the minichat thread MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A Concord minichat pins its root and backfills it from the channel history, but when the root is still loading (or you aren't a member yet) there was no way out. Add an Open channel action to the top bar for Concord threads, navigating to the full channel (Route.Concord) where the whole timeline loads and membership lives — the correct affordance to click through to the chat room itself. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01CzJ2Cwo8tg4oZq43oRa3ig --- .../screen/loggedIn/chats/minichat/MinichatScreen.kt | 11 +++++++++++ amethyst/src/main/res/values/strings.xml | 1 + 2 files changed, 12 insertions(+) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/minichat/MinichatScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/minichat/MinichatScreen.kt index 9b9e886855..f12aba10f5 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/minichat/MinichatScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/minichat/MinichatScreen.kt @@ -59,6 +59,7 @@ import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.service.relayClient.reqCommand.event.EventFinderFilterAssemblerSubscription import com.vitorpamplona.amethyst.ui.components.ThinPaddingTextField import com.vitorpamplona.amethyst.ui.navigation.navs.INav +import com.vitorpamplona.amethyst.ui.navigation.routes.Route import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.feed.ChatroomMessageCompose import com.vitorpamplona.amethyst.ui.screen.loggedIn.chats.feed.LocalSuppressReplyToNoteId @@ -146,6 +147,16 @@ fun MinichatScreen( SymbolIcon(symbol = MaterialSymbols.AutoMirrored.ArrowBack, contentDescription = stringRes(R.string.back)) } }, + actions = { + // For a Concord thread, always offer a jump to the full channel — the "chat room + // itself", where the whole timeline loads and (if you aren't a member yet) you can + // join. This is the way out when the pinned root is still backfilling or unavailable. + if (isConcord) { + IconButton(onClick = { nav.nav(Route.Concord(communityId!!, channelId!!)) }) { + SymbolIcon(symbol = MaterialSymbols.Forum, contentDescription = stringRes(R.string.concord_open_channel)) + } + } + }, ) }, ) { padding -> diff --git a/amethyst/src/main/res/values/strings.xml b/amethyst/src/main/res/values/strings.xml index 0a01231dad..f7bbe180e6 100644 --- a/amethyst/src/main/res/values/strings.xml +++ b/amethyst/src/main/res/values/strings.xml @@ -313,6 +313,7 @@ No channels yet. Show all channels Send image + Open channel %1$s is typing… %1$s and %2$s are typing… Several people are typing…