Skip to content

Commit

Permalink
Code optimisation
Browse files Browse the repository at this point in the history
  • Loading branch information
T8RIN committed Jan 23, 2025
1 parent 6c8ef7d commit 532664e
Show file tree
Hide file tree
Showing 63 changed files with 59 additions and 162 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,10 @@ package ru.tech.imageresizershrinker.app.presentation.components

import android.app.Application
import com.arkivanov.decompose.DecomposeExperimentFlags
import com.arkivanov.decompose.ExperimentalDecomposeApi
import dagger.hilt.android.HiltAndroidApp
import ru.tech.imageresizershrinker.app.presentation.components.utils.registerSecurityProviders


@OptIn(ExperimentalDecomposeApi::class)
@HiltAndroidApp
class ImageToolboxApplication : Application() {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,12 @@ internal fun Project.configureCompose(

extensions.configure<ComposeCompilerGradlePluginExtension> {
featureFlags = setOf(
ComposeFeatureFlag.OptimizeNonSkippingGroups
ComposeFeatureFlag.OptimizeNonSkippingGroups,
ComposeFeatureFlag.PausableComposition
)

stabilityConfigurationFile =
stabilityConfigurationFiles.addAll(
rootProject.layout.projectDirectory.file("compose_compiler_config.conf")
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ import org.gradle.kotlin.dsl.provideDelegate
import org.gradle.kotlin.dsl.withType
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinBaseExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinTopLevelExtension
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

internal fun Project.configureKotlinAndroid(
Expand Down Expand Up @@ -97,16 +97,25 @@ val Project.javaVersion: JavaVersion
/**
* Configure base Kotlin options
*/
private inline fun <reified T : KotlinTopLevelExtension> Project.configureKotlin() = configure<T> {
private inline fun <reified T : KotlinBaseExtension> Project.configureKotlin() = configure<T> {
val args = listOf(
"-opt-in=androidx.compose.material3.ExperimentalMaterial3Api",
"-opt-in=androidx.compose.material3.ExperimentalMaterial3ExpressiveApi",
"-opt-in=androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi",
"-opt-in=androidx.compose.animation.ExperimentalAnimationApi",
"-opt-in=androidx.compose.foundation.ExperimentalFoundationApi",
"-opt-in=androidx.compose.foundation.layout.ExperimentalLayoutApi",
"-opt-in=androidx.compose.ui.unit.ExperimentalUnitApi",
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
"-opt-in=kotlinx.coroutines.FlowPreview",
"-opt-in=androidx.compose.material.ExperimentalMaterialApi",
"-opt-in=com.arkivanov.decompose.ExperimentalDecomposeApi",
"-opt-in=coil3.annotation.ExperimentalCoilApi",
"-opt-in=coil3.annotation.DelicateCoilApi",
"-opt-in=kotlin.contracts.ExperimentalContracts",
"-opt-in=androidx.compose.ui.ExperimentalComposeUiApi",
"-opt-in=androidx.compose.ui.text.ExperimentalTextApi",
"-opt-in=kotlinx.coroutines.DelicateCoroutinesApi"
)
// Treat all Kotlin warnings as errors (disabled by default)
// Override by setting warningsAsErrors=true in your ~/.gradle/gradle.properties
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import android.os.Build
import coil3.ComponentRegistry
import coil3.ImageLoader
import coil3.SingletonImageLoader
import coil3.annotation.DelicateCoilApi
import coil3.gif.AnimatedImageDecoder
import coil3.gif.GifDecoder
import coil3.imageLoader
Expand Down Expand Up @@ -55,7 +54,6 @@ import ru.tech.imageresizershrinker.core.resources.BuildConfig
@InstallIn(SingletonComponent::class)
internal object ImageLoaderModule {

@OptIn(DelicateCoilApi::class)
@Provides
fun provideImageLoader(
@ApplicationContext context: Context,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,13 @@

package ru.tech.imageresizershrinker.core.domain.saving.io

import kotlin.contracts.ExperimentalContracts
import kotlin.contracts.InvocationKind
import kotlin.contracts.contract

interface IoCloseable {
fun close()
}

@OptIn(ExperimentalContracts::class)
inline fun <T : IoCloseable?, R> T.use(block: (T) -> R): R {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.asAndroidBitmap
Expand Down Expand Up @@ -96,7 +95,6 @@ import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItem
import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceItemDefaults
import ru.tech.imageresizershrinker.core.ui.widget.text.TitleItem

@OptIn(ExperimentalComposeUiApi::class)
@Composable
internal fun FilterTemplateInfoSheet(
component: FilterTemplateCreationSheetComponent,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import android.os.Build
import androidx.compose.runtime.Composable
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.text.ExperimentalTextApi
import androidx.compose.ui.text.font.Font
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontStyle
Expand Down Expand Up @@ -406,7 +405,6 @@ fun DomainFontFamily.toUiFont(): UiFontFamily = when (this) {
)
}

@OptIn(ExperimentalTextApi::class)
private fun fontFamilyResource(resId: Int) = FontFamily(
Font(
resId = resId,
Expand Down Expand Up @@ -450,7 +448,6 @@ private fun fontFamilyResource(resId: Int) = FontFamily(
)
)

@OptIn(ExperimentalTextApi::class)
private fun fontFamilyFromFile(file: File) = FontFamily(
Font(
file = file,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.CutCornerShape
import androidx.compose.foundation.shape.GenericShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.MaterialShapes
import androidx.compose.runtime.Composable
Expand Down Expand Up @@ -57,7 +56,6 @@ import kotlin.math.atan2

object IconShapeDefaults {

@OptIn(ExperimentalMaterial3ExpressiveApi::class)
val shapes: ImmutableList<IconShape> by lazy {
listOf(
IconShape(SquircleShape),
Expand Down Expand Up @@ -202,7 +200,6 @@ fun IconShapeContainer(
}
}

@ExperimentalMaterial3ExpressiveApi
fun RoundedPolygon.toShape(startAngle: Int = 0): Shape {
return GenericShape { size, direction ->
rewind()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,11 @@ package ru.tech.imageresizershrinker.core.ui.theme
import androidx.compose.animation.core.FiniteAnimationSpec
import androidx.compose.animation.core.spring
import androidx.compose.animation.core.tween
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
import androidx.compose.material3.MotionScheme
import ru.tech.imageresizershrinker.core.domain.utils.cast
import ru.tech.imageresizershrinker.core.ui.utils.animation.FancyTransitionEasing

@OptIn(ExperimentalMaterial3ExpressiveApi::class)

internal val CustomMotionScheme: MotionScheme = object : MotionScheme {
val SpringDefaultSpatialDamping = 0.8f
val SpringDefaultSpatialStiffness = 380.0f
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ package ru.tech.imageresizershrinker.core.ui.theme
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxScope
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.runtime.Composable
Expand All @@ -30,7 +29,6 @@ import com.t8rin.dynamic.theme.rememberDynamicThemeState
import ru.tech.imageresizershrinker.core.settings.presentation.provider.LocalSettingsState
import ru.tech.imageresizershrinker.core.settings.presentation.provider.rememberAppColorTuple

@OptIn(ExperimentalMaterial3ExpressiveApi::class)
@Composable
fun ImageToolboxTheme(
content: @Composable () -> Unit
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@

package ru.tech.imageresizershrinker.core.ui.utils

import androidx.compose.runtime.Immutable
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.Stable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import com.arkivanov.decompose.ComponentContext
Expand All @@ -35,6 +37,8 @@ import kotlin.coroutines.CoroutineContext
import kotlin.coroutines.EmptyCoroutineContext
import kotlinx.coroutines.launch as internalLaunch

@Stable
@Immutable
abstract class BaseComponent(
private val dispatchersHolder: DispatchersHolder,
private val componentContext: ComponentContext
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import androidx.compose.animation.fadeOut
import androidx.compose.animation.slideInHorizontally
import androidx.compose.animation.slideOutHorizontally
import androidx.compose.animation.togetherWith
import com.arkivanov.decompose.ExperimentalDecomposeApi
import com.arkivanov.decompose.extensions.compose.stack.animation.StackAnimation
import com.arkivanov.decompose.extensions.compose.stack.animation.fade
import com.arkivanov.decompose.extensions.compose.stack.animation.plus
Expand Down Expand Up @@ -83,7 +82,6 @@ private fun <T> openCloseTransitionSpec(
easing = TransitionEasing
)

@OptIn(ExperimentalDecomposeApi::class)
fun <NavigationChild : Any> toolboxPredictiveBackAnimation(
backHandler: BackHandler,
onBack: () -> Unit
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,23 +34,31 @@ import ru.tech.imageresizershrinker.core.ui.utils.provider.LocalWindowSizeClass
@Composable
operator fun PaddingValues.plus(paddingValues: PaddingValues): PaddingValues {
val ld = LocalLayoutDirection.current
return PaddingValues(
start = calculateStartPadding(ld) + paddingValues.calculateStartPadding(ld),
top = calculateTopPadding() + paddingValues.calculateTopPadding(),
end = calculateEndPadding(ld) + paddingValues.calculateEndPadding(ld),
bottom = calculateBottomPadding() + paddingValues.calculateBottomPadding(),
)
return remember(ld, paddingValues) {
derivedStateOf {
PaddingValues(
start = calculateStartPadding(ld) + paddingValues.calculateStartPadding(ld),
top = calculateTopPadding() + paddingValues.calculateTopPadding(),
end = calculateEndPadding(ld) + paddingValues.calculateEndPadding(ld),
bottom = calculateBottomPadding() + paddingValues.calculateBottomPadding(),
)
}
}.value
}

@Composable
operator fun PaddingValues.minus(paddingValues: PaddingValues): PaddingValues {
val ld = LocalLayoutDirection.current
return PaddingValues(
start = calculateStartPadding(ld) - paddingValues.calculateStartPadding(ld),
top = calculateTopPadding() - paddingValues.calculateTopPadding(),
end = calculateEndPadding(ld) - paddingValues.calculateEndPadding(ld),
bottom = calculateBottomPadding() - paddingValues.calculateBottomPadding(),
)
return remember(ld, paddingValues) {
derivedStateOf {
PaddingValues(
start = calculateStartPadding(ld) - paddingValues.calculateStartPadding(ld),
top = calculateTopPadding() - paddingValues.calculateTopPadding(),
end = calculateEndPadding(ld) - paddingValues.calculateEndPadding(ld),
bottom = calculateBottomPadding() - paddingValues.calculateBottomPadding(),
)
}
}.value
}

@Composable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ import androidx.compose.material.icons.rounded.AddCircleOutline
import androidx.compose.material.icons.rounded.Contrast
import androidx.compose.material.icons.rounded.Delete
import androidx.compose.material.icons.rounded.InvertColors
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
Expand Down Expand Up @@ -98,7 +97,6 @@ import ru.tech.imageresizershrinker.core.ui.widget.preferences.PreferenceRowSwit
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText
import ru.tech.imageresizershrinker.core.ui.widget.text.TitleItem

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun AvailableColorTuplesSheet(
visible: Boolean,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Palette
import androidx.compose.material.icons.rounded.ContentPaste
import androidx.compose.material.icons.rounded.FormatColorFill
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
Expand Down Expand Up @@ -65,7 +64,6 @@ import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText
import ru.tech.imageresizershrinker.core.ui.widget.text.TitleItem

@ExperimentalMaterial3Api
@Composable
fun ColorTuplePicker(
visible: Boolean,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ package ru.tech.imageresizershrinker.core.ui.widget.color_picker

import androidx.compose.animation.AnimatedContent
import androidx.compose.animation.animateColorAsState
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxWithConstraints
Expand Down Expand Up @@ -54,7 +53,7 @@ import ru.tech.imageresizershrinker.core.ui.theme.outlineVariant
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.hapticsClickable
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container

@OptIn(ExperimentalFoundationApi::class)

@Composable
fun ColorTuplePreview(
modifier: Modifier = Modifier,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import androidx.compose.foundation.gestures.detectTapGestures
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ExperimentalLayoutApi
import androidx.compose.foundation.layout.FlowRow
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Spacer
Expand Down Expand Up @@ -61,7 +60,7 @@ import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedChip
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
import ru.tech.imageresizershrinker.core.ui.widget.other.LocalToastHostState

@OptIn(ExperimentalLayoutApi::class)

@Composable
fun ImageFormatSelector(
modifier: Modifier = Modifier,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.FitScreen
import androidx.compose.material.icons.outlined.Info
Expand Down Expand Up @@ -88,7 +87,7 @@ import ru.tech.imageresizershrinker.core.ui.widget.text.AutoSizeText
import ru.tech.imageresizershrinker.core.ui.widget.text.RoundedTextField
import ru.tech.imageresizershrinker.core.ui.widget.text.RoundedTextFieldColors

@OptIn(ExperimentalMaterialApi::class)

@Composable
fun PresetSelector(
value: Preset,
Expand Down Expand Up @@ -206,7 +205,7 @@ fun PresetSelector(
modifier = Modifier.fillMaxWidth(),
title = stringResource(R.string.fit_to_bounds),
subtitle = stringResource(R.string.fit_to_bounds_sub),
checked = (value as? Preset.AspectRatio)?.isFit ?: false,
checked = (value as? Preset.AspectRatio)?.isFit == true,
onClick = {
if (value is Preset.AspectRatio) {
onValueChange(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.CreateNewFolder
import androidx.compose.material.icons.outlined.DriveFileRenameOutline
Expand Down Expand Up @@ -85,7 +84,7 @@ import java.text.SimpleDateFormat
import java.util.Date
import java.util.Locale

@OptIn(ExperimentalMaterialApi::class)

@Composable
fun OneTimeSaveLocationSelectionDialog(
visible: Boolean,
Expand Down
Loading

0 comments on commit 532664e

Please sign in to comment.