Skip to content

Commit

Permalink
Fix issues caused by edge to edge (#1443)
Browse files Browse the repository at this point in the history
* Fix issues caused by edge to edge

* Fix remnant
  • Loading branch information
MV-GH committed Mar 11, 2024
1 parent 2315fff commit 9c8a378
Show file tree
Hide file tree
Showing 9 changed files with 78 additions and 14 deletions.
2 changes: 0 additions & 2 deletions app/src/main/java/com/jerboa/MainActivity.kt
Expand Up @@ -7,7 +7,6 @@ import android.os.Bundle
import android.util.Patterns
import android.widget.TextView
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.animation.EnterTransition
Expand Down Expand Up @@ -91,7 +90,6 @@ class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
val ctx = LocalContext.current

Expand Down
@@ -1,8 +1,12 @@
package com.jerboa.ui.components.community.list

import android.util.Log
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.consumeWindowInsets
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.systemBarsPadding
import androidx.compose.material3.DrawerState
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
Expand Down Expand Up @@ -45,6 +49,7 @@ fun CommunityListActivity(
blurNSFW: BlurNSFW,
drawerState: DrawerState,
showAvatar: Boolean,
padding: PaddingValues? = null,
) {
Log.d("jerboa", "got to community list activity")

Expand All @@ -55,8 +60,20 @@ fun CommunityListActivity(

val scope = rememberCoroutineScope()

val baseModifier = if (padding == null) {
Modifier
} else {
// https://issuetracker.google.com/issues/249727298
// Else it also applies the padding above the ime (keyboard)
Modifier.padding(padding)
.consumeWindowInsets(padding)
.systemBarsPadding()
}

Surface(color = MaterialTheme.colorScheme.background) {
Scaffold(
contentWindowInsets = WindowInsets(0, 0, 0, 0),
modifier = baseModifier,
topBar = {
CommunityListHeader(
openDrawer = {
Expand Down
@@ -1,6 +1,5 @@
package com.jerboa.ui.components.home

import android.annotation.SuppressLint
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.AppRegistration
import androidx.compose.material.icons.filled.Bookmarks
Expand Down Expand Up @@ -140,7 +139,6 @@ enum class NavTab(
}
}

@SuppressLint("UnusedMaterial3ScaffoldPaddingParameter")
@OptIn(
ExperimentalComposeUiApi::class,
)
Expand Down Expand Up @@ -238,7 +236,7 @@ fun BottomNavActivity(
)
}
},
) { _ ->
) { padding ->
NavHost(
navController = bottomNavController,
startDestination = NavTab.Home.name,
Expand All @@ -259,6 +257,7 @@ fun BottomNavActivity(
markAsReadOnScroll = appSettings.markAsReadOnScroll,
postActionBarMode = appSettings.postActionBarMode.toEnum(),
swipeToActionPreset = appSettings.swipeToActionPreset.toEnum(),
padding = padding,
)
}

Expand All @@ -270,6 +269,7 @@ fun BottomNavActivity(
blurNSFW = appSettings.blurNSFW.toEnum(),
drawerState = drawerState,
showAvatar = siteViewModel.showAvatar(),
padding = padding,
)
}

Expand All @@ -280,6 +280,7 @@ fun BottomNavActivity(
siteViewModel = siteViewModel,
blurNSFW = appSettings.blurNSFW.toEnum(),
drawerState = drawerState,
padding = padding,
)
}

Expand All @@ -289,6 +290,7 @@ fun BottomNavActivity(
accountViewModel = accountViewModel,
siteViewModel = siteViewModel,
drawerState = drawerState,
padding = padding,
)
}

Expand All @@ -298,6 +300,7 @@ fun BottomNavActivity(
accountViewModel = accountViewModel,
siteViewModel = siteViewModel,
drawerState = drawerState,
padding = padding,
)
}

Expand All @@ -308,6 +311,7 @@ fun BottomNavActivity(
siteViewModel = siteViewModel,
drawerState = drawerState,
blurNSFW = appSettings.blurNSFW.toEnum(),
padding = padding,
)
}

Expand All @@ -328,6 +332,7 @@ fun BottomNavActivity(
markAsReadOnScroll = appSettings.markAsReadOnScroll,
postActionBarMode = appSettings.postActionBarMode.toEnum(),
swipeToActionPreset = appSettings.swipeToActionPreset.toEnum(),
padding = padding,
)
}

Expand All @@ -348,6 +353,7 @@ fun BottomNavActivity(
markAsReadOnScroll = appSettings.markAsReadOnScroll,
postActionBarMode = appSettings.postActionBarMode.toEnum(),
swipeToActionPreset = appSettings.swipeToActionPreset.toEnum(),
padding = padding,
)
}
}
Expand Down
14 changes: 11 additions & 3 deletions app/src/main/java/com/jerboa/ui/components/home/HomeActivity.kt
Expand Up @@ -98,6 +98,7 @@ fun HomeActivity(
markAsReadOnScroll: Boolean,
postActionBarMode: PostActionBarMode,
swipeToActionPreset: SwipeToActionPreset,
padding: PaddingValues? = null,
) {
Log.d("jerboa", "got to home activity")

Expand Down Expand Up @@ -125,9 +126,16 @@ fun HomeActivity(
}
}

val baseModifier = if (padding == null) {
Modifier
} else {
// Only do bottom padding else it will apply status bar padding twice due nested scaffold
Modifier.padding(bottom = padding.calculateBottomPadding())
}

