From 8ad5b97314dad3520d4e163ecdd76157b3947308 Mon Sep 17 00:00:00 2001 From: Crowdin Bot Date: Mon, 27 Apr 2026 15:52:13 +0000 Subject: [PATCH 1/2] New Crowdin translations by GitHub Action --- amethyst/src/main/res/values-hu-rHU/strings.xml | 2 ++ amethyst/src/main/res/values-zh-rCN/strings.xml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/amethyst/src/main/res/values-hu-rHU/strings.xml b/amethyst/src/main/res/values-hu-rHU/strings.xml index c431ea5e9f..af42404b5e 100644 --- a/amethyst/src/main/res/values-hu-rHU/strings.xml +++ b/amethyst/src/main/res/values-hu-rHU/strings.xml @@ -586,6 +586,8 @@ Közvetlen webcím használata Tartalmi leírás Egy kék csónak a fehér homokos tengerparton naplementekor + LLM által javasolt, szerkessze bátran + LLM-javaslatok eltüntetése Zap-típus Zap-típus minden lehetőséghez Nyilvános diff --git a/amethyst/src/main/res/values-zh-rCN/strings.xml b/amethyst/src/main/res/values-zh-rCN/strings.xml index 601d642a1f..c206e74c97 100644 --- a/amethyst/src/main/res/values-zh-rCN/strings.xml +++ b/amethyst/src/main/res/values-zh-rCN/strings.xml @@ -586,6 +586,8 @@ 使用直接链接 内容描述 日落时分,白色沙滩上的蓝色小船 + AI建议的,编辑我 + 忽略 AI 建议 打闪类型 所有选项的打闪类型 公开 From dd926e5d514d4b04d8dea1b288bacb2afd86b803 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 27 Apr 2026 17:29:27 +0000 Subject: [PATCH 2/2] fix(nav): hide back arrow when screen is the bottom of the back stack MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bottom-nav taps clear the stack with popUpTo(route) { inclusive = true }, so a back arrow on those screens has nothing to pop. Switch the back-arrow visibility to a runtime check on INav.canPop() — true when the destination has a previous back-stack entry (drawer or any deep push), false when it's the root (bottom-nav entry). Applied across: - TopBarWithBackButton: now takes nav: INav and renders the icon only when nav.canPop() - UserDrawerSearchTopBar: shows back arrow when canPop, drawer opener otherwise (covers Home, Messages, Video, Discover, Notifications, Communities, Articles, Pictures, Shorts, PublicChats, FollowPacks, LiveStreams, AudioRooms, Longs, Polls, Badges, Products, BrowseEmojiSets) - WebBookmarks, Drafts, Wallet: wrap custom navigationIcon in canPop - ProfileHeader: floating back arrow on the banner when canPop --- .../amethyst/ui/navigation/navs/EmptyNav.kt | 2 ++ .../amethyst/ui/navigation/navs/INav.kt | 2 ++ .../amethyst/ui/navigation/navs/Nav.kt | 2 ++ .../topbars/TopBarWithBackButton.kt | 12 ++++++-- .../topbars/UserDrawerSearchTopBar.kt | 12 +++++++- .../amethyst/ui/note/ZapCustomDialog.kt | 2 +- .../badges/profile/ProfileBadgesScreen.kt | 2 +- .../default/BookmarkListScreen.kt | 2 +- .../list/ListOfBookmarkGroupsScreen.kt | 2 +- .../ArticleBookmarkListManagementScreen.kt | 2 +- .../PostBookmarkListManagementScreen.kt | 2 +- .../old/OldBookmarkListScreen.kt | 2 +- .../screen/loggedIn/drafts/DraftListScreen.kt | 6 ++-- .../favorites/FavoriteAlgoFeedsListScreen.kt | 2 +- .../emojipacks/list/ListOfEmojiPacksScreen.kt | 2 +- .../EmojiPackSelectionScreen.kt | 2 +- .../membershipManagement/MyEmojiListScreen.kt | 2 +- .../interestSets/display/InterestSetScreen.kt | 2 +- .../list/ListOfInterestSetsScreen.kt | 2 +- .../loggedIn/keyBackup/AccountBackupScreen.kt | 10 ++++--- .../lists/list/ListOfPeopleListsScreen.kt | 2 +- .../FollowListAndPackAndUserScreen.kt | 2 +- .../loggedIn/pinnednotes/PinnedNotesScreen.kt | 2 +- .../loggedIn/profile/header/ProfileHeader.kt | 28 +++++++++++++++++++ .../ui/screen/loggedIn/qrcode/ShowQRScreen.kt | 2 +- .../relays/eventsync/EventSyncScreen.kt | 2 +- .../relays/vanish/RequestToVanishScreen.kt | 2 +- .../relays/vanish/VanishEventsScreen.kt | 2 +- .../loggedIn/settings/AllSettingsScreen.kt | 2 +- .../loggedIn/settings/AppSettingsScreen.kt | 2 +- .../settings/BottomBarSettingsScreen.kt | 2 +- .../loggedIn/settings/CallSettingsScreen.kt | 2 +- .../settings/NamecoinSettingsScreen.kt | 2 +- .../loggedIn/settings/OtsSettingsScreen.kt | 2 +- .../settings/ReactionsSettingsScreen.kt | 2 +- .../settings/SecurityFiltersScreen.kt | 2 +- .../loggedIn/settings/UserSettingsScreen.kt | 2 +- .../settings/VideoPlayerSettingsScreen.kt | 2 +- .../loggedIn/video/hls/NewHlsVideoScreen.kt | 2 +- .../ui/screen/loggedIn/wallet/WalletScreen.kt | 12 ++++---- .../webBookmarks/WebBookmarksScreen.kt | 6 ++-- 41 files changed, 106 insertions(+), 48 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/navs/EmptyNav.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/navs/EmptyNav.kt index dd42917f3f..06c7edab74 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/navs/EmptyNav.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/navs/EmptyNav.kt @@ -46,6 +46,8 @@ class EmptyNav : INav { override fun navBottomBar(route: Route) {} + override fun canPop(): Boolean = false + override fun popBack() {} override fun popUpTo( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/navs/INav.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/navs/INav.kt index a9582196c2..7ec762f8ef 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/navs/INav.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/navs/INav.kt @@ -43,6 +43,8 @@ interface INav { fun navBottomBar(route: Route) + fun canPop(): Boolean + fun popBack() fun popUpTo( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/navs/Nav.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/navs/Nav.kt index 3267aef282..f95068d8a2 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/navs/Nav.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/navs/Nav.kt @@ -89,6 +89,8 @@ class Nav( } } + override fun canPop(): Boolean = controller.previousBackStackEntry != null + override fun popBack() { navigationScope.launch { controller.navigateUp() diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/topbars/TopBarWithBackButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/topbars/TopBarWithBackButton.kt index f32c79e9d6..cab8b465b8 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/topbars/TopBarWithBackButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/topbars/TopBarWithBackButton.kt @@ -25,13 +25,14 @@ import androidx.compose.material3.IconButton import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.text.style.TextOverflow +import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.note.ArrowBackIcon @OptIn(ExperimentalMaterial3Api::class) @Composable fun TopBarWithBackButton( caption: String, - popBack: () -> Unit, + nav: INav, ) { ShorterTopAppBar( title = { @@ -42,8 +43,13 @@ fun TopBarWithBackButton( ) }, navigationIcon = { - IconButton(popBack) { - ArrowBackIcon() + // Suppress the back arrow when this is the bottom of the back stack + // (i.e. the user landed here via the bottom nav, which clears the stack + // with popUpTo(route) { inclusive = true }). + if (nav.canPop()) { + IconButton(nav::popBack) { + ArrowBackIcon() + } } }, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/topbars/UserDrawerSearchTopBar.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/topbars/UserDrawerSearchTopBar.kt index 759e461754..570a4d2737 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/topbars/UserDrawerSearchTopBar.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/topbars/UserDrawerSearchTopBar.kt @@ -37,6 +37,7 @@ import com.vitorpamplona.amethyst.service.relayClient.reqCommand.user.observeUse import com.vitorpamplona.amethyst.ui.components.RobohashFallbackAsyncImage import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.routes.Route +import com.vitorpamplona.amethyst.ui.note.ArrowBackIcon import com.vitorpamplona.amethyst.ui.note.SearchIcon import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.stringRes @@ -62,7 +63,16 @@ fun UserDrawerSearchTopBar( } }, navigationIcon = { - LoggedInUserPictureDrawer(accountViewModel, nav::openDrawer) + // When this screen sits on top of a back stack (entered via the drawer + // or any deep link), show a back arrow. When it's the root (entered via + // the bottom nav, which clears the stack), show the drawer opener. + if (nav.canPop()) { + IconButton(onClick = nav::popBack) { + ArrowBackIcon() + } + } else { + LoggedInUserPictureDrawer(accountViewModel, nav::openDrawer) + } }, actions = { IconButton(onClick = { nav.nav(Route.Search) }) { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ZapCustomDialog.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ZapCustomDialog.kt index 3e17859e16..6044bec697 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ZapCustomDialog.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/note/ZapCustomDialog.kt @@ -359,7 +359,7 @@ fun PayViaIntentScreen( ) { Scaffold( topBar = { - TopBarWithBackButton(stringRes(id = R.string.manual_zaps), nav::popBack) + TopBarWithBackButton(stringRes(id = R.string.manual_zaps), nav) }, ) { pad -> val list = accountViewModel.tempManualPaymentCache.get(paymentId) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/badges/profile/ProfileBadgesScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/badges/profile/ProfileBadgesScreen.kt index 5169842778..06215deddb 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/badges/profile/ProfileBadgesScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/badges/profile/ProfileBadgesScreen.kt @@ -143,7 +143,7 @@ fun ProfileBadgesScreen( Scaffold( topBar = { - TopBarWithBackButton(stringRes(id = R.string.profile_badges_title), nav::popBack) + TopBarWithBackButton(stringRes(id = R.string.profile_badges_title), nav) }, ) { pad -> Column(Modifier.padding(pad).fillMaxSize()) { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/default/BookmarkListScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/default/BookmarkListScreen.kt index 64e5ae1512..9dd55c401d 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/default/BookmarkListScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/default/BookmarkListScreen.kt @@ -129,7 +129,7 @@ private fun RenderBookmarkScreen( isInvertedLayout = false, topBar = { Column { - TopBarWithBackButton(stringRes(id = R.string.bookmarks_title), nav::popBack) + TopBarWithBackButton(stringRes(id = R.string.bookmarks_title), nav) SecondaryTabRow( containerColor = MaterialTheme.colorScheme.background, contentColor = MaterialTheme.colorScheme.onBackground, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/list/ListOfBookmarkGroupsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/list/ListOfBookmarkGroupsScreen.kt index 94339fe552..463ce78f9f 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/list/ListOfBookmarkGroupsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/list/ListOfBookmarkGroupsScreen.kt @@ -109,7 +109,7 @@ fun ListOfBookmarkGroupsFeed( ) { Scaffold( topBar = { - TopBarWithBackButton(caption = stringRes(R.string.bookmark_lists), nav::popBack) + TopBarWithBackButton(caption = stringRes(R.string.bookmark_lists), nav) }, floatingActionButton = { BookmarkGroupFab(onAddGroup = addBookmarkGroup) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/membershipManagement/ArticleBookmarkListManagementScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/membershipManagement/ArticleBookmarkListManagementScreen.kt index 7a0b7eb227..ddec808910 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/membershipManagement/ArticleBookmarkListManagementScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/membershipManagement/ArticleBookmarkListManagementScreen.kt @@ -77,7 +77,7 @@ private fun ListManagementView( Scaffold( modifier = modifier, topBar = { - TopBarWithBackButton(caption = stringRes(R.string.article_bookmark_management_title), nav::popBack) + TopBarWithBackButton(caption = stringRes(R.string.article_bookmark_management_title), nav) }, floatingActionButton = { NewListButton { nav.nav(Route.BookmarkGroupMetadataEdit()) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/membershipManagement/PostBookmarkListManagementScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/membershipManagement/PostBookmarkListManagementScreen.kt index 1747b21515..ad17fa619d 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/membershipManagement/PostBookmarkListManagementScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/membershipManagement/PostBookmarkListManagementScreen.kt @@ -76,7 +76,7 @@ private fun ListManagementView( Scaffold( modifier = modifier, topBar = { - TopBarWithBackButton(caption = stringRes(R.string.post_bookmark_management_title), nav::popBack) + TopBarWithBackButton(caption = stringRes(R.string.post_bookmark_management_title), nav) }, floatingActionButton = { NewListButton { nav.nav(Route.BookmarkGroupMetadataEdit()) } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/old/OldBookmarkListScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/old/OldBookmarkListScreen.kt index 35ba1b79be..5281da1056 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/old/OldBookmarkListScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/bookmarkgroups/old/OldBookmarkListScreen.kt @@ -137,7 +137,7 @@ private fun RenderOldBookmarkScreen( isInvertedLayout = false, topBar = { Column { - TopBarWithBackButton(stringRes(id = R.string.old_bookmarks_title), nav::popBack) + TopBarWithBackButton(stringRes(id = R.string.old_bookmarks_title), nav) SecondaryTabRow( containerColor = MaterialTheme.colorScheme.background, contentColor = MaterialTheme.colorScheme.onBackground, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/drafts/DraftListScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/drafts/DraftListScreen.kt index 75ec274afb..5224707d80 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/drafts/DraftListScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/drafts/DraftListScreen.kt @@ -129,8 +129,10 @@ private fun RenderDraftListScreen( ) }, navigationIcon = { - IconButton(onClick = nav::popBack) { - ArrowBackIcon() + if (nav.canPop()) { + IconButton(onClick = nav::popBack) { + ArrowBackIcon() + } } }, actions = { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/dvms/favorites/FavoriteAlgoFeedsListScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/dvms/favorites/FavoriteAlgoFeedsListScreen.kt index 5a02e34319..4bc3b4a0f7 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/dvms/favorites/FavoriteAlgoFeedsListScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/dvms/favorites/FavoriteAlgoFeedsListScreen.kt @@ -77,7 +77,7 @@ fun FavoriteAlgoFeedsListScreen( topBar = { TopBarWithBackButton( caption = stringRes(R.string.favorite_dvms_title), - popBack = nav::popBack, + nav = nav, ) }, ) { padding -> diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/list/ListOfEmojiPacksScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/list/ListOfEmojiPacksScreen.kt index dc142993b1..db3c550fc5 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/list/ListOfEmojiPacksScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/list/ListOfEmojiPacksScreen.kt @@ -105,7 +105,7 @@ fun ListOfEmojiPacksFeed( ) { Scaffold( topBar = { - TopBarWithBackButton(caption = stringRes(R.string.emoji_packs_title), nav::popBack) + TopBarWithBackButton(caption = stringRes(R.string.emoji_packs_title), nav) }, floatingActionButton = { EmojiPackFab(onAddPack = addEmojiPack) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/membershipManagement/EmojiPackSelectionScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/membershipManagement/EmojiPackSelectionScreen.kt index 12a39b5180..e43158c75f 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/membershipManagement/EmojiPackSelectionScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/membershipManagement/EmojiPackSelectionScreen.kt @@ -88,7 +88,7 @@ private fun EmojiPackSelectionView( Scaffold( modifier = modifier, topBar = { - TopBarWithBackButton(caption = stringRes(R.string.emoji_pack_management_title), nav::popBack) + TopBarWithBackButton(caption = stringRes(R.string.emoji_pack_management_title), nav) }, ) { contentPadding -> Column( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/membershipManagement/MyEmojiListScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/membershipManagement/MyEmojiListScreen.kt index a55b4e7650..4016e869f3 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/membershipManagement/MyEmojiListScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/emojipacks/membershipManagement/MyEmojiListScreen.kt @@ -97,7 +97,7 @@ private fun MyEmojiListView( ) { Scaffold( topBar = { - TopBarWithBackButton(caption = stringRes(R.string.my_emoji_list_title), nav::popBack) + TopBarWithBackButton(caption = stringRes(R.string.my_emoji_list_title), nav) }, ) { contentPadding -> val packAddresses by observeNoteEventAndMap>( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/interestSets/display/InterestSetScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/interestSets/display/InterestSetScreen.kt index d9b566ac54..83af47d057 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/interestSets/display/InterestSetScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/interestSets/display/InterestSetScreen.kt @@ -67,7 +67,7 @@ fun InterestSetScreen( Scaffold( topBar = { - TopBarWithBackButton(caption = set?.title ?: stringRes(R.string.interest_sets_title), nav::popBack) + TopBarWithBackButton(caption = set?.title ?: stringRes(R.string.interest_sets_title), nav) }, ) { paddingValues -> if (set == null) { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/interestSets/list/ListOfInterestSetsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/interestSets/list/ListOfInterestSetsScreen.kt index 0cb8259c5d..231650252d 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/interestSets/list/ListOfInterestSetsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/interestSets/list/ListOfInterestSetsScreen.kt @@ -63,7 +63,7 @@ fun ListOfInterestSetsScreen( Scaffold( topBar = { - TopBarWithBackButton(caption = stringRes(R.string.interest_sets_title), nav::popBack) + TopBarWithBackButton(caption = stringRes(R.string.interest_sets_title), nav) }, floatingActionButton = { InterestSetFab(onAdd = { nav.nav(Route.InterestSetMetadataEdit()) }) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/keyBackup/AccountBackupScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/keyBackup/AccountBackupScreen.kt index 80828b67d1..8689d496c2 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/keyBackup/AccountBackupScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/keyBackup/AccountBackupScreen.kt @@ -85,6 +85,7 @@ import com.vitorpamplona.amethyst.commons.icons.symbols.Icon import com.vitorpamplona.amethyst.commons.icons.symbols.MaterialSymbols import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.ui.components.util.setText +import com.vitorpamplona.amethyst.ui.navigation.navs.EmptyNav import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.topbars.TopBarWithBackButton import com.vitorpamplona.amethyst.ui.note.authenticate @@ -110,7 +111,7 @@ fun AccountBackupScreen( accountViewModel: AccountViewModel, nav: INav, ) { - AccountBackupScreenContent(accountViewModel, nav::popBack) + AccountBackupScreenContent(accountViewModel, nav) } @Preview(device = "spec:width=2160px,height=2340px,dpi=440") @@ -119,7 +120,8 @@ fun AccountBackupScreenPreview() { ThemeComparisonRow { AccountBackupScreenContent( mockAccountViewModel(), - ) {} + EmptyNav(), + ) } } @@ -127,13 +129,13 @@ fun AccountBackupScreenPreview() { @Composable private fun AccountBackupScreenContent( accountViewModel: AccountViewModel, - onClose: () -> Unit, + nav: INav, ) { Scaffold( topBar = { TopBarWithBackButton( stringRes(R.string.backup_keys), - popBack = onClose, + nav = nav, ) }, ) { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/list/ListOfPeopleListsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/list/ListOfPeopleListsScreen.kt index 1914868c62..838812df36 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/list/ListOfPeopleListsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/list/ListOfPeopleListsScreen.kt @@ -62,7 +62,7 @@ fun ListOfPeopleListsScreen( ) { Scaffold( topBar = { - TopBarWithBackButton(stringRes(R.string.my_lists), nav::popBack) + TopBarWithBackButton(stringRes(R.string.my_lists), nav) }, ) { paddingValues -> Column( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/memberEdit/FollowListAndPackAndUserScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/memberEdit/FollowListAndPackAndUserScreen.kt index 6f6328a54c..e616e29c30 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/memberEdit/FollowListAndPackAndUserScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/lists/memberEdit/FollowListAndPackAndUserScreen.kt @@ -81,7 +81,7 @@ fun FollowListAndPackAndUserScreen( val userName by observeUserName(userToAddOrRemove, accountViewModel) TopBarWithBackButton( caption = stringRes(id = R.string.follow_set_man_dialog_title2, userName), - popBack = nav::popBack, + nav = nav, ) }, ) { contentPadding -> diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/pinnednotes/PinnedNotesScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/pinnednotes/PinnedNotesScreen.kt index 6446948d2b..c1b7c39244 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/pinnednotes/PinnedNotesScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/pinnednotes/PinnedNotesScreen.kt @@ -93,7 +93,7 @@ private fun RenderPinnedNotesScreen( DisappearingScaffold( isInvertedLayout = false, topBar = { - TopBarWithBackButton(stringRes(id = R.string.pinned_notes), nav::popBack) + TopBarWithBackButton(stringRes(id = R.string.pinned_notes), nav) }, accountViewModel = accountViewModel, ) { paddingValues -> diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/ProfileHeader.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/ProfileHeader.kt index f3a7c27549..9a9ef722b5 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/ProfileHeader.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/header/ProfileHeader.kt @@ -67,6 +67,7 @@ import com.vitorpamplona.amethyst.ui.actions.uploads.GallerySelectSingle import com.vitorpamplona.amethyst.ui.components.LoadingAnimation import com.vitorpamplona.amethyst.ui.components.ZoomableImageDialog import com.vitorpamplona.amethyst.ui.navigation.navs.INav +import com.vitorpamplona.amethyst.ui.note.ArrowBackIcon import com.vitorpamplona.amethyst.ui.note.ClickableUserPicture import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.screen.loggedIn.profile.header.apps.UserAppRecommendationsFeedViewModel @@ -93,6 +94,33 @@ fun ProfileHeader( Box { DrawBanner(baseUser, accountViewModel) + if (nav.canPop()) { + Box( + modifier = + Modifier + .statusBarsPadding() + .padding(start = 10.dp, end = 10.dp, top = 10.dp) + .size(40.dp) + .align(Alignment.TopStart), + ) { + Button( + modifier = + Modifier + .size(30.dp) + .align(Alignment.Center), + onClick = nav::popBack, + shape = ButtonBorder, + colors = + ButtonDefaults.buttonColors( + containerColor = MaterialTheme.colorScheme.background, + ), + contentPadding = ZeroPadding, + ) { + ArrowBackIcon(tint = MaterialTheme.colorScheme.placeholderText) + } + } + } + Box( modifier = Modifier diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/qrcode/ShowQRScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/qrcode/ShowQRScreen.kt index 8ac06786ae..837fef42f5 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/qrcode/ShowQRScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/qrcode/ShowQRScreen.kt @@ -143,7 +143,7 @@ fun ShowQRScreen( topBar = { TopBarWithBackButton( "", - nav::popBack, + nav, ) }, ) { pad -> diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/eventsync/EventSyncScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/eventsync/EventSyncScreen.kt index 77b2cafdf2..a83dea75f5 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/eventsync/EventSyncScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/eventsync/EventSyncScreen.kt @@ -93,7 +93,7 @@ fun EventSyncScreen( topBar = { TopBarWithBackButton( caption = stringRes(R.string.event_sync_title), - popBack = nav::popBack, + nav = nav, ) }, ) { padding -> diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/vanish/RequestToVanishScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/vanish/RequestToVanishScreen.kt index 43d62e6af5..c63a49f64c 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/vanish/RequestToVanishScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/vanish/RequestToVanishScreen.kt @@ -149,7 +149,7 @@ fun RequestToVanishScreen( Scaffold( topBar = { - TopBarWithBackButton(stringRes(id = R.string.request_to_vanish), nav::popBack) + TopBarWithBackButton(stringRes(id = R.string.request_to_vanish), nav) }, ) { padding -> Column( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/vanish/VanishEventsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/vanish/VanishEventsScreen.kt index 22226720fc..69f9549c7d 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/vanish/VanishEventsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/relays/vanish/VanishEventsScreen.kt @@ -77,7 +77,7 @@ fun VanishEventsScreen( topBar = { TopBarWithBackButton( stringRes(id = R.string.vanish_events_title), - nav::popBack, + nav, ) }, ) { padding -> diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/AllSettingsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/AllSettingsScreen.kt index 93fc957bd9..efc44df18f 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/AllSettingsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/AllSettingsScreen.kt @@ -93,7 +93,7 @@ fun AllSettingsScreen( Scaffold( topBar = { - TopBarWithBackButton(stringRes(id = R.string.settings), nav::popBack) + TopBarWithBackButton(stringRes(id = R.string.settings), nav) }, ) { padding -> Column(Modifier.padding(padding).verticalScroll(rememberScrollState())) { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/AppSettingsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/AppSettingsScreen.kt index b4e4468eab..5b647776f9 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/AppSettingsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/AppSettingsScreen.kt @@ -93,7 +93,7 @@ fun SettingsScreen( ) { Scaffold( topBar = { - TopBarWithBackButton(stringRes(id = R.string.application_preferences), nav::popBack) + TopBarWithBackButton(stringRes(id = R.string.application_preferences), nav) }, ) { Column(Modifier.padding(it)) { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/BottomBarSettingsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/BottomBarSettingsScreen.kt index 559fb49b65..27ae9d32a0 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/BottomBarSettingsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/BottomBarSettingsScreen.kt @@ -91,7 +91,7 @@ fun BottomBarSettingsScreen( ) { Scaffold( topBar = { - TopBarWithBackButton(stringRes(id = R.string.bottom_bar_settings), nav::popBack) + TopBarWithBackButton(stringRes(id = R.string.bottom_bar_settings), nav) }, ) { padding -> Column(Modifier.padding(padding)) { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/CallSettingsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/CallSettingsScreen.kt index 18c349537e..3f273b1362 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/CallSettingsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/CallSettingsScreen.kt @@ -69,7 +69,7 @@ fun CallSettingsScreen( ) { Scaffold( topBar = { - TopBarWithBackButton(stringRes(id = R.string.call_settings), nav::popBack) + TopBarWithBackButton(stringRes(id = R.string.call_settings), nav) }, ) { padding -> Column( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/NamecoinSettingsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/NamecoinSettingsScreen.kt index 0fdbd7be81..f4c28010bd 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/NamecoinSettingsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/NamecoinSettingsScreen.kt @@ -64,7 +64,7 @@ fun NamecoinSettingsScreen( Scaffold( topBar = { - TopBarWithBackButton(stringRes(id = R.string.namecoin_settings), nav::popBack) + TopBarWithBackButton(stringRes(id = R.string.namecoin_settings), nav) }, ) { Column( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/OtsSettingsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/OtsSettingsScreen.kt index a6dd80c716..2a5476787f 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/OtsSettingsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/OtsSettingsScreen.kt @@ -65,7 +65,7 @@ fun OtsSettingsScreen( Scaffold( topBar = { - TopBarWithBackButton(stringRes(id = R.string.ots_explorer_settings), nav::popBack) + TopBarWithBackButton(stringRes(id = R.string.ots_explorer_settings), nav) }, ) { Column( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/ReactionsSettingsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/ReactionsSettingsScreen.kt index 856e560bde..52478a7bca 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/ReactionsSettingsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/ReactionsSettingsScreen.kt @@ -90,7 +90,7 @@ fun ReactionsSettingsScreen( ) { Scaffold( topBar = { - TopBarWithBackButton(stringRes(id = R.string.reactions_settings), nav::popBack) + TopBarWithBackButton(stringRes(id = R.string.reactions_settings), nav) }, ) { padding -> Column(Modifier.padding(padding)) { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/SecurityFiltersScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/SecurityFiltersScreen.kt index 68f83b91de..2f36f2caec 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/SecurityFiltersScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/SecurityFiltersScreen.kt @@ -157,7 +157,7 @@ fun SecurityFiltersScreen( Scaffold( topBar = { - TopBarWithBackButton(stringRes(id = R.string.security_filters), nav::popBack) + TopBarWithBackButton(stringRes(id = R.string.security_filters), nav) }, ) { Column( diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/UserSettingsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/UserSettingsScreen.kt index 3017a12d04..17063f74b2 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/UserSettingsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/UserSettingsScreen.kt @@ -93,7 +93,7 @@ fun UserSettingsScreen( ) { Scaffold( topBar = { - TopBarWithBackButton(stringRes(id = R.string.user_preferences), nav::popBack) + TopBarWithBackButton(stringRes(id = R.string.user_preferences), nav) }, ) { Column(Modifier.padding(it)) { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/VideoPlayerSettingsScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/VideoPlayerSettingsScreen.kt index 829ec7fc43..e6cd4ad1fb 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/VideoPlayerSettingsScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/settings/VideoPlayerSettingsScreen.kt @@ -91,7 +91,7 @@ fun VideoPlayerSettingsScreen( ) { Scaffold( topBar = { - TopBarWithBackButton(stringRes(id = R.string.video_player_settings), nav::popBack) + TopBarWithBackButton(stringRes(id = R.string.video_player_settings), nav) }, ) { padding -> Column(Modifier.padding(padding)) { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/video/hls/NewHlsVideoScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/video/hls/NewHlsVideoScreen.kt index c5acbb675f..38cc496ac5 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/video/hls/NewHlsVideoScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/video/hls/NewHlsVideoScreen.kt @@ -107,7 +107,7 @@ fun NewHlsVideoScreen( topBar = { TopBarWithBackButton( caption = stringResource(R.string.share_hls_video), - popBack = nav::popBack, + nav = nav, ) }, ) { padding -> diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletScreen.kt index 738acb76a3..1dfe05d719 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/wallet/WalletScreen.kt @@ -88,11 +88,13 @@ fun WalletScreen( TopAppBar( title = { Text(stringRes(R.string.wallet)) }, navigationIcon = { - IconButton(onClick = { nav.popBack() }) { - Icon( - symbol = MaterialSymbols.AutoMirrored.ArrowBack, - contentDescription = stringRes(R.string.back), - ) + if (nav.canPop()) { + IconButton(onClick = { nav.popBack() }) { + Icon( + symbol = MaterialSymbols.AutoMirrored.ArrowBack, + contentDescription = stringRes(R.string.back), + ) + } } }, actions = { diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/webBookmarks/WebBookmarksScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/webBookmarks/WebBookmarksScreen.kt index 26f1745d59..bd2882aaeb 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/webBookmarks/WebBookmarksScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/webBookmarks/WebBookmarksScreen.kt @@ -130,8 +130,10 @@ private fun RenderWebBookmarksScreen( Text(text = stringRes(id = R.string.web_bookmarks)) }, navigationIcon = { - IconButton(onClick = nav::popBack) { - ArrowBackIcon() + if (nav.canPop()) { + IconButton(onClick = nav::popBack) { + ArrowBackIcon() + } } }, )