11package com.kiko.kige.ui.components
22
33import android.Manifest
4+ import android.net.Uri
45import android.os.Build
56import androidx.compose.runtime.Composable
6- import androidx.compose.runtime.LaunchedEffect
7+ import androidx.compose.runtime.SideEffect
78import androidx.compose.runtime.rememberCoroutineScope
89import androidx.compose.ui.graphics.painter.Painter
910import com.google.accompanist.permissions.ExperimentalPermissionsApi
1011import com.google.accompanist.permissions.isGranted
1112import com.google.accompanist.permissions.rememberPermissionState
12- import com.kiko.kige.data.remembers.rememberKigeGalleryState
13- import com.kiko.kige.data.remembers.rememberKigePermissionState
1413import com.kiko.kige.data.remembers.rememberKigeState
1514import com.kiko.kige.data.state.GalleryState
1615import com.kiko.kige.data.state.KigeState
17- import com.kiko.kige.data.state.PermissionState
1816import kotlinx.coroutines.CoroutineScope
19- import kotlinx.coroutines.launch
2017
2118@OptIn(ExperimentalPermissionsApi ::class )
2219@Composable
2320fun KigePicker (
24- rememberKigeState : KigeState = rememberKigeState(),
25- onSelect : (painter: Painter ) -> Unit
21+ rememberKigeState : KigeState = rememberKigeState(), onSelect : (painter: Painter , uri: Uri ) -> Unit
2622) {
2723 if (rememberKigeState.visibleState.value) {
28- val readExternalPermission = if (Build .VERSION .SDK_INT < 33 )
29- rememberPermissionState(Manifest .permission.READ_EXTERNAL_STORAGE )
30- else
31- rememberPermissionState(Manifest .permission.READ_MEDIA_IMAGES )
24+ val readExternalPermission =
25+ if (Build .VERSION .SDK_INT < 33 ) rememberPermissionState(Manifest .permission.READ_EXTERNAL_STORAGE )
26+ else rememberPermissionState(Manifest .permission.READ_MEDIA_IMAGES )
3227
3328 val coroutineScope = rememberCoroutineScope()
3429
3530 if (readExternalPermission.status.isGranted) {
3631 CreateGallerySheet (
37- coroutineScope,
38- rememberKigeState.rememberGalleryState,
39- rememberKigeState,
40- onSelect
32+ rememberKigeState.rememberGalleryState, rememberKigeState, onSelect
4133 )
4234 } else {
4335 PermissionSheet (
4436 { rememberKigeState.hide(coroutineScope) },
4537 rememberKigeState.rememberPermissionState
4638 ) {
4739 CreateGallerySheet (
48- coroutineScope,
4940 rememberKigeState.rememberGalleryState,
5041 rememberKigeState,
5142 onSelect
5243 )
5344 }
5445
55- LaunchedEffect (true ) {
56- coroutineScope.launch {
57- rememberKigeState.rememberPermissionState.expand()
58- }
46+ SideEffect {
47+ rememberKigeState.rememberPermissionState.expand()
5948 }
6049 }
6150 }
6251}
6352
6453@Composable
6554private fun CreateGallerySheet (
66- coroutineScope : CoroutineScope ,
6755 rememberKigeGalleryState : GalleryState ,
6856 rememberKigeState : KigeState ,
69- onSelect : (painter: Painter ) -> Unit
57+ onSelect : (painter: Painter , uri: Uri ) -> Unit
7058) {
7159 GallerySheet (rememberKigeGalleryState, rememberKigeState, onSelect)
7260
73- LaunchedEffect (true ) {
74- coroutineScope.launch {
75- rememberKigeGalleryState.expand()
76- }
61+ SideEffect {
62+ rememberKigeGalleryState.expand()
7763 }
7864}
0 commit comments