Skip to content

Commit

Permalink
More cleaning up
Browse files Browse the repository at this point in the history
  • Loading branch information
jakepurple13 committed Oct 6, 2023
1 parent 07b760e commit ce0e7fe
Show file tree
Hide file tree
Showing 10 changed files with 124 additions and 516 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import android.content.Intent
import android.net.Uri
import android.os.Build
import android.os.Bundle
import androidx.activity.compose.BackHandler
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
Expand Down Expand Up @@ -47,7 +46,6 @@ import androidx.compose.material3.Badge
import androidx.compose.material3.BadgedBox
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.NavigationBar
import androidx.compose.material3.NavigationBarItem
import androidx.compose.material3.NavigationRail
Expand All @@ -63,7 +61,6 @@ import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
Expand All @@ -87,7 +84,6 @@ import androidx.navigation.navArgument
import androidx.navigation.navDeepLink
import androidx.navigation.navigation
import com.google.accompanist.drawablepainter.rememberDrawablePainter
import com.google.accompanist.navigation.material.ExperimentalMaterialNavigationApi
import com.google.accompanist.permissions.ExperimentalPermissionsApi
import com.google.accompanist.permissions.rememberPermissionState
import com.programmersbox.extensionloader.SourceRepository
Expand Down Expand Up @@ -115,7 +111,6 @@ import com.programmersbox.uiviews.settings.NotificationSettings
import com.programmersbox.uiviews.settings.PlaySettings
import com.programmersbox.uiviews.settings.SettingScreen
import com.programmersbox.uiviews.utils.ChromeCustomTabsNavigator
import com.programmersbox.uiviews.utils.ModalBottomSheetLayout
import com.programmersbox.uiviews.utils.NotificationLogo
import com.programmersbox.uiviews.utils.OtakuMaterialTheme
import com.programmersbox.uiviews.utils.OtakuScaffold
Expand All @@ -126,7 +121,6 @@ import com.programmersbox.uiviews.utils.chromeCustomTabs
import com.programmersbox.uiviews.utils.currentDetailsUrl
import com.programmersbox.uiviews.utils.currentService
import com.programmersbox.uiviews.utils.dispatchIo
import com.programmersbox.uiviews.utils.rememberBottomSheetNavigator
import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.firstOrNull
import kotlinx.coroutines.flow.flow
Expand Down Expand Up @@ -160,10 +154,8 @@ abstract class BaseMainActivity : AppCompatActivity() {
private var notificationCount by mutableIntStateOf(0)

@OptIn(
ExperimentalMaterialNavigationApi::class,
ExperimentalMaterial3Api::class,
ExperimentalMaterial3WindowSizeClassApi::class,
ExperimentalMaterialApi::class
ExperimentalMaterial3WindowSizeClassApi::class
)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand All @@ -186,65 +178,53 @@ abstract class BaseMainActivity : AppCompatActivity() {
.launchIn(lifecycleScope)

setContent {
val bottomSheetNavigator = rememberBottomSheetNavigator(skipHalfExpanded = true)
navController = rememberNavController(
bottomSheetNavigator,
remember { ChromeCustomTabsNavigator(this) }
)

val scope = rememberCoroutineScope()
BackHandler(bottomSheetNavigator.sheetState.isVisible) {
scope.launch { bottomSheetNavigator.sheetState.hide() }
}

val windowSize = calculateWindowSizeClass(activity = this@BaseMainActivity)

OtakuMaterialTheme(navController, genericInfo) {
AskForNotificationPermissions()

val showAllItem by settingsHandling.showAll.collectAsStateWithLifecycle(false)

ModalBottomSheetLayout(
bottomSheetNavigator = bottomSheetNavigator,
sheetBackgroundColor = MaterialTheme.colorScheme.surface,
sheetContentColor = MaterialTheme.colorScheme.onSurface,
scrimColor = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.32f)
) {
val navType = when (windowSize.widthSizeClass) {
WindowWidthSizeClass.Expanded -> NavigationBarType.Rail
else -> NavigationBarType.Bottom
}
val navType = when (windowSize.widthSizeClass) {
WindowWidthSizeClass.Expanded -> NavigationBarType.Rail
else -> NavigationBarType.Bottom
}

val navBackStackEntry by navController.currentBackStackEntryAsState()
val currentDestination = navBackStackEntry?.destination
val navBackStackEntry by navController.currentBackStackEntryAsState()
val currentDestination = navBackStackEntry?.destination

val showNavBar by changingSettingsRepository.showNavBar.collectAsStateWithLifecycle(true)
val showNavBar by changingSettingsRepository.showNavBar.collectAsStateWithLifecycle(true)

Row(Modifier.fillMaxSize()) {
Rail(
navController = navController,
showNavBar = showNavBar,
navType = navType,
showAllItem = showAllItem,
currentDestination = currentDestination
)
OtakuScaffold(
bottomBar = {
BottomNav(
navController = navController,
showNavBar = showNavBar,
navType = navType,
showAllItem = showAllItem,
currentDestination = currentDestination
)
}
) { innerPadding ->
NavHost(
genericInfo.DialogSetups()

Row(Modifier.fillMaxSize()) {
Rail(
navController = navController,
showNavBar = showNavBar,
navType = navType,
showAllItem = showAllItem,
currentDestination = currentDestination
)
OtakuScaffold(
bottomBar = {
BottomNav(
navController = navController,
startDestination = Screen.RecentScreen.route,
modifier = Modifier.padding(innerPadding)
) { navGraph(customPreferences, windowSize) }
showNavBar = showNavBar,
navType = navType,
showAllItem = showAllItem,
currentDestination = currentDestination
)
}
) { innerPadding ->
NavHost(
navController = navController,
startDestination = Screen.RecentScreen.route,
modifier = Modifier.padding(innerPadding)
) { navGraph(customPreferences, windowSize) }
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,4 +103,7 @@ interface GenericInfo {
fun NavGraphBuilder.globalNavSetup() = Unit

fun NavGraphBuilder.settingsNavSetup(): Unit = Unit

@Composable
fun DialogSetups() = Unit
}
Original file line number Diff line number Diff line change
Expand Up @@ -433,10 +433,11 @@ private fun AccountSettings(
}

@Composable
fun SourceChooserScreen() {
fun SourceChooserScreen(
onChosen: () -> Unit,
) {
val scope = rememberCoroutineScope()
val context = LocalContext.current
val navController = LocalNavController.current
val sourceRepository = LocalSourcesRepository.current
val currentSourceRepository = LocalCurrentSource.current

Expand All @@ -445,7 +446,7 @@ fun SourceChooserScreen() {
title = stringResource(R.string.chooseASource),
list = sourceRepository.list.filterNot { it.apiService.notWorking },
onClick = { service ->
navController.popBackStack()
onChosen()
scope.launch {
service.let {
currentSourceRepository.emit(it.apiService)
Expand All @@ -465,7 +466,7 @@ fun SourceChooserScreen() {
@Composable
private fun SourceChooserPreview() {
PreviewTheme {
SourceChooserScreen()
SourceChooserScreen {}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ import androidx.compose.material3.darkColorScheme
import androidx.compose.material3.dynamicDarkColorScheme
import androidx.compose.material3.dynamicLightColorScheme
import androidx.compose.material3.lightColorScheme
import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.MutableState
Expand All @@ -58,6 +59,7 @@ import androidx.compose.runtime.mutableFloatStateOf
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.saveable.listSaver
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
Expand Down Expand Up @@ -87,6 +89,7 @@ import com.programmersbox.uiviews.ChangingSettingsRepository
import com.programmersbox.uiviews.R
import com.programmersbox.uiviews.settings.SourceChooserScreen
import com.programmersbox.uiviews.settings.TranslationScreen
import kotlinx.coroutines.launch
import org.koin.compose.koinInject
import kotlin.properties.Delegates

Expand Down Expand Up @@ -495,12 +498,20 @@ fun HideSystemBarsWhileOnScreen() {
@Composable
fun showSourceChooser(): MutableState<Boolean> {
val showSourceChooser = remember { mutableStateOf(false) }
val state = rememberModalBottomSheetState()
val scope = rememberCoroutineScope()

if (showSourceChooser.value) {
ModalBottomSheet(
onDismissRequest = { showSourceChooser.value = false }
onDismissRequest = { showSourceChooser.value = false },
sheetState = state
) {
SourceChooserScreen()
SourceChooserScreen(
onChosen = {
scope.launch { state.hide() }
.invokeOnCompletion { showSourceChooser.value = false }
}
)
}
}

Expand Down
Loading

0 comments on commit ce0e7fe

Please sign in to comment.