diff --git a/core/filters/src/main/java/ru/tech/imageresizershrinker/core/filters/presentation/widget/addFilters/OtherContent.kt b/core/filters/src/main/java/ru/tech/imageresizershrinker/core/filters/presentation/widget/addFilters/OtherContent.kt index 80b4d9459..49fffc12b 100644 --- a/core/filters/src/main/java/ru/tech/imageresizershrinker/core/filters/presentation/widget/addFilters/OtherContent.kt +++ b/core/filters/src/main/java/ru/tech/imageresizershrinker/core/filters/presentation/widget/addFilters/OtherContent.kt @@ -53,7 +53,6 @@ import androidx.compose.ui.draw.scale import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ru.tech.imageresizershrinker.core.filters.presentation.model.UiCubeLutFilter @@ -62,7 +61,6 @@ import ru.tech.imageresizershrinker.core.filters.presentation.utils.collectAsUiS import ru.tech.imageresizershrinker.core.filters.presentation.widget.FilterSelectionItem import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.ui.utils.helper.LocalFilterPreviewModel -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials import ru.tech.imageresizershrinker.core.ui.widget.buttons.ShareButton import ru.tech.imageresizershrinker.core.ui.widget.controls.selection.ImageSelector @@ -87,7 +85,6 @@ internal fun OtherContent( onFilterPicked: (UiFilter<*>) -> Unit, previewBitmap: Bitmap?, ) { - val context = LocalContext.current val previewModel = LocalFilterPreviewModel.current val essentials = rememberLocalEssentials() val showConfetti: () -> Unit = essentials::showConfetti @@ -224,13 +221,8 @@ internal fun OtherContent( onShare = { component.shareNeutralLut(showConfetti) }, - onCopy = { manager -> - component.cacheNeutralLut { uri -> - manager.copyToClipboard( - uri.asClip(context) - ) - showConfetti() - } + onCopy = { + component.cacheNeutralLut(essentials::copyToClipboard) } ) EnhancedIconButton( @@ -243,9 +235,7 @@ internal fun OtherContent( ) { Icon( imageVector = Icons.Rounded.Save, - contentDescription = stringResource( - R.string.save - ) + contentDescription = stringResource(R.string.save) ) } diff --git a/core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/utils/provider/LocalEssentials.kt b/core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/utils/provider/LocalEssentials.kt index a6e2dd378..ce672e7c7 100644 --- a/core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/utils/provider/LocalEssentials.kt +++ b/core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/utils/provider/LocalEssentials.kt @@ -20,10 +20,12 @@ package ru.tech.imageresizershrinker.core.ui.utils.provider import android.content.ActivityNotFoundException import android.content.ClipData import android.content.Context +import android.net.Uri import android.os.Build import androidx.activity.ComponentActivity import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.FolderOff +import androidx.compose.material.icons.rounded.CopyAll import androidx.compose.runtime.Composable import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable @@ -41,6 +43,7 @@ import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.ui.utils.confetti.ConfettiHostState import ru.tech.imageresizershrinker.core.ui.utils.confetti.LocalConfettiHostState import ru.tech.imageresizershrinker.core.ui.utils.helper.ContextUtils.createScreenShortcut +import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip import ru.tech.imageresizershrinker.core.ui.utils.helper.parseFileSaveResult import ru.tech.imageresizershrinker.core.ui.utils.helper.parseSaveResult import ru.tech.imageresizershrinker.core.ui.utils.helper.parseSaveResults @@ -178,8 +181,19 @@ data class LocalEssentials internal constructor( } } + fun copyToClipboard(uri: Uri) { + coroutineScope.launch { + clipboard.setClipEntry(uri.asClip(context)) + showConfetti() + } + } + fun copyToClipboard(text: CharSequence) { copyToClipboard(ClipEntry(text.toClipData())) + showToast( + message = context.getString(R.string.copied), + icon = Icons.Rounded.CopyAll + ) } fun getTextFromClipboard( diff --git a/core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/widget/buttons/ShareButton.kt b/core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/widget/buttons/ShareButton.kt index f8f09f54b..8f091b15d 100644 --- a/core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/widget/buttons/ShareButton.kt +++ b/core/ui/src/main/kotlin/ru/tech/imageresizershrinker/core/ui/widget/buttons/ShareButton.kt @@ -41,8 +41,6 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.icons.MiniEdit -import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalEssentials -import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedAlertDialog import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButton import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedIconButton @@ -56,7 +54,7 @@ fun ShareButton( enabled: Boolean = true, onShare: () -> Unit, onEdit: (() -> Unit)? = null, - onCopy: ((LocalEssentials) -> Unit)? = null + onCopy: (() -> Unit)? = null ) { var showSelectionDialog by rememberSaveable { mutableStateOf(false) @@ -99,8 +97,6 @@ fun ShareButton( ) }, text = { - val essentials = rememberLocalEssentials() - val scrollState = rememberScrollState() Column( modifier = Modifier @@ -131,7 +127,7 @@ fun ShareButton( startIcon = Icons.Rounded.ContentCopy, onClick = { showSelectionDialog = false - onCopy(essentials) + onCopy() }, titleFontStyle = PreferenceItemDefaults.TitleFontStyleCentered ) diff --git a/feature/base64-tools/src/main/java/ru/tech/imageresizershrinker/feature/base64_tools/presentation/Base64ToolsContent.kt b/feature/base64-tools/src/main/java/ru/tech/imageresizershrinker/feature/base64_tools/presentation/Base64ToolsContent.kt index 026c0bf48..c570a536c 100644 --- a/feature/base64-tools/src/main/java/ru/tech/imageresizershrinker/feature/base64_tools/presentation/Base64ToolsContent.kt +++ b/feature/base64-tools/src/main/java/ru/tech/imageresizershrinker/feature/base64_tools/presentation/Base64ToolsContent.kt @@ -46,9 +46,7 @@ import ru.tech.imageresizershrinker.core.resources.icons.BrokenImageAlt import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.Picker import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker import ru.tech.imageresizershrinker.core.ui.utils.helper.ImageUtils.safeAspectRatio -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState -import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials import ru.tech.imageresizershrinker.core.ui.widget.AdaptiveLayoutScreen import ru.tech.imageresizershrinker.core.ui.widget.buttons.BottomButtonsBlock @@ -78,8 +76,6 @@ fun Base64ToolsContent( val isPortrait by isPortraitOrientationAsState() - val context = LocalComponentActivity.current - val essentials = rememberLocalEssentials() val showConfetti: () -> Unit = essentials::showConfetti @@ -130,11 +126,8 @@ fun Base64ToolsContent( onShare = { component.shareBitmap(showConfetti) }, - onCopy = { manager -> - component.cacheCurrentImage { uri -> - manager.copyToClipboard(uri.asClip(context)) - showConfetti() - } + onCopy = { + component.cacheCurrentImage(essentials::copyToClipboard) }, onEdit = { component.cacheCurrentImage { uri -> diff --git a/feature/base64-tools/src/main/java/ru/tech/imageresizershrinker/feature/base64_tools/presentation/components/Base64ToolsTiles.kt b/feature/base64-tools/src/main/java/ru/tech/imageresizershrinker/feature/base64_tools/presentation/components/Base64ToolsTiles.kt index c935a460d..a05c5d48a 100644 --- a/feature/base64-tools/src/main/java/ru/tech/imageresizershrinker/feature/base64_tools/presentation/components/Base64ToolsTiles.kt +++ b/feature/base64-tools/src/main/java/ru/tech/imageresizershrinker/feature/base64_tools/presentation/components/Base64ToolsTiles.kt @@ -185,10 +185,6 @@ internal fun Base64ToolsTiles(component: Base64ToolsComponent) { } if (component.base64String.isBase64()) { essentials.copyToClipboard(text) - essentials.showToast( - message = context.getString(R.string.copied), - icon = Icons.Rounded.CopyAll - ) } else { essentials.showToast( message = context.getString(R.string.copy_not_a_valid_base_64), diff --git a/feature/collage-maker/src/main/java/ru/tech/imageresizershrinker/collage_maker/presentation/CollageMakerContent.kt b/feature/collage-maker/src/main/java/ru/tech/imageresizershrinker/collage_maker/presentation/CollageMakerContent.kt index c3d1c47df..e555dd325 100644 --- a/feature/collage-maker/src/main/java/ru/tech/imageresizershrinker/collage_maker/presentation/CollageMakerContent.kt +++ b/feature/collage-maker/src/main/java/ru/tech/imageresizershrinker/collage_maker/presentation/CollageMakerContent.kt @@ -77,7 +77,6 @@ import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.icons.ImageReset import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.Picker import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials @@ -209,11 +208,8 @@ fun CollageMakerContent( onShare = { component.performSharing(showConfetti) }, - onCopy = { manager -> - component.cacheImage { uri -> - manager.copyToClipboard(uri.asClip(context)) - showConfetti() - } + onCopy = { + component.cacheImage(essentials::copyToClipboard) }, onEdit = { component.cacheImage { diff --git a/feature/compare/src/main/java/ru/tech/imageresizershrinker/feature/compare/presentation/CompareContent.kt b/feature/compare/src/main/java/ru/tech/imageresizershrinker/feature/compare/presentation/CompareContent.kt index 4ae29240b..0cba89bac 100644 --- a/feature/compare/src/main/java/ru/tech/imageresizershrinker/feature/compare/presentation/CompareContent.kt +++ b/feature/compare/src/main/java/ru/tech/imageresizershrinker/feature/compare/presentation/CompareContent.kt @@ -52,7 +52,6 @@ import ru.tech.imageresizershrinker.core.settings.presentation.provider.LocalSet import ru.tech.imageresizershrinker.core.ui.theme.blend import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.Picker import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials @@ -239,13 +238,11 @@ fun CompareContent( ) showShareSheet = false }, - onCopy = { imageFormat, manager -> + onCopy = { imageFormat -> component.cacheCurrentImage( - imageFormat = imageFormat - ) { uri -> - manager.copyToClipboard(uri.asClip(context)) - showConfetti() - } + imageFormat = imageFormat, + onComplete = essentials::copyToClipboard + ) }, previewData = previewBitmap, transformations = transformations diff --git a/feature/compare/src/main/java/ru/tech/imageresizershrinker/feature/compare/presentation/components/CompareShareSheet.kt b/feature/compare/src/main/java/ru/tech/imageresizershrinker/feature/compare/presentation/components/CompareShareSheet.kt index 2889c4bf3..bd85a838f 100644 --- a/feature/compare/src/main/java/ru/tech/imageresizershrinker/feature/compare/presentation/components/CompareShareSheet.kt +++ b/feature/compare/src/main/java/ru/tech/imageresizershrinker/feature/compare/presentation/components/CompareShareSheet.kt @@ -47,8 +47,6 @@ import androidx.compose.ui.unit.dp import coil3.transform.Transformation import ru.tech.imageresizershrinker.core.domain.image.model.ImageFormat import ru.tech.imageresizershrinker.core.resources.R -import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalEssentials -import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials import ru.tech.imageresizershrinker.core.ui.widget.controls.selection.ImageFormatSelector import ru.tech.imageresizershrinker.core.ui.widget.dialogs.OneTimeSaveLocationSelectionDialog import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedButton @@ -69,12 +67,10 @@ internal fun CompareShareSheet( onVisibleChange: (Boolean) -> Unit, onSaveBitmap: (ImageFormat, String?) -> Unit, onShare: (ImageFormat) -> Unit, - onCopy: (ImageFormat, LocalEssentials) -> Unit, + onCopy: (ImageFormat) -> Unit, previewData: Any?, transformations: List ) { - val essentials = rememberLocalEssentials() - EnhancedModalBottomSheet( sheetContent = { var imageFormat by remember { mutableStateOf(ImageFormat.Png.Lossless) } @@ -149,7 +145,7 @@ internal fun CompareShareSheet( .padding(horizontal = 16.dp), shape = centerShape, onClick = { - onCopy(imageFormat, essentials) + onCopy(imageFormat) }, color = MaterialTheme.colorScheme.secondaryContainer, endIcon = Icons.Rounded.ContentCopy diff --git a/feature/crop/src/main/java/ru/tech/imageresizershrinker/feature/crop/presentation/CropContent.kt b/feature/crop/src/main/java/ru/tech/imageresizershrinker/feature/crop/presentation/CropContent.kt index 20c8af54c..3e4ab3a49 100644 --- a/feature/crop/src/main/java/ru/tech/imageresizershrinker/feature/crop/presentation/CropContent.kt +++ b/feature/crop/src/main/java/ru/tech/imageresizershrinker/feature/crop/presentation/CropContent.kt @@ -57,9 +57,7 @@ import ru.tech.imageresizershrinker.core.resources.icons.CropSmall import ru.tech.imageresizershrinker.core.resources.icons.ImageReset import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.Picker import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState -import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials import ru.tech.imageresizershrinker.core.ui.widget.AdaptiveBottomScaffoldLayoutScreen import ru.tech.imageresizershrinker.core.ui.widget.buttons.BottomButtonsBlock @@ -92,8 +90,6 @@ import ru.tech.imageresizershrinker.feature.crop.presentation.screenLogic.CropCo fun CropContent( component: CropComponent ) { - val context = LocalComponentActivity.current - val essentials = rememberLocalEssentials() val scope = essentials.coroutineScope val showConfetti: () -> Unit = essentials::showConfetti @@ -212,11 +208,8 @@ fun CropContent( editSheetData = listOf(uri) } }, - onCopy = { manager -> - component.cacheCurrentImage { uri -> - manager.copyToClipboard(uri.asClip(context)) - showConfetti() - } + onCopy = { + component.cacheCurrentImage(essentials::copyToClipboard) } ) ProcessImagesPreferenceSheet( diff --git a/feature/delete-exif/src/main/java/ru/tech/imageresizershrinker/feature/delete_exif/presentation/DeleteExifContent.kt b/feature/delete-exif/src/main/java/ru/tech/imageresizershrinker/feature/delete_exif/presentation/DeleteExifContent.kt index e9a40321f..0b20f9517 100644 --- a/feature/delete-exif/src/main/java/ru/tech/imageresizershrinker/feature/delete_exif/presentation/DeleteExifContent.kt +++ b/feature/delete-exif/src/main/java/ru/tech/imageresizershrinker/feature/delete_exif/presentation/DeleteExifContent.kt @@ -41,7 +41,6 @@ import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.Picker import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker import ru.tech.imageresizershrinker.core.ui.utils.helper.ImageUtils.localizedName import ru.tech.imageresizershrinker.core.ui.utils.helper.ImageUtils.rememberFileSize -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials @@ -139,11 +138,8 @@ fun DeleteExifContent( onShare = { component.shareBitmaps(showConfetti) }, - onCopy = { manager -> - component.cacheCurrentImage { uri -> - manager.copyToClipboard(uri.asClip(context)) - showConfetti() - } + onCopy = { + component.cacheCurrentImage(essentials::copyToClipboard) }, onEdit = { component.cacheImages { diff --git a/feature/draw/src/main/java/ru/tech/imageresizershrinker/feature/draw/presentation/DrawContent.kt b/feature/draw/src/main/java/ru/tech/imageresizershrinker/feature/draw/presentation/DrawContent.kt index 65c9cd46b..6df880273 100644 --- a/feature/draw/src/main/java/ru/tech/imageresizershrinker/feature/draw/presentation/DrawContent.kt +++ b/feature/draw/src/main/java/ru/tech/imageresizershrinker/feature/draw/presentation/DrawContent.kt @@ -61,9 +61,7 @@ import ru.tech.imageresizershrinker.core.settings.presentation.provider.LocalSet import ru.tech.imageresizershrinker.core.settings.presentation.provider.rememberAppColorTuple import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.Picker import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState -import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalScreenSize import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials import ru.tech.imageresizershrinker.core.ui.widget.AdaptiveBottomScaffoldLayoutScreen @@ -94,8 +92,6 @@ fun DrawContent( component: DrawComponent, ) { val settingsState = LocalSettingsState.current - val context = LocalComponentActivity.current - val themeState = LocalDynamicThemeState.current val appColorTuple = rememberAppColorTuple() @@ -240,11 +236,8 @@ fun DrawContent( onShare = { component.shareBitmap(showConfetti) }, - onCopy = { manager -> - component.cacheCurrentImage { uri -> - manager.copyToClipboard(uri.asClip(context)) - showConfetti() - } + onCopy = { + component.cacheCurrentImage(essentials::copyToClipboard) }, onEdit = { component.cacheCurrentImage { uri -> diff --git a/feature/edit-exif/src/main/java/ru/tech/imageresizershrinker/feature/edit_exif/presentation/EditExifContent.kt b/feature/edit-exif/src/main/java/ru/tech/imageresizershrinker/feature/edit_exif/presentation/EditExifContent.kt index ceb08942b..f06d8da21 100644 --- a/feature/edit-exif/src/main/java/ru/tech/imageresizershrinker/feature/edit_exif/presentation/EditExifContent.kt +++ b/feature/edit-exif/src/main/java/ru/tech/imageresizershrinker/feature/edit_exif/presentation/EditExifContent.kt @@ -46,7 +46,6 @@ import ru.tech.imageresizershrinker.core.resources.icons.MiniEdit import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.Picker import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker import ru.tech.imageresizershrinker.core.ui.utils.helper.ImageUtils.rememberFileSize -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials @@ -80,7 +79,6 @@ fun EditExifContent( val context = LocalComponentActivity.current val essentials = rememberLocalEssentials() - val showConfetti: () -> Unit = essentials::showConfetti AutoContentBasedColors(component.uri) @@ -145,13 +143,10 @@ fun EditExifContent( ShareButton( enabled = component.uri != Uri.EMPTY, onShare = { - component.shareBitmap(showConfetti) + component.shareBitmap(essentials::showConfetti) }, - onCopy = { manager -> - component.cacheCurrentImage { uri -> - manager.copyToClipboard(uri.asClip(context)) - showConfetti() - } + onCopy = { + component.cacheCurrentImage(essentials::copyToClipboard) }, onEdit = { component.cacheCurrentImage { uri -> diff --git a/feature/erase-background/src/main/java/ru/tech/imageresizershrinker/feature/erase_background/presentation/EraseBackgroundContent.kt b/feature/erase-background/src/main/java/ru/tech/imageresizershrinker/feature/erase_background/presentation/EraseBackgroundContent.kt index 649463172..6b4172cb2 100644 --- a/feature/erase-background/src/main/java/ru/tech/imageresizershrinker/feature/erase_background/presentation/EraseBackgroundContent.kt +++ b/feature/erase-background/src/main/java/ru/tech/imageresizershrinker/feature/erase_background/presentation/EraseBackgroundContent.kt @@ -71,9 +71,7 @@ import ru.tech.imageresizershrinker.core.settings.presentation.provider.LocalSim import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.Picker import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState -import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalScreenSize import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials import ru.tech.imageresizershrinker.core.ui.widget.AdaptiveBottomScaffoldLayoutScreen @@ -116,7 +114,6 @@ fun EraseBackgroundContent( component: EraseBackgroundComponent, ) { val settingsState = LocalSettingsState.current - val context = LocalComponentActivity.current val essentials = rememberLocalEssentials() val scope = essentials.coroutineScope @@ -259,11 +256,8 @@ fun EraseBackgroundContent( onShare = { component.shareBitmap(showConfetti) }, - onCopy = { manager -> - component.cacheCurrentImage { uri -> - manager.copyToClipboard(uri.asClip(context)) - showConfetti() - } + onCopy = { + component.cacheCurrentImage(essentials::copyToClipboard) }, onEdit = { component.cacheCurrentImage { uri -> diff --git a/feature/filters/src/main/java/ru/tech/imageresizershrinker/feature/filters/presentation/FiltersContent.kt b/feature/filters/src/main/java/ru/tech/imageresizershrinker/feature/filters/presentation/FiltersContent.kt index 83e4287be..ee53ab266 100644 --- a/feature/filters/src/main/java/ru/tech/imageresizershrinker/feature/filters/presentation/FiltersContent.kt +++ b/feature/filters/src/main/java/ru/tech/imageresizershrinker/feature/filters/presentation/FiltersContent.kt @@ -47,9 +47,7 @@ import androidx.compose.ui.unit.dp import ru.tech.imageresizershrinker.core.filters.presentation.model.UiFilter import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState -import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials import ru.tech.imageresizershrinker.core.ui.widget.AdaptiveLayoutScreen import ru.tech.imageresizershrinker.core.ui.widget.buttons.CompareButton @@ -78,8 +76,6 @@ import ru.tech.imageresizershrinker.feature.filters.presentation.screenLogic.Fil fun FiltersContent( component: FiltersComponent ) { - val context = LocalComponentActivity.current - val essentials = rememberLocalEssentials() val showConfetti: () -> Unit = essentials::showConfetti @@ -113,11 +109,8 @@ fun FiltersContent( onShare = { component.performSharing(showConfetti) }, - onCopy = { manager -> - component.cacheCurrentImage { uri -> - manager.copyToClipboard(uri.asClip(context)) - showConfetti() - } + onCopy = { + component.cacheCurrentImage(essentials::copyToClipboard) }, onEdit = { component.cacheImages { diff --git a/feature/format-conversion/src/main/java/ru/tech/imageresizershrinker/feature/format_conversion/presentation/FormatConversionContent.kt b/feature/format-conversion/src/main/java/ru/tech/imageresizershrinker/feature/format_conversion/presentation/FormatConversionContent.kt index 80a9db0fa..591803ecf 100644 --- a/feature/format-conversion/src/main/java/ru/tech/imageresizershrinker/feature/format_conversion/presentation/FormatConversionContent.kt +++ b/feature/format-conversion/src/main/java/ru/tech/imageresizershrinker/feature/format_conversion/presentation/FormatConversionContent.kt @@ -41,7 +41,6 @@ import ru.tech.imageresizershrinker.core.data.utils.fileSize import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.Picker import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials @@ -155,11 +154,8 @@ fun FormatConversionContent( onShare = { component.shareBitmaps(showConfetti) }, - onCopy = { manager -> - component.cacheCurrentImage { uri -> - manager.copyToClipboard(uri.asClip(context)) - showConfetti() - } + onCopy = { + component.cacheCurrentImage(essentials::copyToClipboard) }, onEdit = { component.cacheImages { diff --git a/feature/gradient-maker/src/main/java/ru/tech/imageresizershrinker/feature/gradient_maker/presentation/GradientMakerContent.kt b/feature/gradient-maker/src/main/java/ru/tech/imageresizershrinker/feature/gradient_maker/presentation/GradientMakerContent.kt index 1e9bf1e72..5bb75a8c0 100644 --- a/feature/gradient-maker/src/main/java/ru/tech/imageresizershrinker/feature/gradient_maker/presentation/GradientMakerContent.kt +++ b/feature/gradient-maker/src/main/java/ru/tech/imageresizershrinker/feature/gradient_maker/presentation/GradientMakerContent.kt @@ -31,8 +31,6 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip -import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials import ru.tech.imageresizershrinker.core.ui.widget.AdaptiveLayoutScreen import ru.tech.imageresizershrinker.core.ui.widget.buttons.ShareButton @@ -54,8 +52,6 @@ import ru.tech.imageresizershrinker.feature.gradient_maker.presentation.screenLo fun GradientMakerContent( component: GradientMakerComponent ) { - val context = LocalComponentActivity.current - val essentials = rememberLocalEssentials() val showConfetti: () -> Unit = essentials::showConfetti @@ -122,11 +118,8 @@ fun GradientMakerContent( onShare = { component.shareBitmaps(showConfetti) }, - onCopy = { manager -> - component.cacheCurrentImage { uri -> - manager.copyToClipboard(uri.asClip(context)) - showConfetti() - } + onCopy = { + component.cacheCurrentImage(essentials::copyToClipboard) }, onEdit = { component.cacheImages { diff --git a/feature/image-cutting/src/main/java/ru/tech/imageresizershrinker/image_cutting/presentation/ImageCutterContent.kt b/feature/image-cutting/src/main/java/ru/tech/imageresizershrinker/image_cutting/presentation/ImageCutterContent.kt index d84edc827..f183b2f81 100644 --- a/feature/image-cutting/src/main/java/ru/tech/imageresizershrinker/image_cutting/presentation/ImageCutterContent.kt +++ b/feature/image-cutting/src/main/java/ru/tech/imageresizershrinker/image_cutting/presentation/ImageCutterContent.kt @@ -35,7 +35,6 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import coil3.toBitmap @@ -43,7 +42,6 @@ import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.Picker import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker import ru.tech.imageresizershrinker.core.ui.utils.helper.ImageUtils.safeAspectRatio -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials import ru.tech.imageresizershrinker.core.ui.widget.AdaptiveLayoutScreen @@ -80,8 +78,6 @@ fun ImageCutterContent( val essentials = rememberLocalEssentials() val showConfetti: () -> Unit = essentials::showConfetti - val context = LocalContext.current - val imagePicker = rememberImagePicker(onSuccess = component::updateUris) val pickImage = imagePicker::pickImage @@ -134,10 +130,8 @@ fun ImageCutterContent( editSheetData = it } }, - onCopy = { manager -> - component.cacheCurrentImage { - manager.copyToClipboard(it.asClip(context)) - } + onCopy = { + component.cacheCurrentImage(essentials::copyToClipboard) } ) ProcessImagesPreferenceSheet( diff --git a/feature/image-stacking/src/main/java/ru/tech/imageresizershrinker/feature/image_stacking/presentation/ImageStackingContent.kt b/feature/image-stacking/src/main/java/ru/tech/imageresizershrinker/feature/image_stacking/presentation/ImageStackingContent.kt index 32ea5c6ea..1207f9ba7 100644 --- a/feature/image-stacking/src/main/java/ru/tech/imageresizershrinker/feature/image_stacking/presentation/ImageStackingContent.kt +++ b/feature/image-stacking/src/main/java/ru/tech/imageresizershrinker/feature/image_stacking/presentation/ImageStackingContent.kt @@ -44,9 +44,7 @@ import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.ui.theme.mixedContainer import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.Picker import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState -import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials import ru.tech.imageresizershrinker.core.ui.widget.AdaptiveLayoutScreen import ru.tech.imageresizershrinker.core.ui.widget.buttons.BottomButtonsBlock @@ -79,8 +77,6 @@ import ru.tech.imageresizershrinker.feature.image_stacking.presentation.screenLo fun ImageStackingContent( component: ImageStackingComponent ) { - val context = LocalComponentActivity.current - val essentials = rememberLocalEssentials() val showConfetti: () -> Unit = essentials::showConfetti @@ -146,11 +142,8 @@ fun ImageStackingContent( onShare = { component.shareBitmap(showConfetti) }, - onCopy = { manager -> - component.cacheCurrentImage { uri -> - manager.copyToClipboard(uri.asClip(context)) - showConfetti() - } + onCopy = { + component.cacheCurrentImage(essentials::copyToClipboard) }, onEdit = { component.cacheCurrentImage { diff --git a/feature/image-stitch/src/main/java/ru/tech/imageresizershrinker/feature/image_stitch/presentation/ImageStitchingContent.kt b/feature/image-stitch/src/main/java/ru/tech/imageresizershrinker/feature/image_stitch/presentation/ImageStitchingContent.kt index a5630ebdd..d3e9be5a5 100644 --- a/feature/image-stitch/src/main/java/ru/tech/imageresizershrinker/feature/image_stitch/presentation/ImageStitchingContent.kt +++ b/feature/image-stitch/src/main/java/ru/tech/imageresizershrinker/feature/image_stitch/presentation/ImageStitchingContent.kt @@ -42,9 +42,7 @@ import androidx.compose.ui.unit.dp import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.Picker import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState -import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials import ru.tech.imageresizershrinker.core.ui.widget.AdaptiveLayoutScreen import ru.tech.imageresizershrinker.core.ui.widget.buttons.BottomButtonsBlock @@ -80,8 +78,6 @@ import kotlin.math.roundToLong fun ImageStitchingContent( component: ImageStitchingComponent ) { - val context = LocalComponentActivity.current - val essentials = rememberLocalEssentials() val showConfetti: () -> Unit = essentials::showConfetti @@ -148,11 +144,8 @@ fun ImageStitchingContent( onShare = { component.shareBitmap(showConfetti) }, - onCopy = { manager -> - component.cacheCurrentImage { uri -> - manager.copyToClipboard(uri.asClip(context)) - showConfetti() - } + onCopy = { + component.cacheCurrentImage(essentials::copyToClipboard) }, onEdit = { component.cacheCurrentImage { diff --git a/feature/limits-resize/src/main/java/ru/tech/imageresizershrinker/feature/limits_resize/presentation/LimitsResizeContent.kt b/feature/limits-resize/src/main/java/ru/tech/imageresizershrinker/feature/limits_resize/presentation/LimitsResizeContent.kt index 42835f1aa..8967e6533 100644 --- a/feature/limits-resize/src/main/java/ru/tech/imageresizershrinker/feature/limits_resize/presentation/LimitsResizeContent.kt +++ b/feature/limits-resize/src/main/java/ru/tech/imageresizershrinker/feature/limits_resize/presentation/LimitsResizeContent.kt @@ -34,9 +34,7 @@ import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.Picker import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker import ru.tech.imageresizershrinker.core.ui.utils.helper.ImageUtils.rememberFileSize -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState -import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials import ru.tech.imageresizershrinker.core.ui.widget.AdaptiveLayoutScreen import ru.tech.imageresizershrinker.core.ui.widget.buttons.BottomButtonsBlock @@ -70,8 +68,6 @@ import ru.tech.imageresizershrinker.feature.limits_resize.presentation.screenLog fun LimitsResizeContent( component: LimitsResizeComponent ) { - val context = LocalComponentActivity.current - val essentials = rememberLocalEssentials() val showConfetti: () -> Unit = essentials::showConfetti @@ -141,11 +137,8 @@ fun LimitsResizeContent( onShare = { component.shareBitmaps(showConfetti) }, - onCopy = { manager -> - component.cacheCurrentImage { uri -> - manager.copyToClipboard(uri.asClip(context)) - showConfetti() - } + onCopy = { + component.cacheCurrentImage(essentials::copyToClipboard) }, onEdit = { component.cacheImages { diff --git a/feature/load-net-image/src/main/java/ru/tech/imageresizershrinker/feature/load_net_image/presentation/components/LoadNetImageAdaptiveActions.kt b/feature/load-net-image/src/main/java/ru/tech/imageresizershrinker/feature/load_net_image/presentation/components/LoadNetImageAdaptiveActions.kt index 11c0fdfca..cef899186 100644 --- a/feature/load-net-image/src/main/java/ru/tech/imageresizershrinker/feature/load_net_image/presentation/components/LoadNetImageAdaptiveActions.kt +++ b/feature/load-net-image/src/main/java/ru/tech/imageresizershrinker/feature/load_net_image/presentation/components/LoadNetImageAdaptiveActions.kt @@ -23,8 +23,6 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import androidx.compose.ui.platform.LocalContext -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials import ru.tech.imageresizershrinker.core.ui.widget.buttons.ShareButton import ru.tech.imageresizershrinker.core.ui.widget.buttons.ZoomButton @@ -35,7 +33,6 @@ import ru.tech.imageresizershrinker.feature.load_net_image.presentation.screenLo internal fun RowScope.LoadNetImageAdaptiveActions( component: LoadNetImageComponent ) { - val context = LocalContext.current val essentials = rememberLocalEssentials() ShareButton( @@ -43,11 +40,8 @@ internal fun RowScope.LoadNetImageAdaptiveActions( onShare = { component.performSharing(essentials::showConfetti) }, - onCopy = { manager -> - component.cacheCurrentImage { uri -> - manager.copyToClipboard(uri.asClip(context)) - essentials.showConfetti() - } + onCopy = { + component.cacheCurrentImage(essentials::copyToClipboard) } ) var showZoomSheet by rememberSaveable { mutableStateOf(false) } diff --git a/feature/markup-layers/src/main/java/ru/tech/imageresizershrinker/feature/markup_layers/presentation/components/MarkupLayersTopAppBarActions.kt b/feature/markup-layers/src/main/java/ru/tech/imageresizershrinker/feature/markup_layers/presentation/components/MarkupLayersTopAppBarActions.kt index 16edea989..11df469b8 100644 --- a/feature/markup-layers/src/main/java/ru/tech/imageresizershrinker/feature/markup_layers/presentation/components/MarkupLayersTopAppBarActions.kt +++ b/feature/markup-layers/src/main/java/ru/tech/imageresizershrinker/feature/markup_layers/presentation/components/MarkupLayersTopAppBarActions.kt @@ -28,11 +28,9 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import kotlinx.coroutines.launch import ru.tech.imageresizershrinker.core.resources.R -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials import ru.tech.imageresizershrinker.core.ui.widget.buttons.ShareButton @@ -48,7 +46,6 @@ internal fun MarkupLayersTopAppBarActions( scaffoldState: BottomSheetScaffoldState ) { val isPortrait by isPortraitOrientationAsState() - val context = LocalContext.current val essentials = rememberLocalEssentials() val scope = essentials.coroutineScope @@ -82,11 +79,8 @@ internal fun MarkupLayersTopAppBarActions( onShare = { component.shareBitmap(showConfetti) }, - onCopy = { manager -> - component.cacheCurrentImage { uri -> - manager.copyToClipboard(uri.asClip(context)) - showConfetti() - } + onCopy = { + component.cacheCurrentImage(essentials::copyToClipboard) }, onEdit = { component.cacheCurrentImage { uri -> diff --git a/feature/noise-generation/src/main/java/ru/tech/imageresizershrinker/noise_generation/presentation/NoiseGenerationContent.kt b/feature/noise-generation/src/main/java/ru/tech/imageresizershrinker/noise_generation/presentation/NoiseGenerationContent.kt index 81f6c1e30..0d396f8c6 100644 --- a/feature/noise-generation/src/main/java/ru/tech/imageresizershrinker/noise_generation/presentation/NoiseGenerationContent.kt +++ b/feature/noise-generation/src/main/java/ru/tech/imageresizershrinker/noise_generation/presentation/NoiseGenerationContent.kt @@ -41,8 +41,6 @@ import androidx.compose.ui.unit.dp import ru.tech.imageresizershrinker.core.domain.image.model.ImageInfo import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.ui.utils.animation.animate -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip -import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials import ru.tech.imageresizershrinker.core.ui.utils.state.derivedValueOf import ru.tech.imageresizershrinker.core.ui.widget.AdaptiveLayoutScreen @@ -66,8 +64,6 @@ import ru.tech.imageresizershrinker.noise_generation.presentation.screenLogic.No fun NoiseGenerationContent( component: NoiseGenerationComponent ) { - val context = LocalComponentActivity.current - val essentials = rememberLocalEssentials() val showConfetti: () -> Unit = essentials::showConfetti @@ -86,11 +82,8 @@ fun NoiseGenerationContent( onShare = { component.shareNoise(showConfetti) }, - onCopy = { manager -> - component.cacheCurrentNoise { uri -> - manager.copyToClipboard(uri.asClip(context)) - showConfetti() - } + onCopy = { + component.cacheCurrentNoise(essentials::copyToClipboard) }, onEdit = { component.cacheCurrentNoise { diff --git a/feature/resize-convert/src/main/java/ru/tech/imageresizershrinker/feature/resize_convert/presentation/ResizeAndConvertContent.kt b/feature/resize-convert/src/main/java/ru/tech/imageresizershrinker/feature/resize_convert/presentation/ResizeAndConvertContent.kt index 9e577c34f..96bab25a7 100644 --- a/feature/resize-convert/src/main/java/ru/tech/imageresizershrinker/feature/resize_convert/presentation/ResizeAndConvertContent.kt +++ b/feature/resize-convert/src/main/java/ru/tech/imageresizershrinker/feature/resize_convert/presentation/ResizeAndConvertContent.kt @@ -48,7 +48,6 @@ import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.icons.ImageReset import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.Picker import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials @@ -175,11 +174,8 @@ fun ResizeAndConvertContent( onShare = { component.performSharing(showConfetti) }, - onCopy = { manager -> - component.cacheCurrentImage { uri -> - manager.copyToClipboard(uri.asClip(context)) - showConfetti() - } + onCopy = { + component.cacheCurrentImage(essentials::copyToClipboard) }, onEdit = { component.cacheImages { diff --git a/feature/scan-qr-code/src/main/java/ru/tech/imageresizershrinker/feature/scan_qr_code/presentation/ScanQrCodeContent.kt b/feature/scan-qr-code/src/main/java/ru/tech/imageresizershrinker/feature/scan_qr_code/presentation/ScanQrCodeContent.kt index 78996afa6..573857ef5 100644 --- a/feature/scan-qr-code/src/main/java/ru/tech/imageresizershrinker/feature/scan_qr_code/presentation/ScanQrCodeContent.kt +++ b/feature/scan-qr-code/src/main/java/ru/tech/imageresizershrinker/feature/scan_qr_code/presentation/ScanQrCodeContent.kt @@ -43,13 +43,13 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.asAndroidBitmap import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp +import dev.shreyaspatil.capturable.controller.CaptureController import dev.shreyaspatil.capturable.controller.rememberCaptureController import kotlinx.coroutines.launch import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.ui.theme.takeColorFromScheme import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.Picker import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState import ru.tech.imageresizershrinker.core.ui.utils.helper.rememberBarcodeScanner import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity @@ -162,20 +162,18 @@ fun ScanQrCodeContent( enabled = params.content.isNotEmpty(), onShare = { scope.launch { - val bitmap = captureController.captureAsync().await().asAndroidBitmap() component.shareImage( - bitmap = bitmap, + bitmap = captureController.bitmap(), onComplete = showConfetti ) } }, - onCopy = { manager -> + onCopy = { scope.launch { - val bitmap = captureController.captureAsync().await().asAndroidBitmap() - component.cacheImage(bitmap) { uri -> - manager.copyToClipboard(uri.asClip(context)) - showConfetti() - } + component.cacheImage( + bitmap = captureController.bitmap(), + onComplete = essentials::copyToClipboard + ) } } ) @@ -277,4 +275,6 @@ fun ScanQrCodeContent( onCancelLoading = component::cancelSaving ) -} \ No newline at end of file +} + +private suspend fun CaptureController.bitmap(): Bitmap = captureAsync().await().asAndroidBitmap() \ No newline at end of file diff --git a/feature/single-edit/src/main/java/ru/tech/imageresizershrinker/feature/single_edit/presentation/SingleEditContent.kt b/feature/single-edit/src/main/java/ru/tech/imageresizershrinker/feature/single_edit/presentation/SingleEditContent.kt index b892a80cb..23dc13d7e 100644 --- a/feature/single-edit/src/main/java/ru/tech/imageresizershrinker/feature/single_edit/presentation/SingleEditContent.kt +++ b/feature/single-edit/src/main/java/ru/tech/imageresizershrinker/feature/single_edit/presentation/SingleEditContent.kt @@ -39,7 +39,6 @@ import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.icons.ImageReset import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.Picker import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials @@ -183,11 +182,8 @@ fun SingleEditContent( onShare = { component.shareBitmap(showConfetti) }, - onCopy = { manager -> - component.cacheCurrentImage { uri -> - manager.copyToClipboard(uri.asClip(context)) - showConfetti() - } + onCopy = { + component.cacheCurrentImage(essentials::copyToClipboard) }, onEdit = { component.cacheCurrentImage { uri -> diff --git a/feature/watermarking/src/main/java/ru/tech/imageresizershrinker/feature/watermarking/presentation/WatermarkingContent.kt b/feature/watermarking/src/main/java/ru/tech/imageresizershrinker/feature/watermarking/presentation/WatermarkingContent.kt index f2ba9e190..8f7105074 100644 --- a/feature/watermarking/src/main/java/ru/tech/imageresizershrinker/feature/watermarking/presentation/WatermarkingContent.kt +++ b/feature/watermarking/src/main/java/ru/tech/imageresizershrinker/feature/watermarking/presentation/WatermarkingContent.kt @@ -36,9 +36,7 @@ import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.resources.icons.ImageReset import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.Picker import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState -import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials import ru.tech.imageresizershrinker.core.ui.widget.AdaptiveLayoutScreen import ru.tech.imageresizershrinker.core.ui.widget.buttons.BottomButtonsBlock @@ -77,8 +75,6 @@ import ru.tech.imageresizershrinker.feature.watermarking.presentation.screenLogi fun WatermarkingContent( component: WatermarkingComponent ) { - val context = LocalComponentActivity.current - val essentials = rememberLocalEssentials() val showConfetti: () -> Unit = essentials::showConfetti @@ -143,11 +139,8 @@ fun WatermarkingContent( onShare = { component.shareBitmaps(showConfetti) }, - onCopy = { manager -> - component.cacheCurrentImage { uri -> - manager.copyToClipboard(uri.asClip(context)) - showConfetti() - } + onCopy = { + component.cacheCurrentImage(essentials::copyToClipboard) }, onEdit = { component.cacheImages { diff --git a/feature/weight-resize/src/main/java/ru/tech/imageresizershrinker/feature/weight_resize/presentation/WeightResizeContent.kt b/feature/weight-resize/src/main/java/ru/tech/imageresizershrinker/feature/weight_resize/presentation/WeightResizeContent.kt index 1ce35a5d2..9d69fb5c6 100644 --- a/feature/weight-resize/src/main/java/ru/tech/imageresizershrinker/feature/weight_resize/presentation/WeightResizeContent.kt +++ b/feature/weight-resize/src/main/java/ru/tech/imageresizershrinker/feature/weight_resize/presentation/WeightResizeContent.kt @@ -48,9 +48,7 @@ import ru.tech.imageresizershrinker.core.resources.R import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.Picker import ru.tech.imageresizershrinker.core.ui.utils.content_pickers.rememberImagePicker import ru.tech.imageresizershrinker.core.ui.utils.helper.ImageUtils.restrict -import ru.tech.imageresizershrinker.core.ui.utils.helper.asClip import ru.tech.imageresizershrinker.core.ui.utils.helper.isPortraitOrientationAsState -import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalComponentActivity import ru.tech.imageresizershrinker.core.ui.utils.provider.rememberLocalEssentials import ru.tech.imageresizershrinker.core.ui.widget.AdaptiveLayoutScreen import ru.tech.imageresizershrinker.core.ui.widget.buttons.BottomButtonsBlock @@ -85,8 +83,6 @@ import ru.tech.imageresizershrinker.feature.weight_resize.presentation.screenLog fun WeightResizeContent( component: WeightResizeComponent ) { - val context = LocalComponentActivity.current - val essentials = rememberLocalEssentials() val showConfetti: () -> Unit = essentials::showConfetti @@ -164,11 +160,8 @@ fun WeightResizeContent( onShare = { component.shareBitmaps { showConfetti() } }, - onCopy = { manager -> - component.cacheCurrentImage { uri -> - manager.copyToClipboard(uri.asClip(context)) - showConfetti() - } + onCopy = { + component.cacheCurrentImage(essentials::copyToClipboard) }, onEdit = { component.cacheImages {