Skip to content

Commit b8efc3b

Browse files
committed
Code refactor
1 parent 971db71 commit b8efc3b

File tree

4 files changed

+29
-33
lines changed

4 files changed

+29
-33
lines changed

core/filters/src/main/java/ru/tech/imageresizershrinker/core/filters/presentation/widget/FilterTemplateAddingGroup.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ import androidx.compose.ui.res.stringResource
4343
import androidx.compose.ui.unit.dp
4444
import ru.tech.imageresizershrinker.core.resources.R
4545
import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberFilePicker
46-
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberQrCodeScanner
46+
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberBarcodeScanner
4747
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButton
4848
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedIconButton
4949
import ru.tech.imageresizershrinker.core.ui.widget.other.LocalToastHostState
@@ -77,7 +77,7 @@ internal fun FilterTemplateAddingGroup(
7777
onFailure: suspend () -> Unit
7878
) = onAddTemplateFilterFromUri(uri, onSuccess, onFailure)
7979

80-
val scanner = rememberQrCodeScanner {
80+
val scanner = rememberBarcodeScanner {
8181
addTemplateFilterFromString(
8282
string = it,
8383
onSuccess = { filterName, filtersCount ->

core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/utils/helper/QrCodeScanner.kt core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/utils/helper/BarcodeScanner.kt

+14-29
Original file line numberDiff line numberDiff line change
@@ -25,20 +25,16 @@ import androidx.compose.runtime.Composable
2525
import androidx.compose.runtime.Immutable
2626
import androidx.compose.runtime.Stable
2727
import androidx.compose.runtime.remember
28-
import androidx.compose.runtime.rememberCoroutineScope
2928
import io.github.g00fy2.quickie.QRResult
3029
import io.github.g00fy2.quickie.ScanCustomCode
3130
import io.github.g00fy2.quickie.config.BarcodeFormat
3231
import io.github.g00fy2.quickie.config.ScannerConfig
33-
import kotlinx.coroutines.launch
3432
import ru.tech.imageresizershrinker.core.resources.R
35-
import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity
36-
import ru.tech.imageresizershrinker.core.ui.widget.other.LocalToastHostState
37-
import ru.tech.imageresizershrinker.core.ui.widget.other.showFailureToast
33+
import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials
3834

39-
private class QrCodeScannerImpl(
35+
private class BarcodeScannerImpl(
4036
private val scannerLauncher: ManagedActivityResultLauncher<ScannerConfig, QRResult>
41-
) : QrCodeScanner {
37+
) : BarcodeScanner {
4238

4339
override fun scan() {
4440
val config = ScannerConfig.build {
@@ -57,37 +53,26 @@ private class QrCodeScannerImpl(
5753

5854
@Stable
5955
@Immutable
60-
interface QrCodeScanner {
56+
interface BarcodeScanner {
6157
fun scan()
6258
}
6359

6460

6561
@Composable
66-
fun rememberQrCodeScanner(
67-
onSuccess: (String) -> Unit
68-
): QrCodeScanner {
69-
val scope = rememberCoroutineScope()
70-
val toastHostState = LocalToastHostState.current
71-
val context = LocalComponentActivity.current
62+
fun rememberBarcodeScanner(
63+
onSuccess: (rawCode: String) -> Unit
64+
): BarcodeScanner {
65+
val essentials = rememberLocalEssentials()
7266

7367
val scannerLauncher = rememberLauncherForActivityResult(ScanCustomCode()) { result ->
7468
when (result) {
75-
is QRResult.QRError -> {
76-
scope.launch {
77-
toastHostState.showFailureToast(
78-
context = context,
79-
throwable = result.exception
80-
)
81-
}
82-
}
69+
is QRResult.QRError -> essentials.showFailureToast(result.exception)
8370

8471
QRResult.QRMissingPermission -> {
85-
scope.launch {
86-
toastHostState.showToast(
87-
message = context.getString(R.string.grant_camera_permission_to_scan_qr_code),
88-
icon = Icons.Outlined.CameraAlt
89-
)
90-
}
72+
essentials.showToast(
73+
messageSelector = { getString(R.string.grant_camera_permission_to_scan_qr_code) },
74+
icon = Icons.Outlined.CameraAlt
75+
)
9176
}
9277

9378
is QRResult.QRSuccess -> {
@@ -100,6 +85,6 @@ fun rememberQrCodeScanner(
10085

10186

10287
return remember(scannerLauncher) {
103-
QrCodeScannerImpl(scannerLauncher)
88+
BarcodeScannerImpl(scannerLauncher)
10489
}
10590
}

core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/utils/provider/LocalEssentials.kt

+11
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package ru.tech.imageresizershrinker.core.ui.utils.provider
1919

2020
import android.content.ClipData
21+
import android.content.Context
2122
import android.os.Build
2223
import androidx.activity.ComponentActivity
2324
import androidx.compose.material.icons.Icons
@@ -96,6 +97,16 @@ data class LocalEssentials internal constructor(
9697
)
9798
}
9899

100+
fun showToast(
101+
messageSelector: Context.() -> String,
102+
icon: ImageVector? = null,
103+
duration: ToastDuration = ToastDuration.Short
104+
) = showToast(
105+
message = messageSelector(context),
106+
icon = icon,
107+
duration = duration
108+
)
109+
99110
fun showFailureToast(
100111
throwable: Throwable
101112
) {

feature/scan-qr-code/src/main/java/ru/tech/imageresizershrinker/feature/scan_qr_code/presentation/ScanQrCodeContent.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ import kotlinx.coroutines.launch
4545
import ru.tech.imageresizershrinker.core.resources.R
4646
import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip
4747
import ru.tech.imageresizershrinker.core.ui.utils.helper.isLandscapeOrientationAsState
48-
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberQrCodeScanner
48+
import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberBarcodeScanner
4949
import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity
5050
import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials
5151
import ru.tech.imageresizershrinker.core.ui.widget.AdaptiveLayoutScreen
@@ -74,7 +74,7 @@ fun ScanQrCodeContent(
7474

7575
val params = component.params
7676

77-
val scanner = rememberQrCodeScanner {
77+
val scanner = rememberBarcodeScanner {
7878
component.updateParams(
7979
params = params.copy(
8080
content = it

0 commit comments

Comments
 (0)