Skip to content

Commit 6eb423e

Browse files
authored
Merge pull request #87 from ismoy/main
merge
2 parents 259fd20 + 7d9e631 commit 6eb423e

26 files changed

Lines changed: 270 additions & 470 deletions

File tree

gradle/libs.versions.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ androidx-exifinterface = { module = "androidx.exifinterface:exifinterface", vers
2626
androidx-material-icons-extended = { module = "androidx.compose.material:material-icons-extended", version.ref = "materialIconsExtendedVersion" }
2727
androidx-ui = { module = "androidx.compose.ui:ui", version.ref = "ui" }
2828
androidx-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview", version.ref = "ui" }
29+
components-resources = { module = "org.jetbrains.compose.components:components-resources", version.ref = "compose" }
2930
core = { module = "com.google.zxing:core", version.ref = "core" }
3031
compose-ui = { module = "org.jetbrains.compose.ui:ui", version.ref = "compose" }
3132
compose-animation = { module = "org.jetbrains.compose.animation:animation", version.ref = "compose" }
@@ -45,3 +46,4 @@ ktor-client-darwin = { module = "io.ktor:ktor-client-darwin", version.ref = "kto
4546
androidLibrary = { id = "com.android.library", version.ref = "agp" }
4647
kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
4748
composeCompiler = { id = "org.jetbrains.kotlin.plugin.compose", version = "2.0.21" }
49+
composeMultiplatform = { id = "org.jetbrains.compose", version.ref = "compose" }

library/build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ plugins {
88
alias(libs.plugins.kotlinMultiplatform)
99
alias(libs.plugins.androidLibrary)
1010
alias(libs.plugins.composeCompiler)
11+
alias(libs.plugins.composeMultiplatform)
1112
id("com.vanniktech.maven.publish") version "0.33.0"
1213
id("maven-publish")
1314
id("jacoco")
@@ -382,6 +383,7 @@ kotlin {
382383
implementation("io.coil-kt.coil3:coil-compose:3.2.0")
383384
implementation("org.jetbrains.compose.material:material-icons-core:1.7.3")
384385
implementation("org.jetbrains.compose.material:material-icons-extended:1.7.3")
386+
implementation(libs.components.resources)
385387
// OCR dependencies
386388
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")
387389
// Ktor dependencies for HTTP client
@@ -417,7 +419,6 @@ kotlin {
417419
tasks.withType<ProcessResources> {
418420
duplicatesStrategy = DuplicatesStrategy.INCLUDE
419421
}
420-
resources.srcDir("src/commonMain/resources")
421422
dependencies {
422423
// Ktor iOS engine
423424
implementation(libs.ktor.client.darwin)

library/src/androidMain/kotlin/io/github/ismoy/imagepickerkmp/features/ocr/presentation/ImagePickerLauncherOCR.android.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ import io.github.ismoy.imagepickerkmp.domain.config.PermissionAndConfirmationCon
1919
import io.github.ismoy.imagepickerkmp.domain.extensions.loadBytes
2020
import io.github.ismoy.imagepickerkmp.features.ocr.model.OCRProcessState
2121
import io.github.ismoy.imagepickerkmp.features.ocr.model.ScanMode
22-
import io.github.ismoy.imagepickerkmp.presentation.resources.StringResource
23-
import io.github.ismoy.imagepickerkmp.presentation.resources.getStringResource
2422
import io.github.ismoy.imagepickerkmp.presentation.ui.components.ImagePickerLauncher
2523
import io.github.ismoy.imagepickerkmp.features.ocr.presentation.components.OCRProgressDialog
2624
import io.github.ismoy.imagepickerkmp.presentation.ui.extensions.activity
@@ -32,7 +30,9 @@ import kotlinx.coroutines.Dispatchers
3230
import kotlinx.coroutines.delay
3331
import kotlinx.coroutines.launch
3432
import kotlinx.coroutines.withContext
35-
33+
import org.jetbrains.compose.resources.stringResource
34+
import imagepickerkmp.library.generated.resources.Res
35+
import imagepickerkmp.library.generated.resources.invalid_context_error
3636

3737
@Suppress("FunctionNaming")
3838
@Composable
@@ -42,9 +42,10 @@ actual fun ImagePickerLauncherOCR(
4242
) {
4343
val context = LocalContext.current
4444
val activity = context.activity
45+
val invalidContextErrorMsg = stringResource(Res.string.invalid_context_error)
4546
if (activity !is ComponentActivity) {
4647
LaunchedEffect(Unit) {
47-
config.onError(Exception(getStringResource(StringResource.INVALID_CONTEXT_ERROR)))
48+
config.onError(Exception(invalidContextErrorMsg))
4849
}
4950
return
5051
}

library/src/androidMain/kotlin/io/github/ismoy/imagepickerkmp/presentation/resources/StringResource.kt

Lines changed: 0 additions & 81 deletions
This file was deleted.

library/src/androidMain/kotlin/io/github/ismoy/imagepickerkmp/presentation/ui/components/GalleryPickerLauncher.android.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ import io.github.ismoy.imagepickerkmp.domain.config.CameraCaptureConfig
77
import io.github.ismoy.imagepickerkmp.domain.models.GalleryPhotoResult
88
import io.github.ismoy.imagepickerkmp.domain.models.GalleryPickerConfig
99
import io.github.ismoy.imagepickerkmp.domain.models.MimeType
10-
import io.github.ismoy.imagepickerkmp.presentation.resources.StringResource
11-
import io.github.ismoy.imagepickerkmp.presentation.resources.getStringResource
1210
import io.github.ismoy.imagepickerkmp.presentation.ui.components.gallery.GalleryPickerLauncherContent
11+
import imagepickerkmp.library.generated.resources.Res
12+
import imagepickerkmp.library.generated.resources.invalid_context_error
13+
import org.jetbrains.compose.resources.stringResource
1314

1415
@Suppress("ReturnCount","LongParameterList")
1516
@Composable
@@ -27,8 +28,9 @@ actual fun GalleryPickerLauncher(
2728
) {
2829
val context = LocalContext.current
2930
val activity = context
31+
val invalidContextMsg = stringResource(Res.string.invalid_context_error)
3032
if (activity !is ComponentActivity) {
31-
onError(Exception(getStringResource(StringResource.INVALID_CONTEXT_ERROR)))
33+
onError(Exception(invalidContextMsg))
3234
return
3335
}
3436

library/src/androidMain/kotlin/io/github/ismoy/imagepickerkmp/presentation/ui/components/ImageConfirmationViewWithCustomButtons.kt

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,17 @@ import androidx.compose.ui.text.style.TextAlign
4040
import androidx.compose.ui.unit.dp
4141
import androidx.compose.ui.platform.LocalConfiguration
4242
import coil3.compose.AsyncImage
43+
import imagepickerkmp.library.generated.resources.Res
44+
import imagepickerkmp.library.generated.resources.accept_button
45+
import imagepickerkmp.library.generated.resources.hd_quality_description
46+
import imagepickerkmp.library.generated.resources.image_confirmation_title
47+
import imagepickerkmp.library.generated.resources.preview_image_description
48+
import imagepickerkmp.library.generated.resources.retry_button
49+
import imagepickerkmp.library.generated.resources.sd_quality_description
4350
import io.github.ismoy.imagepickerkmp.domain.config.ImagePickerUiConstants
4451
import io.github.ismoy.imagepickerkmp.domain.config.UiConfig
4552
import io.github.ismoy.imagepickerkmp.domain.models.PhotoResult
46-
import io.github.ismoy.imagepickerkmp.presentation.resources.StringResource
47-
import io.github.ismoy.imagepickerkmp.presentation.resources.stringResource
53+
import org.jetbrains.compose.resources.stringResource
4854

4955
@SuppressLint("ConfigurationScreenWidthHeight")
5056
@Suppress("EndOfSentenceFormat","LongMethod","FunctionNaming")
@@ -102,7 +108,7 @@ fun ImageConfirmationViewWithCustomButtons(
102108
.aspectRatio(ImagePickerUiConstants.ConfirmationCardImageAspectRatio)){
103109
AsyncImage(
104110
model = result.uri,
105-
contentDescription = stringResource(StringResource.PREVIEW_IMAGE_DESCRIPTION),
111+
contentDescription = stringResource(Res.string.preview_image_description),
106112
modifier = Modifier
107113
.fillMaxSize()
108114
.aspectRatio(ImagePickerUiConstants.ConfirmationCardImageAspectRatio)
@@ -124,8 +130,8 @@ fun ImageConfirmationViewWithCustomButtons(
124130
) {
125131
Icon(
126132
imageVector = if (isHD) Icons.Default.Hd else Icons.Default.Sd,
127-
contentDescription = if (isHD) stringResource(StringResource.HD_QUALITY_DESCRIPTION)
128-
else stringResource(StringResource.SD_QUALITY_DESCRIPTION),
133+
contentDescription = if (isHD) stringResource(Res.string.hd_quality_description)
134+
else stringResource(Res.string.sd_quality_description),
129135
tint = resolvedIconColor
130136
)
131137
}
@@ -141,7 +147,7 @@ fun ImageConfirmationViewWithCustomButtons(
141147
horizontalAlignment = Alignment.CenterHorizontally
142148
) {
143149
Text(
144-
text = stringResource(StringResource.IMAGE_CONFIRMATION_TITLE),
150+
text = stringResource(Res.string.image_confirmation_title),
145151
color = ImagePickerUiConstants.ConfirmationCardTitleColor,
146152
fontSize = ImagePickerUiConstants.ConfirmationCardTitleFontSize,
147153
fontWeight = FontWeight.Bold,
@@ -168,13 +174,13 @@ fun ImageConfirmationViewWithCustomButtons(
168174
) {
169175
Icon(
170176
imageVector = uiConfig.galleryIcon ?: Icons.Default.Refresh,
171-
contentDescription = stringResource(StringResource.RETRY_BUTTON),
177+
contentDescription = stringResource(Res.string.retry_button),
172178
tint = resolvedIconColor,
173179
modifier = Modifier
174180
.padding(end = ImagePickerUiConstants.ConfirmationCardButtonIconPadding)
175181
)
176182
Text(
177-
stringResource(StringResource.RETRY_BUTTON), color = resolvedIconColor,
183+
stringResource(Res.string.retry_button), color = resolvedIconColor,
178184
fontWeight = ImagePickerUiConstants.ConfirmationCardButtonTextFontWeight)
179185
}
180186
Button(
@@ -189,13 +195,13 @@ fun ImageConfirmationViewWithCustomButtons(
189195
) {
190196
Icon(
191197
imageVector = Icons.Default.Check,
192-
contentDescription = stringResource(StringResource.ACCEPT_BUTTON),
198+
contentDescription = stringResource(Res.string.accept_button),
193199
tint = resolvedIconColor,
194200
modifier = Modifier
195201
.padding(end = ImagePickerUiConstants.ConfirmationCardButtonIconPadding)
196202
)
197203
Text(
198-
stringResource(StringResource.ACCEPT_BUTTON),
204+
stringResource(Res.string.accept_button),
199205
color = resolvedIconColor,
200206
fontWeight = ImagePickerUiConstants.ConfirmationCardButtonTextFontWeight)
201207
}

library/src/androidMain/kotlin/io/github/ismoy/imagepickerkmp/presentation/ui/components/ImagePickerLauncher.android.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
package io.github.ismoy.imagepickerkmp.presentation.ui.components
32

43
import androidx.activity.ComponentActivity
@@ -7,19 +6,20 @@ import androidx.compose.ui.platform.LocalContext
76
import io.github.ismoy.imagepickerkmp.presentation.ui.screens.CameraCaptureView
87
import io.github.ismoy.imagepickerkmp.domain.config.ImagePickerConfig
98
import io.github.ismoy.imagepickerkmp.domain.config.CropConfig
10-
import io.github.ismoy.imagepickerkmp.presentation.resources.getStringResource
11-
import io.github.ismoy.imagepickerkmp.presentation.resources.StringResource
129
import io.github.ismoy.imagepickerkmp.presentation.ui.extensions.activity
10+
import org.jetbrains.compose.resources.stringResource
11+
import imagepickerkmp.library.generated.resources.Res
12+
import imagepickerkmp.library.generated.resources.invalid_context_error
1313

1414
@Suppress("FunctionNaming")
1515
@Composable
1616
actual fun ImagePickerLauncher(
1717
config: ImagePickerConfig
18-
){
18+
) {
1919
val context = LocalContext.current
2020
val activity = context.activity
2121
if (activity !is ComponentActivity) {
22-
config.onError(Exception(getStringResource(StringResource.INVALID_CONTEXT_ERROR)))
22+
config.onError(Exception(stringResource(Res.string.invalid_context_error)))
2323
return
2424
}
2525
CameraCaptureView(
@@ -40,7 +40,7 @@ actual fun ImagePickerLauncher(
4040
} else if (config.enableCrop) {
4141
CropConfig(
4242
enabled = true,
43-
circularCrop = true,
43+
circularCrop = true,
4444
squareCrop = true
4545
)
4646
} else {

0 commit comments

Comments
 (0)