* refactor(nav): remove bottom NavigationBar from Scaffold (#665) * refactor(theme): remove BottomNavDisplayMode enum (#666) * refactor(settings): remove nav bar customization page (#667) * chore: clean up unused imports after bottom nav removal (#668) * chore: remove dead bottom nav infrastructure after removal - Remove SettingsNavBar NavKey (NavigationKeys.kt) - Remove bottomNavItems field from ServerStoreState + migration code - Remove _bottomNavItemsFlow, getBottomNavItems, setBottomNavItems from AuthManager - Remove bottomNavItems handling from selfHealed() (ServerCollectionOps) - Remove redundant bottomBar={} from Scaffold (Navigation.kt) - Remove unused nav bar strings from values/strings.xml + values-ko/strings.xml - Remove content_desc_move_up/down/remove_item strings - Update SettingsViewModelTest.kt (drop stale getBottomNavItems mock) - Update ServerStoreTest.kt (remove bottomNavItems assertions) --------- Co-authored-by: M57 <Hy4ri@users.noreply.github.com>
This commit is contained in:
1 parent
c43904b2b8
commit
0edb67338d
17 files changed
-580
No files matched your search
@@ -1,58 +0,0 @@
|
||||
package com.m57.hermescontrol
|
||||
|
||||
import androidx.navigation3.runtime.NavKey
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Test
|
||||
|
||||
/**
|
||||
* Verifies that the bottom-nav selection key maps Settings drill-down
|
||||
* destinations back to [SettingsScreen] so the indicator stays highlighted,
|
||||
* while every other screen is returned unchanged.
|
||||
*/
|
||||
class BottomNavigationSelectionTest {
|
||||
@Test
|
||||
fun `SettingsScreen selects itself`() {
|
||||
assertEquals(SettingsScreen, selectedBottomNavDestination(SettingsScreen))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `every Settings drill-down maps back to SettingsScreen`() {
|
||||
val drillDowns: List<NavKey> =
|
||||
listOf(
|
||||
SettingsConnection,
|
||||
SettingsAppearance,
|
||||
SettingsChat,
|
||||
SettingsNavBar,
|
||||
SettingsBehavior,
|
||||
SettingsAbout,
|
||||
)
|
||||
for (destination in drillDowns) {
|
||||
assertEquals(
|
||||
"Expected $destination to map to SettingsScreen",
|
||||
SettingsScreen,
|
||||
selectedBottomNavDestination(destination),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `non-Settings screens are returned unchanged`() {
|
||||
val others: List<NavKey> =
|
||||
listOf(
|
||||
ChatScreen,
|
||||
CronJobsScreen,
|
||||
WebhooksScreen,
|
||||
GatewayScreen,
|
||||
SkillsScreen,
|
||||
LandingScreen,
|
||||
AuthLoginScreen,
|
||||
)
|
||||
for (screen in others) {
|
||||
assertEquals(
|
||||
"Expected $screen to be returned unchanged",
|
||||
screen,
|
||||
selectedBottomNavDestination(screen),
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -68,15 +68,6 @@ class ServerStoreTest {
|
||||
)
|
||||
val healed = state.selfHealed()
|
||||
assertNull(healed.selectedProfileId)
|
||||
|
||||
// Test empty bottomNavItems
|
||||
val state2 =
|
||||
ServerStoreState(
|
||||
bottomNavItems = emptyList(),
|
||||
)
|
||||
val healed2 = state2.selfHealed()
|
||||
assertEquals(5, healed2.bottomNavItems.size)
|
||||
assertEquals("ChatScreen", healed2.bottomNavItems[0])
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -3,7 +3,6 @@ package com.m57.hermescontrol.ui.settings
|
||||
import com.m57.hermescontrol.data.config.ConnectionProfile
|
||||
import com.m57.hermescontrol.data.local.AuthManager
|
||||
import com.m57.hermescontrol.data.remote.ApiClient
|
||||
import com.m57.hermescontrol.theme.BottomNavDisplayMode
|
||||
import com.m57.hermescontrol.theme.ThemePreference
|
||||
import com.m57.hermescontrol.theme.ThemePreset
|
||||
import io.mockk.every
|
||||
@@ -63,12 +62,10 @@ class SettingsViewModelTest {
|
||||
every { AuthManager.getThemePreference() } returns ThemePreference.SYSTEM
|
||||
every { AuthManager.isUseDynamicColors() } returns true
|
||||
every { AuthManager.getThemePreset() } returns ThemePreset.DEFAULT
|
||||
every { AuthManager.getBottomNavItems() } returns emptyList()
|
||||
every { AuthManager.isTypingEffectEnabled() } returns true
|
||||
every { AuthManager.getTypingEffectDelayMs() } returns 30
|
||||
every { AuthManager.getConnectionProfiles() } returns emptyList()
|
||||
every { AuthManager.getSelectedProfileId() } answers { storedSelectedProfileId }
|
||||
every { AuthManager.getBottomNavDisplayMode() } returns BottomNavDisplayMode.ICON_AND_TEXT
|
||||
every { AuthManager.baseUrl() } returns "http://127.0.0.1:9119/"
|
||||
every { AuthManager.setHost(any()) } returns Unit
|
||||
every { AuthManager.setPort(any()) } returns Unit
|
||||
@@ -78,7 +75,6 @@ class SettingsViewModelTest {
|
||||
every { AuthManager.setThemePreference(any()) } returns Unit
|
||||
every { AuthManager.setUseDynamicColors(any()) } returns Unit
|
||||
every { AuthManager.setThemePreset(any()) } returns Unit
|
||||
every { AuthManager.setBottomNavDisplayMode(any()) } returns Unit
|
||||
every { AuthManager.setTypingEffectEnabled(any()) } returns Unit
|
||||
every { AuthManager.setTypingEffectDelayMs(any()) } returns Unit
|
||||
every { AuthManager.setSelectedProfileId(any()) } answers {
|
||||
|
||||
Reference in new issue
Block a user