mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
rename home to library
This commit is contained in:
parent
3aff827665
commit
8f695ee06d
10 changed files with 42 additions and 46 deletions
|
|
@ -14,7 +14,7 @@ import androidx.core.view.ViewCompat
|
|||
import androidx.core.view.WindowCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import app.omnivore.omnivore.ui.auth.LoginViewModel
|
||||
import app.omnivore.omnivore.ui.home.HomeViewModel
|
||||
import app.omnivore.omnivore.ui.library.LibraryViewModel
|
||||
import app.omnivore.omnivore.ui.reader.WebReaderViewModel
|
||||
import app.omnivore.omnivore.ui.root.RootView
|
||||
import app.omnivore.omnivore.ui.theme.OmnivoreTheme
|
||||
|
|
@ -31,7 +31,7 @@ class MainActivity : ComponentActivity() {
|
|||
super.onCreate(savedInstanceState)
|
||||
|
||||
val loginViewModel: LoginViewModel by viewModels()
|
||||
val homeViewModel: HomeViewModel by viewModels()
|
||||
val libraryViewModel: LibraryViewModel by viewModels()
|
||||
val webReaderViewModel: WebReaderViewModel by viewModels()
|
||||
|
||||
val context = this
|
||||
|
|
@ -53,7 +53,7 @@ class MainActivity : ComponentActivity() {
|
|||
.fillMaxSize()
|
||||
.background(color = Color.Black)
|
||||
) {
|
||||
RootView(loginViewModel, homeViewModel, webReaderViewModel)
|
||||
RootView(loginViewModel, libraryViewModel, webReaderViewModel)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package app.omnivore.omnivore
|
||||
|
||||
sealed class Routes(val route: String) {
|
||||
object Home : Routes("Home")
|
||||
object Library : Routes("Library")
|
||||
object WebAppReader : Routes("WebAppReader")
|
||||
object Settings: Routes("Settings")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
package app.omnivore.omnivore.ui.home
|
||||
package app.omnivore.omnivore.ui.library
|
||||
|
||||
import android.content.Intent
|
||||
import androidx.compose.foundation.background
|
||||
|
|
@ -28,23 +28,23 @@ import kotlinx.coroutines.flow.distinctUntilChanged
|
|||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
fun HomeView(
|
||||
homeViewModel: HomeViewModel,
|
||||
fun LibraryView(
|
||||
libraryViewModel: LibraryViewModel,
|
||||
navController: NavHostController
|
||||
) {
|
||||
val searchText: String by homeViewModel.searchTextLiveData.observeAsState("")
|
||||
val searchText: String by libraryViewModel.searchTextLiveData.observeAsState("")
|
||||
|
||||
Scaffold(
|
||||
topBar = {
|
||||
SearchBar(
|
||||
searchText = searchText,
|
||||
onSearchTextChanged = { homeViewModel.updateSearchText(it) },
|
||||
onSearchTextChanged = { libraryViewModel.updateSearchText(it) },
|
||||
onSettingsIconClick = { navController.navigate(Routes.Settings.route) }
|
||||
)
|
||||
}
|
||||
) { paddingValues ->
|
||||
HomeViewContent(
|
||||
homeViewModel,
|
||||
LibraryViewContent(
|
||||
libraryViewModel,
|
||||
navController,
|
||||
modifier = Modifier
|
||||
.padding(
|
||||
|
|
@ -57,8 +57,8 @@ fun HomeView(
|
|||
|
||||
@OptIn(ExperimentalMaterialApi::class)
|
||||
@Composable
|
||||
fun HomeViewContent(
|
||||
homeViewModel: HomeViewModel,
|
||||
fun LibraryViewContent(
|
||||
libraryViewModel: LibraryViewModel,
|
||||
navController: NavHostController,
|
||||
modifier: Modifier
|
||||
) {
|
||||
|
|
@ -66,11 +66,11 @@ fun HomeViewContent(
|
|||
val listState = rememberLazyListState()
|
||||
|
||||
val pullRefreshState = rememberPullRefreshState(
|
||||
refreshing = homeViewModel.isRefreshing,
|
||||
onRefresh = { homeViewModel.refresh() }
|
||||
refreshing = libraryViewModel.isRefreshing,
|
||||
onRefresh = { libraryViewModel.refresh() }
|
||||
)
|
||||
|
||||
val linkedItems: List<LinkedItem> by homeViewModel.itemsLiveData.observeAsState(listOf())
|
||||
val linkedItems: List<LinkedItem> by libraryViewModel.itemsLiveData.observeAsState(listOf())
|
||||
|
||||
Box(
|
||||
modifier = Modifier
|
||||
|
|
@ -98,17 +98,17 @@ fun HomeViewContent(
|
|||
navController.navigate("WebReader/${item.slug}")
|
||||
}
|
||||
},
|
||||
actionHandler = { homeViewModel.handleLinkedItemAction(item.id, it) }
|
||||
actionHandler = { libraryViewModel.handleLinkedItemAction(item.id, it) }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
InfiniteListHandler(listState = listState) {
|
||||
homeViewModel.load()
|
||||
libraryViewModel.load()
|
||||
}
|
||||
|
||||
PullRefreshIndicator(
|
||||
refreshing = homeViewModel.isRefreshing,
|
||||
refreshing = libraryViewModel.isRefreshing,
|
||||
state = pullRefreshState,
|
||||
modifier = Modifier.align(Alignment.TopCenter)
|
||||
)
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package app.omnivore.omnivore.ui.home
|
||||
package app.omnivore.omnivore.ui.library
|
||||
|
||||
import android.util.Log
|
||||
import androidx.compose.runtime.getValue
|
||||
|
|
@ -10,7 +10,6 @@ import androidx.lifecycle.viewModelScope
|
|||
import app.omnivore.omnivore.DataService
|
||||
import app.omnivore.omnivore.persistence.entities.LinkedItem
|
||||
import app.omnivore.omnivore.networking.*
|
||||
import app.omnivore.omnivore.persistence.AppDatabase
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
|
|
@ -19,7 +18,7 @@ import kotlinx.coroutines.withContext
|
|||
import javax.inject.Inject
|
||||
|
||||
@HiltViewModel
|
||||
class HomeViewModel @Inject constructor(
|
||||
class LibraryViewModel @Inject constructor(
|
||||
private val networker: Networker,
|
||||
private val dataService: DataService
|
||||
): ViewModel() {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package app.omnivore.omnivore.ui.home
|
||||
package app.omnivore.omnivore.ui.library
|
||||
|
||||
import androidx.compose.animation.AnimatedVisibility
|
||||
import androidx.compose.animation.fadeIn
|
||||
|
|
@ -38,7 +38,7 @@ fun SearchBar(
|
|||
if (showSearchField) {
|
||||
SearchField(searchText, onSearchTextChanged)
|
||||
} else {
|
||||
Text("Home")
|
||||
Text("Library")
|
||||
}
|
||||
},
|
||||
colors = TopAppBarDefaults.smallTopAppBarColors(
|
||||
|
|
@ -13,7 +13,7 @@ import androidx.compose.ui.text.style.TextOverflow
|
|||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import app.omnivore.omnivore.persistence.entities.LinkedItem
|
||||
import app.omnivore.omnivore.ui.home.LinkedItemAction
|
||||
import app.omnivore.omnivore.ui.library.LinkedItemAction
|
||||
import coil.compose.rememberAsyncImagePainter
|
||||
|
||||
@OptIn(ExperimentalFoundationApi::class)
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import androidx.compose.material3.DropdownMenuItem
|
|||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import app.omnivore.omnivore.ui.home.LinkedItemAction
|
||||
import app.omnivore.omnivore.ui.library.LinkedItemAction
|
||||
|
||||
@Composable
|
||||
fun LinkedItemContextMenu(
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import app.omnivore.omnivore.DatastoreKeys
|
|||
import app.omnivore.omnivore.DatastoreRepository
|
||||
import app.omnivore.omnivore.persistence.entities.LinkedItem
|
||||
import app.omnivore.omnivore.networking.*
|
||||
import app.omnivore.omnivore.ui.home.LinkedItemAction
|
||||
import app.omnivore.omnivore.ui.library.LinkedItemAction
|
||||
import com.google.gson.Gson
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
|
|
@ -69,28 +69,28 @@ class WebReaderViewModel @Inject constructor(
|
|||
LinkedItemAction.Delete -> {
|
||||
viewModelScope.launch {
|
||||
networker.deleteLinkedItem(itemID)
|
||||
popToHomeView(itemID)
|
||||
popToLibraryView(itemID)
|
||||
}
|
||||
}
|
||||
LinkedItemAction.Archive -> {
|
||||
viewModelScope.launch {
|
||||
networker.archiveLinkedItem(itemID)
|
||||
popToHomeView(itemID)
|
||||
popToLibraryView(itemID)
|
||||
}
|
||||
}
|
||||
LinkedItemAction.Unarchive -> {
|
||||
viewModelScope.launch {
|
||||
networker.unarchiveLinkedItem(itemID)
|
||||
popToHomeView(itemID)
|
||||
popToLibraryView(itemID)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun popToHomeView(itemID: String) {
|
||||
private fun popToLibraryView(itemID: String) {
|
||||
CoroutineScope(Dispatchers.Main).launch {
|
||||
// TODO: pop to home
|
||||
Log.d("maxx", "should pop to home and remove item with ID: $itemID")
|
||||
// TODO: pop to library
|
||||
Log.d("maxx", "should pop to library and remove item with ID: $itemID")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,15 +16,15 @@ import androidx.navigation.compose.rememberNavController
|
|||
import app.omnivore.omnivore.Routes
|
||||
import app.omnivore.omnivore.ui.auth.LoginViewModel
|
||||
import app.omnivore.omnivore.ui.auth.WelcomeScreen
|
||||
import app.omnivore.omnivore.ui.home.HomeView
|
||||
import app.omnivore.omnivore.ui.home.HomeViewModel
|
||||
import app.omnivore.omnivore.ui.library.LibraryView
|
||||
import app.omnivore.omnivore.ui.library.LibraryViewModel
|
||||
import app.omnivore.omnivore.ui.reader.*
|
||||
import com.google.accompanist.systemuicontroller.rememberSystemUiController
|
||||
|
||||
@Composable
|
||||
fun RootView(
|
||||
loginViewModel: LoginViewModel,
|
||||
homeViewModel: HomeViewModel,
|
||||
libraryViewModel: LibraryViewModel,
|
||||
webReaderViewModel: WebReaderViewModel
|
||||
) {
|
||||
val hasAuthToken: Boolean by loginViewModel.hasAuthTokenLiveData.observeAsState(false)
|
||||
|
|
@ -47,7 +47,7 @@ fun RootView(
|
|||
if (hasAuthToken) {
|
||||
PrimaryNavigator(
|
||||
loginViewModel = loginViewModel,
|
||||
homeViewModel = homeViewModel,
|
||||
libraryViewModel = libraryViewModel,
|
||||
webReaderViewModel = webReaderViewModel
|
||||
)
|
||||
} else {
|
||||
|
|
@ -66,15 +66,15 @@ fun RootView(
|
|||
@Composable
|
||||
fun PrimaryNavigator(
|
||||
loginViewModel: LoginViewModel,
|
||||
homeViewModel: HomeViewModel,
|
||||
libraryViewModel: LibraryViewModel,
|
||||
webReaderViewModel: WebReaderViewModel
|
||||
) {
|
||||
val navController = rememberNavController()
|
||||
|
||||
NavHost(navController = navController, startDestination = Routes.Home.route) {
|
||||
composable(Routes.Home.route) {
|
||||
HomeView(
|
||||
homeViewModel = homeViewModel,
|
||||
NavHost(navController = navController, startDestination = Routes.Library.route) {
|
||||
composable(Routes.Library.route) {
|
||||
LibraryView(
|
||||
libraryViewModel = libraryViewModel,
|
||||
navController = navController
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,14 +1,11 @@
|
|||
import android.annotation.SuppressLint
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.Home
|
||||
import androidx.compose.material3.*
|
||||
import androidx.compose.material3.TopAppBarDefaults.smallTopAppBarColors
|
||||
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.platform.LocalContext
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.navigation.NavHostController
|
||||
|
|
@ -34,7 +31,7 @@ fun SettingsView(
|
|||
containerColor = MaterialTheme.colorScheme.surfaceVariant
|
||||
),
|
||||
actions = {
|
||||
IconButton(onClick = { navController.navigate(Routes.Home.route) }) {
|
||||
IconButton(onClick = { navController.navigate(Routes.Library.route) }) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Home,
|
||||
contentDescription = null
|
||||
|
|
|
|||
Loading…
Reference in a new issue