Skip to content

Commit 680dc8c

Browse files
committed
[a]: added uri to output, changed launch effects to side effects
1 parent 5345006 commit 680dc8c

File tree

5 files changed

+20
-34
lines changed

5 files changed

+20
-34
lines changed

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ accompanist-permissions = "0.33.1-alpha"
33
agp = "8.2.2"
44
coil-compose = "2.5.0"
55
github-landscapist-coil = "2.2.8"
6+
landscapist-placeholder = "2.2.8"
67
kotlin = "1.9.22"
78
core-ktx = "1.12.0"
89
junit = "4.13.2"
910
androidx-test-ext-junit = "1.1.5"
1011
espresso-core = "3.5.1"
11-
landscapist-placeholder = "2.2.8"
1212
lifecycle-runtime-ktx = "2.7.0"
1313
activity-compose = "1.8.2"
1414
material3 = "1.2.0"

kige/src/main/java/com/kiko/kige/data/state/KigeState.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@ import kotlinx.coroutines.launch
1717
data class KigeState(
1818
val visibleState: MutableState<Boolean>,
1919
val rememberGalleryState: GalleryState,
20-
val rememberPermissionState: PermissionState,
21-
private val _photoUri: MutableState<String> = mutableStateOf(""),
22-
val photoUri: State<String> = _photoUri,
20+
val rememberPermissionState: PermissionState
2321
) {
2422
fun expand() {
2523
this.visibleState.value = true

kige/src/main/java/com/kiko/kige/ui/components/GallerySheet.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
package com.kiko.kige.ui.components
66

7+
import android.graphics.Bitmap
8+
import android.net.Uri
79
import androidx.compose.foundation.Image
810
import androidx.compose.foundation.clickable
911
import androidx.compose.foundation.layout.Arrangement
@@ -43,7 +45,7 @@ import com.skydoves.landscapist.placeholder.shimmer.ShimmerPlugin
4345
internal fun GallerySheet(
4446
rememberGalleryState: GalleryState,
4547
rememberKigeState: KigeState,
46-
onSelect: (painter: Painter) -> Unit
48+
onSelect: (painter: Painter, uri: Uri) -> Unit
4749
) {
4850
var selectedPhotoUri by remember { mutableStateOf("") }
4951
val selectedPainter = rememberAsyncImagePainter(model = selectedPhotoUri)
@@ -80,7 +82,7 @@ internal fun GallerySheet(
8082
.clickable {
8183
rememberKigeState.hide(coroutineScope) {
8284
selectedPhotoUri = photoUri
83-
onSelect(selectedPainter)
85+
onSelect(selectedPainter, Uri.parse(photoUri))
8486
}
8587
},
8688
component = rememberImageComponent {
Lines changed: 12 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,64 @@
11
package com.kiko.kige.ui.components
22

33
import android.Manifest
4+
import android.net.Uri
45
import android.os.Build
56
import androidx.compose.runtime.Composable
6-
import androidx.compose.runtime.LaunchedEffect
7+
import androidx.compose.runtime.SideEffect
78
import androidx.compose.runtime.rememberCoroutineScope
89
import androidx.compose.ui.graphics.painter.Painter
910
import com.google.accompanist.permissions.ExperimentalPermissionsApi
1011
import com.google.accompanist.permissions.isGranted
1112
import com.google.accompanist.permissions.rememberPermissionState
12-
import com.kiko.kige.data.remembers.rememberKigeGalleryState
13-
import com.kiko.kige.data.remembers.rememberKigePermissionState
1413
import com.kiko.kige.data.remembers.rememberKigeState
1514
import com.kiko.kige.data.state.GalleryState
1615
import com.kiko.kige.data.state.KigeState
17-
import com.kiko.kige.data.state.PermissionState
1816
import kotlinx.coroutines.CoroutineScope
19-
import kotlinx.coroutines.launch
2017

2118
@OptIn(ExperimentalPermissionsApi::class)
2219
@Composable
2320
fun 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
6554
private 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
}

samplekige/src/main/java/com/kiko/kige/samplekige/MainActivity.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ class MainActivity : ComponentActivity() {
3333

3434
val rememberKigeState = rememberKigeState()
3535

36-
KigePicker(rememberKigeState) {
37-
image = it
36+
KigePicker(rememberKigeState) { painter, _ ->
37+
image = painter
3838
}
3939

4040
image?.let {

0 commit comments

Comments
 (0)