Scaffold(
modifier =
Modifier
baseModifier
.nestedScroll(scrollBehavior.nestedScrollConnection)
.semantics { testTagsAsResourceId = true },
snackbarHost = { JerboaSnackbarHost(snackbarHostState) },
Expand All @@ -147,9 +155,9 @@ fun HomeActivity(
onClickSiteInfo = appState::toSiteSideBar,
)
},
content = { padding ->
content = { innerPadding ->
MainPostListingsContent(
padding = padding,
padding = innerPadding,
homeViewModel = homeViewModel,
siteViewModel = siteViewModel,
appSettingsViewModel = appSettingsViewModel,
Expand Down
Expand Up @@ -85,6 +85,7 @@ fun InboxActivity(
siteViewModel: SiteViewModel,
accountViewModel: AccountViewModel,
blurNSFW: BlurNSFW,
padding: PaddingValues? = null,
) {
Log.d("jerboa", "got to inbox activity")

Expand All @@ -97,8 +98,15 @@ fun InboxActivity(

val inboxViewModel: InboxViewModel = viewModel(factory = InboxViewModel.Companion.Factory(account, siteViewModel))

val baseModifier = if (padding == null) {
Modifier
} else {
// Only do bottom padding else it will apply status bar padding twice due nested scaffold
Modifier.padding(bottom = padding.calculateBottomPadding())
}

Scaffold(
modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
modifier = baseModifier.nestedScroll(scrollBehavior.nestedScrollConnection),
snackbarHost = { JerboaSnackbarHost(snackbarHostState) },
topBar = {
InboxHeader(
Expand Down
Expand Up @@ -128,6 +128,7 @@ fun PersonProfileActivity(
postActionBarMode: PostActionBarMode,
onBack: (() -> Unit)? = null,
swipeToActionPreset: SwipeToActionPreset,
padding: PaddingValues? = null,
) {
Log.d("jerboa", "got to person activity")

Expand Down Expand Up @@ -165,8 +166,15 @@ fun PersonProfileActivity(
}
}

val baseModifier = if (padding == null) {
Modifier
} else {
// Only do bottom padding else it will apply status bar padding twice due nested scaffold
Modifier.padding(bottom = padding.calculateBottomPadding())
}

Scaffold(
modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
modifier = baseModifier.nestedScroll(scrollBehavior.nestedScrollConnection),
snackbarHost = { JerboaSnackbarHost(snackbarHostState) },
topBar = {
when (val profileRes = personProfileViewModel.personDetailsRes) {
Expand Down
@@ -1,6 +1,8 @@
package com.jerboa.ui.components.registrationapplications

import android.util.Log
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.DrawerState
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Scaffold
Expand Down Expand Up @@ -32,6 +34,7 @@ fun RegistrationApplicationsActivity(
drawerState: DrawerState,
siteViewModel: SiteViewModel,
accountViewModel: AccountViewModel,
padding: PaddingValues? = null,
) {
Log.d("jerboa", "got to registration applications activity")

Expand All @@ -45,8 +48,15 @@ fun RegistrationApplicationsActivity(
val registrationApplicationsViewModel: RegistrationApplicationsViewModel =
viewModel(factory = RegistrationApplicationsViewModel.Companion.Factory(account, siteViewModel))

val baseModifier = if (padding == null) {
Modifier
} else {
// Only do bottom padding else it will apply status bar padding twice due nested scaffold
Modifier.padding(bottom = padding.calculateBottomPadding())
}

Scaffold(
modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
modifier = baseModifier.nestedScroll(scrollBehavior.nestedScrollConnection),
snackbarHost = { JerboaSnackbarHost(snackbarHostState) },
topBar = {
RegistrationApplicationsHeader(
Expand Down Expand Up @@ -77,9 +87,9 @@ fun RegistrationApplicationsActivity(
},
)
},
content = { padding ->
content = { innerPadding ->
RegistrationApplications(
padding = padding,
padding = innerPadding,
appState = appState,
registrationApplicationsViewModel = registrationApplicationsViewModel,
siteViewModel = siteViewModel,
Expand Down
Expand Up @@ -71,6 +71,7 @@ fun ReportsActivity(
siteViewModel: SiteViewModel,
accountViewModel: AccountViewModel,
blurNSFW: BlurNSFW,
padding: PaddingValues? = null,
) {
Log.d("jerboa", "got to reports activity")

Expand All @@ -84,8 +85,15 @@ fun ReportsActivity(
val reportsViewModel: ReportsViewModel =
viewModel(factory = ReportsViewModel.Companion.Factory(account, siteViewModel))

val baseModifier = if (padding == null) {
Modifier
} else {
// Only do bottom padding else it will apply status bar padding twice due nested scaffold
Modifier.padding(bottom = padding.calculateBottomPadding())
}

Scaffold(
modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
modifier = baseModifier.nestedScroll(scrollBehavior.nestedScrollConnection),
snackbarHost = { JerboaSnackbarHost(snackbarHostState) },
topBar = {
ReportsHeader(
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values/themes.xml
Expand Up @@ -2,6 +2,7 @@
<resources>

<style name="Theme.Jerboa" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowBackground">@color/window_background</item>
</style>
</resources>

0 comments on commit 9c8a378

Please sign in to comment.