Update: Migrate Explore to use Compose solely

This commit is contained in:
machiav3lli 2022-05-03 03:25:55 +02:00
parent 2b5bb1d56f
commit e61572ed8c

View File

@ -18,13 +18,15 @@ import androidx.compose.material.icons.rounded.Sync
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold import androidx.compose.material3.Scaffold
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import com.looker.droidify.R import com.looker.droidify.R
import com.looker.droidify.content.Preferences import com.looker.droidify.content.Preferences
import com.looker.droidify.database.entity.Product
import com.looker.droidify.database.entity.Repository import com.looker.droidify.database.entity.Repository
import com.looker.droidify.databinding.FragmentComposeBinding
import com.looker.droidify.entity.Section import com.looker.droidify.entity.Section
import com.looker.droidify.service.SyncService import com.looker.droidify.service.SyncService
import com.looker.droidify.ui.activities.PrefsActivityX import com.looker.droidify.ui.activities.PrefsActivityX
@ -38,8 +40,6 @@ import com.looker.droidify.utility.isDarkTheme
class ExploreFragment : MainNavFragmentX() { class ExploreFragment : MainNavFragmentX() {
private lateinit var binding: FragmentComposeBinding
override val primarySource = Source.AVAILABLE override val primarySource = Source.AVAILABLE
override val secondarySource = Source.AVAILABLE override val secondarySource = Source.AVAILABLE
@ -51,9 +51,9 @@ class ExploreFragment : MainNavFragmentX() {
savedInstanceState: Bundle?, savedInstanceState: Bundle?,
): View { ): View {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = FragmentComposeBinding.inflate(inflater, container, false) return ComposeView(requireContext()).apply {
binding.lifecycleOwner = this setContent { ExplorePage() }
return binding.root }
} }
override fun setupLayout() { override fun setupLayout() {
@ -64,16 +64,15 @@ class ExploreFragment : MainNavFragmentX() {
// Avoid the compiler using the same class as observer // Avoid the compiler using the same class as observer
Log.d(this::class.java.canonicalName, this.toString()) Log.d(this::class.java.canonicalName, this.toString())
} }
viewModel.primaryProducts.observe(viewLifecycleOwner) { products ->
viewModel.categories.observe(viewLifecycleOwner) { categories ->
redrawPage(products, categories)
}
}
} }
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
private fun redrawPage(products: List<Product>?, categories: List<String> = emptyList()) { @Composable
binding.composeView.setContent { private fun ExplorePage() {
val products by viewModel.primaryProducts.observeAsState(null)
val categories by viewModel.categories.observeAsState(emptyList())
val searchQuery by viewModel.searchQuery.observeAsState("")
AppTheme( AppTheme(
darkTheme = when (Preferences[Preferences.Key.Theme]) { darkTheme = when (Preferences[Preferences.Key.Theme]) {
is Preferences.Theme.System -> isSystemInDarkTheme() is Preferences.Theme.System -> isSystemInDarkTheme()
@ -86,12 +85,12 @@ class ExploreFragment : MainNavFragmentX() {
topBar = { topBar = {
TopBar(title = stringResource(id = R.string.application_name)) { TopBar(title = stringResource(id = R.string.application_name)) {
ExpandableSearchAction( ExpandableSearchAction(
query = viewModel.searchQuery.value.orEmpty(), query = searchQuery.orEmpty(),
onClose = { onClose = {
viewModel.searchQuery.value = "" viewModel.setSearchQuery("")
}, },
onQueryChanged = { query -> onQueryChanged = { query ->
if (isResumed && query != viewModel.searchQuery.value) if (isResumed && query != searchQuery)
viewModel.setSearchQuery(query) viewModel.setSearchQuery(query)
} }
) )
@ -142,5 +141,4 @@ class ExploreFragment : MainNavFragmentX() {
} }
} }
} }
}
} }