Skip to content

Commit 19fae56

Browse files
authored
Merge pull request #679 from Daily-DAYO/bug/issue-677
[bug] BottomNavigationView Overlaps with System Navigation Bar on Android 15
2 parents 5de0f94 + 9f5bfb3 commit 19fae56

File tree

16 files changed

+486
-466
lines changed

16 files changed

+486
-466
lines changed

presentation/src/main/java/daily/dayo/presentation/screen/account/AccountScreen.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ package daily.dayo.presentation.screen.account
33
import android.annotation.SuppressLint
44
import androidx.compose.foundation.layout.Box
55
import androidx.compose.foundation.layout.padding
6-
import androidx.compose.material.ExperimentalMaterialApi
76
import androidx.compose.material.Scaffold
7+
import androidx.compose.material3.ExperimentalMaterial3Api
88
import androidx.compose.material3.SnackbarHost
99
import androidx.compose.material3.SnackbarHostState
1010
import androidx.compose.runtime.Composable
@@ -18,7 +18,7 @@ import androidx.navigation.compose.NavHost
1818
import daily.dayo.presentation.view.dialog.getBottomSheetDialogState
1919

2020
@SuppressLint("UnusedMaterialScaffoldPaddingParameter")
21-
@OptIn(ExperimentalMaterialApi::class)
21+
@OptIn(ExperimentalMaterial3Api::class)
2222
@Composable
2323
internal fun AccountScreen(
2424
navigator: AccountNavigator = rememberAccountNavigator()

presentation/src/main/java/daily/dayo/presentation/screen/account/SetProfileSetupView.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import androidx.compose.foundation.layout.height
1111
import androidx.compose.foundation.layout.size
1212
import androidx.compose.foundation.layout.wrapContentHeight
1313
import androidx.compose.foundation.shape.RoundedCornerShape
14-
import androidx.compose.material.ExperimentalMaterialApi
15-
import androidx.compose.material.ModalBottomSheetState
14+
import androidx.compose.material3.BottomSheetScaffoldState
15+
import androidx.compose.material3.ExperimentalMaterial3Api
1616
import androidx.compose.runtime.Composable
1717
import androidx.compose.runtime.MutableState
1818
import androidx.compose.runtime.mutableStateOf
@@ -34,12 +34,12 @@ import daily.dayo.presentation.view.dialog.getBottomSheetDialogState
3434
import kotlinx.coroutines.CoroutineScope
3535
import kotlinx.coroutines.launch
3636

37-
@OptIn(ExperimentalMaterialApi::class)
37+
@OptIn(ExperimentalMaterial3Api::class)
3838
@Preview
3939
@Composable
4040
fun SetProfileSetupView(
4141
context: Context = LocalContext.current,
42-
bottomSheetState: ModalBottomSheetState = getBottomSheetDialogState(),
42+
bottomSheetState: BottomSheetScaffoldState = getBottomSheetDialogState(),
4343
coroutineScope: CoroutineScope = rememberCoroutineScope(),
4444
isNextButtonEnabled: MutableState<Boolean> = remember { mutableStateOf(false) },
4545
isNextButtonClickable: MutableState<Boolean> = remember { mutableStateOf(false) },
@@ -63,7 +63,7 @@ fun SetProfileSetupView(
6363
interactionSource = interactionSource,
6464
indication = null,
6565
onClick = {
66-
coroutineScope.launch { bottomSheetState.show() }
66+
coroutineScope.launch { bottomSheetState.bottomSheetState.expand() }
6767
}
6868
)
6969
}

presentation/src/main/java/daily/dayo/presentation/screen/account/SignInNavigation.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package daily.dayo.presentation.screen.account
22

3-
import androidx.compose.material.ExperimentalMaterialApi
4-
import androidx.compose.material.ModalBottomSheetState
3+
import androidx.compose.material3.BottomSheetScaffoldState
4+
import androidx.compose.material3.ExperimentalMaterial3Api
55
import androidx.compose.material3.SnackbarHostState
66
import androidx.compose.runtime.Composable
77
import androidx.compose.runtime.remember
@@ -36,6 +36,7 @@ fun NavController.navigateProfileSetting() {
3636
this.navigate(SignInRoute.profileSetting)
3737
}
3838

39+
@OptIn(ExperimentalMaterial3Api::class)
3940
fun NavGraphBuilder.signInNavGraph(
4041
coroutineScope: CoroutineScope,
4142
snackBarHostState: SnackbarHostState,
@@ -47,7 +48,7 @@ fun NavGraphBuilder.signInNavGraph(
4748
navigateToSignUpEmail: () -> Unit,
4849
navigateToRules: (RuleType) -> Unit,
4950
navigateToProfileSetting: () -> Unit,
50-
bottomSheetState: ModalBottomSheetState,
51+
bottomSheetState: BottomSheetScaffoldState,
5152
bottomSheetContent: (@Composable () -> Unit) -> Unit,
5253
) {
5354
composable(route = SignInRoute.route) {

presentation/src/main/java/daily/dayo/presentation/screen/account/SignUpEmailScreen.kt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ import androidx.compose.foundation.layout.imePadding
1616
import androidx.compose.foundation.layout.padding
1717
import androidx.compose.foundation.layout.wrapContentHeight
1818
import androidx.compose.foundation.layout.wrapContentSize
19-
import androidx.compose.material.ExperimentalMaterialApi
20-
import androidx.compose.material.ModalBottomSheetState
2119
import androidx.compose.material.Text
20+
import androidx.compose.material3.BottomSheetScaffoldState
21+
import androidx.compose.material3.ExperimentalMaterial3Api
2222
import androidx.compose.material3.Scaffold
2323
import androidx.compose.material3.SnackbarHostState
2424
import androidx.compose.runtime.Composable
@@ -59,8 +59,8 @@ import daily.dayo.presentation.view.TopNavigation
5959
import daily.dayo.presentation.view.dialog.ProfileImageBottomSheetDialog
6060
import daily.dayo.presentation.view.dialog.getBottomSheetDialogState
6161
import daily.dayo.presentation.viewmodel.AccountViewModel
62-
import daily.dayo.presentation.viewmodel.AccountViewModel.Companion.SIGN_UP_EMAIL_CERTIFICATE_AUTH_CODE_FAIL
6362
import daily.dayo.presentation.viewmodel.AccountViewModel.Companion.EMAIL_CERTIFICATE_AUTH_CODE_INITIAL
63+
import daily.dayo.presentation.viewmodel.AccountViewModel.Companion.SIGN_UP_EMAIL_CERTIFICATE_AUTH_CODE_FAIL
6464
import daily.dayo.presentation.viewmodel.ProfileSettingViewModel
6565
import kotlinx.coroutines.CoroutineScope
6666
import kotlinx.coroutines.Dispatchers
@@ -76,7 +76,7 @@ const val PASSWORD_PERMIT_FORMAT = "^[a-z0-9]{8,16}$"
7676
const val IMAGE_TEMP_FILE_NAME_FORMAT = "yyyy-MM-d-HH-mm-ss-SSS"
7777
const val IMAGE_TEMP_FILE_EXTENSION = ".jpg"
7878

79-
@OptIn(ExperimentalMaterialApi::class)
79+
@OptIn(ExperimentalMaterial3Api::class)
8080
@Composable
8181
internal fun SignUpEmailRoute(
8282
coroutineScope: CoroutineScope = rememberCoroutineScope(),
@@ -229,19 +229,19 @@ internal fun SignUpEmailRoute(
229229
onClickProfileSelect = {
230230
coroutineScope.launch {
231231
showProfileGallery = true
232-
bottomSheetState.hide()
232+
bottomSheetState.bottomSheetState.hide()
233233
}
234234
},
235235
onClickProfileCapture = {
236236
coroutineScope.launch {
237237
showProfileCapture = true
238-
bottomSheetState.hide()
238+
bottomSheetState.bottomSheetState.hide()
239239
}
240240
},
241241
onClickProfileReset = {
242242
profileImgState.value = null
243243
coroutineScope.launch {
244-
bottomSheetState.hide()
244+
bottomSheetState.bottomSheetState.hide()
245245
}
246246
},
247247
)
@@ -272,13 +272,13 @@ fun SignUpEmailTitleLayout(
272272
}
273273
}
274274

275-
@OptIn(ExperimentalMaterialApi::class)
275+
@OptIn(ExperimentalMaterial3Api::class)
276276
@Composable
277277
@Preview
278278
fun SignUpEmailScreen(
279279
context: Context = LocalContext.current,
280280
coroutineScope: CoroutineScope = rememberCoroutineScope(),
281-
bottomSheetState: ModalBottomSheetState = getBottomSheetDialogState(),
281+
bottomSheetState: BottomSheetScaffoldState = getBottomSheetDialogState(),
282282
hideKeyboard: () -> Unit = {},
283283
onBackClick: () -> Unit = {},
284284
requestIsEmailDuplicate: (email: String) -> Unit = {},

presentation/src/main/java/daily/dayo/presentation/screen/feed/FeedNavigation.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
package daily.dayo.presentation.screen.feed
22

3-
import androidx.compose.material.ExperimentalMaterialApi
4-
import androidx.compose.material.ModalBottomSheetState
3+
import androidx.compose.material3.BottomSheetScaffoldState
4+
import androidx.compose.material3.ExperimentalMaterial3Api
55
import androidx.compose.material3.SnackbarHostState
66
import androidx.compose.runtime.Composable
77
import androidx.navigation.NavGraphBuilder
88
import androidx.navigation.compose.composable
99

10-
@OptIn(ExperimentalMaterialApi::class)
10+
@OptIn(ExperimentalMaterial3Api::class)
1111
fun NavGraphBuilder.feedNavGraph(
1212
snackBarHostState: SnackbarHostState,
1313
onEmptyViewClick: () -> Unit,
1414
onPostClick: (Long) -> Unit,
1515
onProfileClick: (String) -> Unit,
1616
onPostLikeUsersClick: (Long) -> Unit,
1717
onPostHashtagClick: (String) -> Unit,
18-
bottomSheetState: ModalBottomSheetState,
18+
bottomSheetState: BottomSheetScaffoldState,
1919
bottomSheetContent: (@Composable () -> Unit) -> Unit,
2020
) {
2121
composable(FeedRoute.route) {

presentation/src/main/java/daily/dayo/presentation/screen/feed/FeedScreen.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,11 @@ import androidx.compose.foundation.layout.height
1111
import androidx.compose.foundation.layout.padding
1212
import androidx.compose.foundation.lazy.LazyColumn
1313
import androidx.compose.material.ExperimentalMaterialApi
14-
import androidx.compose.material.ModalBottomSheetState
1514
import androidx.compose.material.pullrefresh.PullRefreshIndicator
1615
import androidx.compose.material.pullrefresh.pullRefresh
1716
import androidx.compose.material.pullrefresh.rememberPullRefreshState
17+
import androidx.compose.material3.BottomSheetScaffoldState
18+
import androidx.compose.material3.ExperimentalMaterial3Api
1819
import androidx.compose.material3.Scaffold
1920
import androidx.compose.material3.SnackbarHostState
2021
import androidx.compose.material3.Text
@@ -47,7 +48,7 @@ import daily.dayo.presentation.view.FilledButton
4748
import daily.dayo.presentation.view.TopNavigation
4849
import daily.dayo.presentation.viewmodel.FeedViewModel
4950

50-
@OptIn(ExperimentalMaterialApi::class)
51+
@OptIn(ExperimentalMaterialApi::class, ExperimentalMaterial3Api::class)
5152
@Composable
5253
fun FeedScreen(
5354
snackBarHostState: SnackbarHostState,
@@ -56,7 +57,7 @@ fun FeedScreen(
5657
onProfileClick: (String) -> Unit,
5758
onPostLikeUsersClick: (Long) -> Unit,
5859
onPostHashtagClick: (String) -> Unit,
59-
bottomSheetState: ModalBottomSheetState,
60+
bottomSheetState: BottomSheetScaffoldState,
6061
bottomSheetContent: (@Composable () -> Unit) -> Unit,
6162
feedViewModel: FeedViewModel = hiltViewModel()
6263
) {

presentation/src/main/java/daily/dayo/presentation/screen/home/HomeNavigation.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package daily.dayo.presentation.screen.home
22

33
import androidx.compose.material.ExperimentalMaterialApi
44
import androidx.compose.material.ModalBottomSheetState
5+
import androidx.compose.material3.BottomSheetScaffoldState
6+
import androidx.compose.material3.ExperimentalMaterial3Api
57
import androidx.compose.runtime.Composable
68
import androidx.navigation.NavController
79
import androidx.navigation.NavGraphBuilder
@@ -12,13 +14,13 @@ fun NavController.navigateHome() {
1214
this.navigate(HomeRoute.route)
1315
}
1416

15-
@OptIn(ExperimentalMaterialApi::class)
17+
@OptIn(ExperimentalMaterial3Api::class)
1618
fun NavGraphBuilder.homeNavGraph(
1719
onPostClick: (Long) -> Unit,
1820
onProfileClick: (String) -> Unit,
1921
onSearchClick: () -> Unit,
2022
coroutineScope: CoroutineScope,
21-
bottomSheetState: ModalBottomSheetState,
23+
bottomSheetState: BottomSheetScaffoldState,
2224
bottomSheetContent: (@Composable () -> Unit) -> Unit
2325
) {
2426
composable(HomeRoute.route) {

presentation/src/main/java/daily/dayo/presentation/screen/home/HomeScreen.kt

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import androidx.compose.foundation.layout.Column
77
import androidx.compose.foundation.layout.Row
88
import androidx.compose.foundation.layout.padding
99
import androidx.compose.foundation.layout.size
10-
import androidx.compose.material.ExperimentalMaterialApi
11-
import androidx.compose.material.ModalBottomSheetState
10+
import androidx.compose.material3.BottomSheetScaffoldState
11+
import androidx.compose.material3.ExperimentalMaterial3Api
1212
import androidx.compose.material3.Scaffold
1313
import androidx.compose.runtime.Composable
1414
import androidx.compose.runtime.getValue
@@ -45,31 +45,31 @@ import kotlinx.coroutines.launch
4545
const val HOME_DAYOPICK_PAGE_TAB_ID = 0
4646
const val HOME_NEW_PAGE_TAB_ID = 1
4747

48-
@OptIn(ExperimentalMaterialApi::class)
48+
@OptIn(ExperimentalMaterial3Api::class)
4949
@Composable
5050
fun HomeScreen(
5151
onPostClick: (Long) -> Unit,
5252
onProfileClick: (String) -> Unit,
5353
onSearchClick: () -> Unit,
5454
coroutineScope: CoroutineScope,
55-
bottomSheetState: ModalBottomSheetState,
55+
bottomSheetState: BottomSheetScaffoldState,
5656
bottomSheetContent: (@Composable () -> Unit) -> Unit,
5757
homeViewModel: HomeViewModel = hiltViewModel()
5858
) {
5959
var homeTabState by rememberSaveable { mutableIntStateOf(HOME_DAYOPICK_PAGE_TAB_ID) }
6060
var selectedCategory by rememberSaveable { mutableStateOf(Pair(CategoryMenu.All.name, 0)) } // name, index
6161
val onCategoryClick: () -> Unit = {
62-
coroutineScope.launch { bottomSheetState.show() }
62+
coroutineScope.launch { bottomSheetState.bottomSheetState.expand() }
6363
}
6464

6565
val onCategorySelect: (CategoryMenu, Int) -> Unit = { categoryMenu, index ->
6666
selectedCategory = Pair(categoryMenu.name, index)
6767
homeViewModel.setCategory(categoryMenu.category)
68-
coroutineScope.launch { bottomSheetState.hide() }
68+
coroutineScope.launch { bottomSheetState.bottomSheetState.hide() }
6969
}
7070

71-
BackHandler(enabled = bottomSheetState.isVisible) {
72-
coroutineScope.launch { bottomSheetState.hide() }
71+
BackHandler(enabled = bottomSheetState.bottomSheetState.isVisible) {
72+
coroutineScope.launch { bottomSheetState.bottomSheetState.hide() }
7373
}
7474

7575
Scaffold(
@@ -149,13 +149,13 @@ fun HomeScreen(
149149
}
150150
}
151151

152-
@OptIn(ExperimentalMaterialApi::class)
152+
@OptIn(ExperimentalMaterial3Api::class)
153153
@Composable
154154
private fun CategoryBottomSheetDialog(
155155
onCategorySelected: (CategoryMenu, Int) -> Unit,
156156
selectedCategory: Pair<String, Int>,
157157
coroutineScope: CoroutineScope,
158-
bottomSheetState: ModalBottomSheetState
158+
bottomSheetState: BottomSheetScaffoldState
159159
) {
160160
val categoryMenus = listOf(
161161
CategoryMenu.All,
@@ -184,11 +184,11 @@ private fun CategoryBottomSheetDialog(
184184
normalColor = Gray2_767B83,
185185
checkedColor = Primary_23C882,
186186
checkedButtonIndex = selectedCategory.second,
187-
closeButtonAction = { coroutineScope.launch { bottomSheetState.hide() } }
187+
closeButtonAction = { coroutineScope.launch { bottomSheetState.bottomSheetState.hide() } }
188188
)
189189
}
190190

191-
@OptIn(ExperimentalMaterialApi::class)
191+
@OptIn(ExperimentalMaterial3Api::class)
192192
@Composable
193193
@Preview(showBackground = true)
194194
private fun PreviewHomeScreen() {

0 commit comments

Comments
 (0)