rename home to library

This commit is contained in:
Satindar Dhillon 2023-01-03 17:09:36 -08:00
parent 3aff827665
commit 8f695ee06d
10 changed files with 42 additions and 46 deletions

View file

@ -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)
}
}
}

View file

@ -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")
}

View file

@ -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)
)

View file

@ -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() {

View file

@ -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(

View file

@ -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)

View file

@ -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(

View file

@ -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")
}
}

View file

@ -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
)
}

View file

@ -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