Skip to content

Commit

Permalink
Fixing issue with the bottom sheet navigator
Browse files Browse the repository at this point in the history
  • Loading branch information
jakepurple13 committed Oct 6, 2023
1 parent 793baca commit 07b760e
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@ import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
Expand Down Expand Up @@ -115,8 +114,6 @@ import com.programmersbox.uiviews.settings.InfoSettings
import com.programmersbox.uiviews.settings.NotificationSettings
import com.programmersbox.uiviews.settings.PlaySettings
import com.programmersbox.uiviews.settings.SettingScreen
import com.programmersbox.uiviews.settings.SourceChooserScreen
import com.programmersbox.uiviews.settings.TranslationScreen
import com.programmersbox.uiviews.utils.ChromeCustomTabsNavigator
import com.programmersbox.uiviews.utils.ModalBottomSheetLayout
import com.programmersbox.uiviews.utils.NotificationLogo
Expand All @@ -125,7 +122,6 @@ import com.programmersbox.uiviews.utils.OtakuScaffold
import com.programmersbox.uiviews.utils.Screen
import com.programmersbox.uiviews.utils.SettingsHandling
import com.programmersbox.uiviews.utils.appVersion
import com.programmersbox.uiviews.utils.bottomSheet
import com.programmersbox.uiviews.utils.chromeCustomTabs
import com.programmersbox.uiviews.utils.currentDetailsUrl
import com.programmersbox.uiviews.utils.currentService
Expand Down Expand Up @@ -161,10 +157,6 @@ abstract class BaseMainActivity : AppCompatActivity() {
@Composable
protected open fun BottomBarAdditions() = Unit

companion object {
var showNavBar by mutableStateOf(true)
}

private var notificationCount by mutableIntStateOf(0)

@OptIn(
Expand Down Expand Up @@ -481,10 +473,6 @@ abstract class BaseMainActivity : AppCompatActivity() {
)
}

bottomSheet(Screen.TranslationScreen.route) { TranslationScreen() }

bottomSheet(Screen.SourceChooserScreen.route) { SourceChooserScreen() }

chromeCustomTabs()

with(genericInfo) { globalNavSetup() }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,11 +70,11 @@ import com.programmersbox.uiviews.utils.LocalSourcesRepository
import com.programmersbox.uiviews.utils.OtakuBannerBox
import com.programmersbox.uiviews.utils.OtakuScaffold
import com.programmersbox.uiviews.utils.PreviewTheme
import com.programmersbox.uiviews.utils.Screen
import com.programmersbox.uiviews.utils.components.InfiniteListHandler
import com.programmersbox.uiviews.utils.components.NoSourcesInstalled
import com.programmersbox.uiviews.utils.currentService
import com.programmersbox.uiviews.utils.navigateToDetails
import com.programmersbox.uiviews.utils.showSourceChooser
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.launch
import org.koin.compose.koinInject
Expand Down Expand Up @@ -132,6 +132,8 @@ fun RecentView(
.collect { scrollBehavior.state.contentOffset = 0f }
}

var showSourceChooser by showSourceChooser()

OtakuScaffold(
topBar = {
InsetSmallTopAppBar(
Expand All @@ -158,7 +160,7 @@ fun RecentView(
) {
Box(Modifier.fillMaxHeight()) {
IconButton(
onClick = { navController.navigate(Screen.SourceChooserScreen.route) },
onClick = { showSourceChooser = true },
modifier = Modifier.align(Alignment.Center)
) { Icon(Icons.Default.Source, null) }
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@ import com.programmersbox.uiviews.utils.components.ListBottomScreen
import com.programmersbox.uiviews.utils.components.ListBottomSheetItemModel
import com.programmersbox.uiviews.utils.currentService
import com.programmersbox.uiviews.utils.navigateChromeCustomTabs
import com.programmersbox.uiviews.utils.showSourceChooser
import com.programmersbox.uiviews.utils.showTranslationScreen
import kotlinx.coroutines.launch
import org.koin.compose.koinInject
import java.util.Locale
Expand Down Expand Up @@ -245,13 +247,15 @@ private fun SettingsScreen(

CategorySetting { Text(stringResource(R.string.general_menu_title)) }

var showSourceChooser by showSourceChooser()

PreferenceSetting(
settingTitle = { Text(stringResource(R.string.currentSource, source?.serviceName.orEmpty())) },
settingIcon = { Icon(Icons.Default.Source, null, modifier = Modifier.fillMaxSize()) },
modifier = Modifier.clickable(
indication = rememberRipple(),
interactionSource = remember { MutableInteractionSource() }
) { navController.navigate(Screen.SourceChooserScreen.route) }
) { showSourceChooser = true }
)

PreferenceSetting(
Expand Down Expand Up @@ -289,13 +293,15 @@ private fun SettingsScreen(
)
}

var showTranslationScreen by showTranslationScreen()

PreferenceSetting(
settingTitle = { Text(stringResource(R.string.viewTranslationModels)) },
settingIcon = { Icon(Icons.Default.Language, null, modifier = Modifier.fillMaxSize()) },
modifier = Modifier.clickable(
indication = rememberRipple(),
interactionSource = remember { MutableInteractionSource() },
onClick = { navController.navigate(Screen.TranslationScreen.route) }
onClick = { showTranslationScreen = true }
)
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import androidx.compose.material3.IconButton
import androidx.compose.material3.LargeTopAppBar
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.MediumTopAppBar
import androidx.compose.material3.ModalBottomSheet
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
Expand Down Expand Up @@ -84,6 +85,8 @@ import androidx.compose.ui.window.DialogProperties
import androidx.core.app.ActivityOptionsCompat
import com.programmersbox.uiviews.ChangingSettingsRepository
import com.programmersbox.uiviews.R
import com.programmersbox.uiviews.settings.SourceChooserScreen
import com.programmersbox.uiviews.settings.TranslationScreen
import org.koin.compose.koinInject
import kotlin.properties.Delegates

Expand Down Expand Up @@ -486,4 +489,36 @@ fun HideSystemBarsWhileOnScreen() {
onStart = { changingSettingsRepository.showNavBar.tryEmit(false) },
onResume = { changingSettingsRepository.showNavBar.tryEmit(false) }
)
}

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun showSourceChooser(): MutableState<Boolean> {
val showSourceChooser = remember { mutableStateOf(false) }

if (showSourceChooser.value) {
ModalBottomSheet(
onDismissRequest = { showSourceChooser.value = false }
) {
SourceChooserScreen()
}
}

return showSourceChooser
}

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun showTranslationScreen(): MutableState<Boolean> {
val showTranslationScreen = remember { mutableStateOf(false) }

if (showTranslationScreen.value) {
ModalBottomSheet(
onDismissRequest = { showTranslationScreen.value = false }
) {
TranslationScreen()
}
}

return showTranslationScreen
}
Original file line number Diff line number Diff line change
Expand Up @@ -62,14 +62,12 @@ sealed class Screen(val route: String) {
}
}

data object TranslationScreen : Screen("translation_models")
data object GlobalSearchScreen : Screen("global_search") {
fun navigate(navController: NavController, title: String? = null) {
navController.navigate("$route?searchFor=$title") { launchSingleTop = true }
}
}

data object SourceChooserScreen : Screen("source_chooser")
data object ExtensionListScreen : Screen("extension_list")
}

Expand Down

0 comments on commit 07b760e

Please sign in to comment.