diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt
index 688db9601..233a285d4 100644
--- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt
+++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt
@@ -35,7 +35,6 @@ class MainActivity : ComponentActivity() {
super.onCreate(savedInstanceState)
val loginViewModel: LoginViewModel by viewModels()
- val settingsViewModel: SettingsViewModel by viewModels()
val searchViewModel: SearchViewModel by viewModels()
val labelsViewModel: LabelsViewModel by viewModels()
val saveViewModel: SaveViewModel by viewModels()
@@ -64,7 +63,6 @@ class MainActivity : ComponentActivity() {
RootView(
loginViewModel,
searchViewModel,
- settingsViewModel,
labelsViewModel,
saveViewModel,
editInfoViewModel
diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/root/RootView.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/root/RootView.kt
index 9afd0ec0b..4d8feacb8 100644
--- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/root/RootView.kt
+++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/root/RootView.kt
@@ -17,8 +17,8 @@ import app.omnivore.omnivore.feature.library.SearchView
import app.omnivore.omnivore.feature.library.SearchViewModel
import app.omnivore.omnivore.feature.save.SaveViewModel
import app.omnivore.omnivore.feature.settings.SettingsScreen
-import app.omnivore.omnivore.feature.settings.SettingsViewModel
import app.omnivore.omnivore.feature.settings.about.AboutScreen
+import app.omnivore.omnivore.feature.settings.account.AccountScreen
import app.omnivore.omnivore.feature.web.WebViewScreen
import app.omnivore.omnivore.navigation.Routes
@@ -26,7 +26,6 @@ import app.omnivore.omnivore.navigation.Routes
fun RootView(
loginViewModel: LoginViewModel,
searchViewModel: SearchViewModel,
- settingsViewModel: SettingsViewModel,
labelsViewModel: LabelsViewModel,
saveViewModel: SaveViewModel,
editInfoViewModel: EditInfoViewModel,
@@ -38,7 +37,6 @@ fun RootView(
PrimaryNavigator(
loginViewModel = loginViewModel,
searchViewModel = searchViewModel,
- settingsViewModel = settingsViewModel,
labelsViewModel = labelsViewModel,
saveViewModel = saveViewModel,
editInfoViewModel = editInfoViewModel,
@@ -60,14 +58,16 @@ fun RootView(
fun PrimaryNavigator(
loginViewModel: LoginViewModel,
searchViewModel: SearchViewModel,
- settingsViewModel: SettingsViewModel,
labelsViewModel: LabelsViewModel,
saveViewModel: SaveViewModel,
editInfoViewModel: EditInfoViewModel,
) {
val navController = rememberNavController()
- NavHost(navController = navController, startDestination = Routes.Library.route) {
+ NavHost(
+ navController = navController,
+ startDestination = Routes.Library.route
+ ) {
composable(Routes.Library.route) {
LibraryView(
navController = navController,
@@ -79,23 +79,26 @@ fun PrimaryNavigator(
composable(Routes.Search.route) {
SearchView(
- viewModel = searchViewModel,
- navController = navController
+ viewModel = searchViewModel, navController = navController
)
}
composable(Routes.Settings.route) {
SettingsScreen(
loginViewModel = loginViewModel,
- settingsViewModel = settingsViewModel,
navController = navController
)
}
composable(Routes.About.route) {
AboutScreen(
- navController = navController,
- settingsViewModel = settingsViewModel
+ navController = navController
+ )
+ }
+
+ composable(Routes.Account.route) {
+ AccountScreen(
+ navController = navController
)
}
diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/settings/LogoutDialog.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/settings/LogoutDialog.kt
index 6c95a0092..0e8804908 100644
--- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/settings/LogoutDialog.kt
+++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/settings/LogoutDialog.kt
@@ -1,8 +1,8 @@
package app.omnivore.omnivore.feature.settings
import androidx.compose.material3.AlertDialog
-import androidx.compose.material3.Button
import androidx.compose.material3.Text
+import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
@@ -20,8 +20,7 @@ fun LogoutDialog(onClose: (Boolean) -> Unit) {
Text(stringResource(R.string.logout_dialog_confirm_msg))
},
confirmButton = {
- Button(onClick = {
- // Sign out google users
+ TextButton(onClick = {
val signInOptions =
GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).build()
@@ -33,7 +32,7 @@ fun LogoutDialog(onClose: (Boolean) -> Unit) {
}
},
dismissButton = {
- Button(onClick = { onClose(false) }) {
+ TextButton(onClick = { onClose(false) }) {
Text(stringResource(R.string.logout_dialog_action_cancel))
}
})
diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/settings/SettingsScreen.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/settings/SettingsScreen.kt
index 22bc7b891..4d99f2bdb 100644
--- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/settings/SettingsScreen.kt
+++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/settings/SettingsScreen.kt
@@ -31,15 +31,13 @@ import androidx.compose.ui.unit.sp
import androidx.navigation.NavHostController
import app.omnivore.omnivore.R
import app.omnivore.omnivore.feature.auth.LoginViewModel
-import app.omnivore.omnivore.feature.settings.account.ManageAccountDialog
import app.omnivore.omnivore.navigation.Routes
@OptIn(ExperimentalMaterial3Api::class)
@Composable
internal fun SettingsScreen(
loginViewModel: LoginViewModel,
- settingsViewModel: SettingsViewModel,
- navController: NavHostController,
+ navController: NavHostController
) {
Scaffold(topBar = {
TopAppBar(
@@ -60,7 +58,6 @@ internal fun SettingsScreen(
}) { paddingValues ->
SettingsViewContent(
loginViewModel = loginViewModel,
- settingsViewModel = settingsViewModel,
navController = navController,
paddingValues = paddingValues
)
@@ -70,12 +67,10 @@ internal fun SettingsScreen(
@Composable
fun SettingsViewContent(
loginViewModel: LoginViewModel,
- settingsViewModel: SettingsViewModel,
navController: NavHostController,
paddingValues: PaddingValues
) {
val showLogoutDialog = remember { mutableStateOf(false) }
- val showManageAccountDialog = remember { mutableStateOf(false) }
val state = rememberLazyListState()
@@ -86,7 +81,7 @@ fun SettingsViewContent(
item {
SettingRow(title = stringResource(R.string.settings_view_setting_row_manage_account)) {
- showManageAccountDialog.value = true
+ navController.navigate(Routes.Account.route)
}
}
@@ -113,13 +108,6 @@ fun SettingsViewContent(
showLogoutDialog.value = false
}
}
-
- if (showManageAccountDialog.value) {
- ManageAccountDialog(
- onDismiss = { showManageAccountDialog.value = false },
- settingsViewModel = settingsViewModel
- )
- }
}
diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/settings/about/AboutScreen.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/settings/about/AboutScreen.kt
index 984c62301..13ee241d3 100644
--- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/settings/about/AboutScreen.kt
+++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/settings/about/AboutScreen.kt
@@ -23,11 +23,11 @@ import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.unit.dp
+import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.NavHostController
import app.omnivore.omnivore.BuildConfig
import app.omnivore.omnivore.R
import app.omnivore.omnivore.core.ui.LinkIcon
-import app.omnivore.omnivore.feature.settings.LogoHeader
import app.omnivore.omnivore.feature.settings.RELEASE_URL
import app.omnivore.omnivore.feature.settings.SettingRow
import app.omnivore.omnivore.feature.settings.SettingsViewModel
@@ -37,7 +37,7 @@ import app.omnivore.omnivore.navigation.Routes
@Composable
internal fun AboutScreen(
navController: NavHostController,
- settingsViewModel: SettingsViewModel
+ settingsViewModel: SettingsViewModel = hiltViewModel()
) {
val uriHandler = LocalUriHandler.current
@@ -67,14 +67,6 @@ internal fun AboutScreen(
LogoHeader()
}
- item {
- SettingRow(
- title = stringResource(R.string.about_view_row_version),
- subtitle = getVersionName(),
- onClick = { },
- )
- }
-
item {
SettingRow(
title = stringResource(R.string.about_view_row_whats_new),
@@ -106,6 +98,14 @@ internal fun AboutScreen(
}
}
+ item {
+ SettingRow(
+ title = stringResource(R.string.about_view_row_version),
+ subtitle = getVersionName(),
+ onClick = { },
+ )
+ }
+
item {
Row(
modifier = Modifier
diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/settings/LogoHeader.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/settings/about/LogoHeader.kt
similarity index 95%
rename from android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/settings/LogoHeader.kt
rename to android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/settings/about/LogoHeader.kt
index 9fc95df41..9f2a77933 100644
--- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/settings/LogoHeader.kt
+++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/settings/about/LogoHeader.kt
@@ -1,4 +1,4 @@
-package app.omnivore.omnivore.feature.settings
+package app.omnivore.omnivore.feature.settings.about
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/settings/account/AccountScreen.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/settings/account/AccountScreen.kt
index 57d8cde41..bc7977bb0 100644
--- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/settings/account/AccountScreen.kt
+++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/feature/settings/account/AccountScreen.kt
@@ -1,70 +1,57 @@
package app.omnivore.omnivore.feature.settings.account
-import androidx.compose.foundation.clickable
-import androidx.compose.foundation.layout.Arrangement
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.Row
-import androidx.compose.foundation.layout.Spacer
-import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.height
-import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.rememberScrollState
-import androidx.compose.foundation.shape.RoundedCornerShape
-import androidx.compose.foundation.verticalScroll
+import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.filled.Refresh
+import androidx.compose.material.icons.automirrored.outlined.ArrowBack
+import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
-import androidx.compose.material3.Surface
+import androidx.compose.material3.IconButton
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
+import androidx.compose.material3.TopAppBar
+import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.runtime.Composable
-import androidx.compose.ui.Alignment
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
-import androidx.compose.ui.unit.dp
-import androidx.compose.ui.window.Dialog
+import androidx.hilt.navigation.compose.hiltViewModel
+import androidx.navigation.NavHostController
import app.omnivore.omnivore.R
+import app.omnivore.omnivore.feature.settings.SettingRow
import app.omnivore.omnivore.feature.settings.SettingsViewModel
+@OptIn(ExperimentalMaterial3Api::class)
@Composable
-fun ManageAccountDialog(onDismiss: () -> Unit, settingsViewModel: SettingsViewModel) {
- Dialog(onDismissRequest = { onDismiss() }) {
- Surface(
- shape = RoundedCornerShape(16.dp),
- color = Color.White,
- modifier = Modifier.height(300.dp)
- ) {
- ManageAccountView(settingsViewModel = settingsViewModel)
- }
- }
-}
+internal fun AccountScreen(
+ navController: NavHostController,
+ settingsViewModel: SettingsViewModel = hiltViewModel()
+) {
+ Scaffold(
+ topBar = {
+ TopAppBar(
+ title = { Text(stringResource(R.string.manage_account_title)) },
+ navigationIcon = {
+ IconButton(onClick = { navController.navigateUp() }) {
+ Icon(
+ imageVector = Icons.AutoMirrored.Outlined.ArrowBack, contentDescription = null
+ )
+ }
-@Composable
-fun ManageAccountView(settingsViewModel: SettingsViewModel) {
- Column(
- modifier = Modifier.padding(top = 6.dp, start = 6.dp, end = 6.dp, bottom = 6.dp)
- ) {
- Row(
- modifier = Modifier
- .fillMaxWidth()
- .padding(top = 12.dp, bottom = 12.dp),
- horizontalArrangement = Arrangement.Center
+ },
+ colors = TopAppBarDefaults.topAppBarColors(
+ containerColor = MaterialTheme.colorScheme.background
+ ),
+ )
+ },
+ ) { contentPadding ->
+ LazyColumn(
+ contentPadding = contentPadding,
) {
- Text(stringResource(R.string.manage_account_title))
- }
-
- Column(
- modifier = Modifier.verticalScroll(rememberScrollState())
- ) {
- Row(
- verticalAlignment = Alignment.CenterVertically,
- modifier = Modifier.clickable(onClick = { settingsViewModel.resetDataCache() })
- ) {
- Text(stringResource(R.string.manage_account_action_reset_data_cache))
- Spacer(modifier = Modifier.weight(1.0F))
- Icon(imageVector = Icons.Filled.Refresh, contentDescription = null)
+ item {
+ SettingRow(
+ title = stringResource(R.string.manage_account_action_reset_data_cache),
+ onClick = { settingsViewModel.resetDataCache() },
+ )
}
}
}
}
-
diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/navigation/Routes.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/navigation/Routes.kt
index e10ee6e94..53a39b62d 100644
--- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/navigation/Routes.kt
+++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/navigation/Routes.kt
@@ -4,6 +4,7 @@ sealed class Routes(val route: String) {
object Library : Routes("Library")
object Settings : Routes("Settings")
object About : Routes("About")
+ object Account : Routes("Account")
object Search : Routes("Search")
object Documentation : Routes("Documentation")
object PrivacyPolicy : Routes("PrivacyPolicy")
diff --git a/android/Omnivore/app/src/main/res/values/strings.xml b/android/Omnivore/app/src/main/res/values/strings.xml
index 451b66fa4..fba0f250b 100644
--- a/android/Omnivore/app/src/main/res/values/strings.xml
+++ b/android/Omnivore/app/src/main/res/values/strings.xml
@@ -212,7 +212,7 @@
Manage Account
Logout
-
+
About
Version
What\'s new