diff --git a/CHANGELOG.md b/CHANGELOG.md index b317e08e13..8e4a9d2eab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ Attention: don't forget to add the flag for F-Droid before release - [Refactor] Replace Ktorfit with Ktor requests in remote-controls - [Refactor] Migrate :core:preference to KMP - [Refactor] Migrate :bridge:connection:* to KMP +- [Refactor] Migrate :bridge:synchronization, :core:ktx and :core:theme to KMP - [Refactor] Remove ktorfit - [FIX] Distinct fap items by id in paging sources - [FIX] Battery level charge diff --git a/build-logic/plugins/convention/src/main/kotlin/flipper.multiplatform-compose.gradle.kts b/build-logic/plugins/convention/src/main/kotlin/flipper.multiplatform-compose.gradle.kts index bf0378fd2b..188cd6a0fb 100644 --- a/build-logic/plugins/convention/src/main/kotlin/flipper.multiplatform-compose.gradle.kts +++ b/build-logic/plugins/convention/src/main/kotlin/flipper.multiplatform-compose.gradle.kts @@ -1,49 +1,11 @@ -import com.android.build.gradle.BaseExtension -import org.jetbrains.kotlin.gradle.dsl.JvmTarget - plugins { - id("org.jetbrains.kotlin.multiplatform") + id("flipper.multiplatform") id("org.jetbrains.compose") id("org.jetbrains.kotlin.plugin.compose") - id("com.android.library") - id("flipper.lint") -} - -configure { - commonAndroid(project) } kotlin { - androidTarget { - compilerOptions { - jvmTarget = JvmTarget.JVM_1_8 - } - } - jvm("desktop") - sourceSets { - val commonMain by getting - - /** - * We shouldn't create sources, which is named as original targets sourcesets. - * - * As an example - jvm() target will create sourceSet jvmMain - and we would have conflicts - * with our create jvmMain sourceSet - * - * This is the reason to name it `jvmSharedMain` - */ - val jvmSharedMain by creating { - dependsOn(commonMain) - } - - val androidMain by getting { - dependsOn(jvmSharedMain) - } - - val desktopMain by getting { - dependsOn(jvmSharedMain) - } - androidMain.dependencies { implementation(libs.compose.tooling) } @@ -53,26 +15,11 @@ kotlin { implementation(compose.material) implementation(compose.ui) implementation(compose.components.resources) + implementation(compose.components.uiToolingPreview) } + val desktopMain by getting desktopMain.dependencies { implementation(compose.desktop.currentOs) } - - // Testing - val commonTest by getting - - val jvmSharedTest by creating { - dependsOn(commonTest) - } - - @Suppress("UnusedPrivateProperty") - val androidUnitTest by getting { - dependsOn(jvmSharedTest) - } - - @Suppress("UnusedPrivateProperty") - val desktopTest by getting { - dependsOn(jvmSharedTest) - } } } diff --git a/components/archive/api/build.gradle.kts b/components/archive/api/build.gradle.kts index a19e5bff06..cf5ecf1b61 100644 --- a/components/archive/api/build.gradle.kts +++ b/components/archive/api/build.gradle.kts @@ -1,6 +1,6 @@ plugins { id("flipper.android-compose") - id("kotlin-parcelize") + id("kotlinx-serialization") } diff --git a/components/archive/api/src/main/java/com/flipperdevices/archive/model/CategoryType.kt b/components/archive/api/src/main/java/com/flipperdevices/archive/model/CategoryType.kt index 6721ca80df..2344c21d53 100644 --- a/components/archive/api/src/main/java/com/flipperdevices/archive/model/CategoryType.kt +++ b/components/archive/api/src/main/java/com/flipperdevices/archive/model/CategoryType.kt @@ -1,21 +1,17 @@ package com.flipperdevices.archive.model -import android.os.Parcelable import androidx.compose.runtime.Immutable import com.flipperdevices.bridge.dao.api.model.FlipperKeyType -import kotlinx.parcelize.Parcelize import kotlinx.serialization.Serializable @Serializable @Immutable -sealed class CategoryType : Parcelable { - @Parcelize +sealed class CategoryType { @Serializable data class ByFileType( val fileType: FlipperKeyType ) : CategoryType() - @Parcelize @Serializable - object Deleted : CategoryType() + data object Deleted : CategoryType() } diff --git a/components/archive/impl/build.gradle.kts b/components/archive/impl/build.gradle.kts index d2c738525b..42d70f1e0d 100644 --- a/components/archive/impl/build.gradle.kts +++ b/components/archive/impl/build.gradle.kts @@ -1,6 +1,6 @@ plugins { id("flipper.android-compose") - id("kotlin-parcelize") + id("flipper.anvil") id("kotlinx-serialization") } diff --git a/components/archive/impl/src/main/java/com/flipperdevices/archive/impl/model/CategoryItem.kt b/components/archive/impl/src/main/java/com/flipperdevices/archive/impl/model/CategoryItem.kt index 2a5c8c54b8..229aa934a1 100644 --- a/components/archive/impl/src/main/java/com/flipperdevices/archive/impl/model/CategoryItem.kt +++ b/components/archive/impl/src/main/java/com/flipperdevices/archive/impl/model/CategoryItem.kt @@ -1,14 +1,11 @@ package com.flipperdevices.archive.impl.model -import android.os.Parcelable import androidx.annotation.DrawableRes import com.flipperdevices.archive.model.CategoryType -import kotlinx.parcelize.Parcelize -@Parcelize data class CategoryItem( @DrawableRes val iconId: Int?, val title: String, val count: Int?, val categoryType: CategoryType -) : Parcelable +) diff --git a/components/archive/impl/src/main/java/com/flipperdevices/archive/impl/viewmodel/CategoryViewModel.kt b/components/archive/impl/src/main/java/com/flipperdevices/archive/impl/viewmodel/CategoryViewModel.kt index 6f05aaa0cd..1ff59972cb 100644 --- a/components/archive/impl/src/main/java/com/flipperdevices/archive/impl/viewmodel/CategoryViewModel.kt +++ b/components/archive/impl/src/main/java/com/flipperdevices/archive/impl/viewmodel/CategoryViewModel.kt @@ -7,6 +7,7 @@ import com.flipperdevices.archive.model.CategoryType import com.flipperdevices.bridge.dao.api.delegates.key.DeleteKeyApi import com.flipperdevices.bridge.dao.api.delegates.key.SimpleKeyApi import com.flipperdevices.bridge.dao.api.model.FlipperKeyType +import com.flipperdevices.bridge.dao.api.model.icon import com.flipperdevices.core.ui.lifecycle.DecomposeViewModel import kotlinx.collections.immutable.PersistentList import kotlinx.collections.immutable.persistentListOf diff --git a/components/bridge/api/build.gradle.kts b/components/bridge/api/build.gradle.kts index 4752dbe7d3..002db5e849 100644 --- a/components/bridge/api/build.gradle.kts +++ b/components/bridge/api/build.gradle.kts @@ -1,6 +1,5 @@ plugins { id("flipper.android-lib") - id("kotlin-parcelize") } android.namespace = "com.flipperdevices.bridge.api" diff --git a/components/bridge/api/src/main/java/com/flipperdevices/bridge/api/scanner/DiscoveredBluetoothDevice.kt b/components/bridge/api/src/main/java/com/flipperdevices/bridge/api/scanner/DiscoveredBluetoothDevice.kt index 708497d49a..483db0780e 100644 --- a/components/bridge/api/src/main/java/com/flipperdevices/bridge/api/scanner/DiscoveredBluetoothDevice.kt +++ b/components/bridge/api/src/main/java/com/flipperdevices/bridge/api/scanner/DiscoveredBluetoothDevice.kt @@ -3,12 +3,9 @@ package com.flipperdevices.bridge.api.scanner import android.annotation.SuppressLint import android.bluetooth.BluetoothDevice import android.os.ParcelUuid -import android.os.Parcelable -import kotlinx.parcelize.Parcelize import no.nordicsemi.android.support.v18.scanner.ScanResult import java.util.UUID -@Parcelize data class DiscoveredBluetoothDevice( val device: BluetoothDevice, private var lastScanResult: ScanResult? = null, @@ -17,7 +14,7 @@ data class DiscoveredBluetoothDevice( private var previousRssi: Int, private var highestRssiInternal: Int = Byte.MIN_VALUE.toInt(), private var servicesResult: List? = null -) : Parcelable { +) { // Wrapper for data variables val address: String get() = device.address val scanResult: ScanResult? get() = lastScanResult diff --git a/components/bridge/dao/api/build.gradle.kts b/components/bridge/dao/api/build.gradle.kts index 949fd66239..8597d06e84 100644 --- a/components/bridge/dao/api/build.gradle.kts +++ b/components/bridge/dao/api/build.gradle.kts @@ -1,19 +1,26 @@ plugins { - id("flipper.android-compose") + id("flipper.multiplatform-compose") + id("flipper.multiplatform-dependencies") id("kotlinx-serialization") id("kotlin-parcelize") } android.namespace = "com.flipperdevices.bridge.dao.api" -dependencies { +compose.resources { + publicResClass = true +} + +commonDependencies { + implementation(projects.components.core.kmpparcelize) implementation(projects.components.core.ui.theme) - implementation(projects.components.core.ui.res) implementation(projects.components.core.ktx) implementation(libs.kotlin.coroutines) implementation(libs.kotlin.serialization.json) implementation(libs.kotlin.immutable.collections) +} - implementation(libs.compose.ui) +androidDependencies { + implementation(projects.components.core.ui.res) } diff --git a/components/bridge/dao/api/src/androidMain/kotlin/com/flipperdevices/bridge/dao/api/model/FlipperKeyTypeKtx.kt b/components/bridge/dao/api/src/androidMain/kotlin/com/flipperdevices/bridge/dao/api/model/FlipperKeyTypeKtx.kt new file mode 100644 index 0000000000..dbf1179cb2 --- /dev/null +++ b/components/bridge/dao/api/src/androidMain/kotlin/com/flipperdevices/bridge/dao/api/model/FlipperKeyTypeKtx.kt @@ -0,0 +1,12 @@ +package com.flipperdevices.bridge.dao.api.model + +import com.flipperdevices.core.ui.res.R as DesignSystem + +val FlipperKeyType.icon: Int + get() = when (this) { + FlipperKeyType.SUB_GHZ -> DesignSystem.drawable.ic_fileformat_sub + FlipperKeyType.RFID -> DesignSystem.drawable.ic_fileformat_rf + FlipperKeyType.NFC -> DesignSystem.drawable.ic_fileformat_nfc + FlipperKeyType.INFRARED -> DesignSystem.drawable.ic_fileformat_ir + FlipperKeyType.I_BUTTON -> DesignSystem.drawable.ic_fileformat_ibutton + } diff --git a/components/bridge/dao/api/src/main/res/values/strings.xml b/components/bridge/dao/api/src/commonMain/composeResources/values/strings.xml similarity index 100% rename from components/bridge/dao/api/src/main/res/values/strings.xml rename to components/bridge/dao/api/src/commonMain/composeResources/values/strings.xml diff --git a/components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/FapHubHideItemApi.kt b/components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/FapHubHideItemApi.kt similarity index 100% rename from components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/FapHubHideItemApi.kt rename to components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/FapHubHideItemApi.kt diff --git a/components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/delegates/FavoriteApi.kt b/components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/delegates/FavoriteApi.kt similarity index 100% rename from components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/delegates/FavoriteApi.kt rename to components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/delegates/FavoriteApi.kt diff --git a/components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/delegates/FlipperFileApi.kt b/components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/delegates/FlipperFileApi.kt similarity index 100% rename from components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/delegates/FlipperFileApi.kt rename to components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/delegates/FlipperFileApi.kt diff --git a/components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/delegates/WidgetDataApi.kt b/components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/delegates/WidgetDataApi.kt similarity index 100% rename from components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/delegates/WidgetDataApi.kt rename to components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/delegates/WidgetDataApi.kt diff --git a/components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/delegates/key/DeleteKeyApi.kt b/components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/delegates/key/DeleteKeyApi.kt similarity index 100% rename from components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/delegates/key/DeleteKeyApi.kt rename to components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/delegates/key/DeleteKeyApi.kt diff --git a/components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/delegates/key/SimpleKeyApi.kt b/components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/delegates/key/SimpleKeyApi.kt similarity index 100% rename from components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/delegates/key/SimpleKeyApi.kt rename to components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/delegates/key/SimpleKeyApi.kt diff --git a/components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/delegates/key/UpdateKeyApi.kt b/components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/delegates/key/UpdateKeyApi.kt similarity index 100% rename from components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/delegates/key/UpdateKeyApi.kt rename to components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/delegates/key/UpdateKeyApi.kt diff --git a/components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/delegates/key/UtilsKeyApi.kt b/components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/delegates/key/UtilsKeyApi.kt similarity index 100% rename from components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/delegates/key/UtilsKeyApi.kt rename to components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/delegates/key/UtilsKeyApi.kt diff --git a/components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/model/FapHubHiddenItem.kt b/components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/model/FapHubHiddenItem.kt similarity index 100% rename from components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/model/FapHubHiddenItem.kt rename to components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/model/FapHubHiddenItem.kt diff --git a/components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/model/FlipperFilePath.kt b/components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/model/FlipperFilePath.kt similarity index 83% rename from components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/model/FlipperFilePath.kt rename to components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/model/FlipperFilePath.kt index 5a2babb337..f8b6f0353c 100644 --- a/components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/model/FlipperFilePath.kt +++ b/components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/model/FlipperFilePath.kt @@ -1,8 +1,8 @@ package com.flipperdevices.bridge.dao.api.model -import android.os.Parcelable -import kotlinx.parcelize.IgnoredOnParcel -import kotlinx.parcelize.Parcelize +import com.flipperdevices.core.kmpparcelize.KMPIgnoreOnParcel +import com.flipperdevices.core.kmpparcelize.KMPParcelable +import com.flipperdevices.core.kmpparcelize.KMPParcelize import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import java.io.File @@ -16,18 +16,18 @@ private const val FLIPPER_STORAGE_NAME = "/any/" * Never contains storage */ @Serializable -@Parcelize +@KMPParcelize data class FlipperFilePath( @SerialName("folder") val folder: String, @SerialName("name") val nameWithExtension: String // With extension -) : Parcelable, Comparable { - @IgnoredOnParcel +) : KMPParcelable, Comparable { + @KMPIgnoreOnParcel val extension: String get() = nameWithExtension.substringAfterLast('.') - @IgnoredOnParcel + @KMPIgnoreOnParcel val pathToKey: String by lazy { var path = File(folder, nameWithExtension).path if (path.firstOrNull() == File.separatorChar) { @@ -36,17 +36,17 @@ data class FlipperFilePath( return@lazy path } - @IgnoredOnParcel + @KMPIgnoreOnParcel val keyType: FlipperKeyType? by lazy { FlipperKeyType.getByExtension(extension) } - @IgnoredOnParcel + @KMPIgnoreOnParcel val fileType: FlipperFileType by lazy { FlipperFileType.getByExtension(extension) } - @IgnoredOnParcel + @KMPIgnoreOnParcel val nameWithoutExtension by lazy { nameWithExtension.substringAfterLast('/').substringBeforeLast(".") } diff --git a/components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/model/FlipperFileType.kt b/components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/model/FlipperFileType.kt similarity index 100% rename from components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/model/FlipperFileType.kt rename to components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/model/FlipperFileType.kt diff --git a/components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/model/FlipperKey.kt b/components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/model/FlipperKey.kt similarity index 71% rename from components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/model/FlipperKey.kt rename to components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/model/FlipperKey.kt index 2d64612e48..aba3597528 100644 --- a/components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/model/FlipperKey.kt +++ b/components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/model/FlipperKey.kt @@ -1,23 +1,25 @@ package com.flipperdevices.bridge.dao.api.model -import android.os.Parcelable import androidx.compose.runtime.Immutable -import kotlinx.parcelize.Parcelize +import com.flipperdevices.core.kmpparcelize.KMPParcelable +import com.flipperdevices.core.kmpparcelize.KMPParcelize +import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.persistentListOf import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable /** * The most complete description of the key */ -@Parcelize +@Serializable @Immutable data class FlipperKey( val mainFile: FlipperFile, - val additionalFiles: List = emptyList(), + val additionalFiles: ImmutableList = persistentListOf(), val notes: String? = null, val synchronized: Boolean, val deleted: Boolean -) : Parcelable { +) { val flipperKeyType: FlipperKeyType? get() = mainFile.path.keyType val path: FlipperFilePath @@ -28,18 +30,18 @@ data class FlipperKey( fun getKeyPath() = FlipperKeyPath(mainFile.path, deleted) } -@Parcelize @Serializable @Immutable +@KMPParcelize data class FlipperKeyPath( @SerialName("path") val path: FlipperFilePath, @SerialName("deleted") val deleted: Boolean -) : Parcelable +) : KMPParcelable -@Parcelize +@Serializable data class FlipperFile( val path: FlipperFilePath, val content: FlipperKeyContent -) : Parcelable +) diff --git a/components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/model/FlipperKeyContent.kt b/components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/model/FlipperKeyContent.kt similarity index 91% rename from components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/model/FlipperKeyContent.kt rename to components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/model/FlipperKeyContent.kt index 8278706d65..df9103a6cb 100644 --- a/components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/model/FlipperKeyContent.kt +++ b/components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/model/FlipperKeyContent.kt @@ -1,8 +1,5 @@ package com.flipperdevices.bridge.dao.api.model -import android.os.Parcelable -import kotlinx.parcelize.IgnoredOnParcel -import kotlinx.parcelize.Parcelize import kotlinx.serialization.Serializable import kotlinx.serialization.Transient import java.io.ByteArrayInputStream @@ -16,8 +13,8 @@ import java.io.InputStream * Do not limit your support to only one type of content. */ @Serializable -sealed class FlipperKeyContent : Parcelable { - @Parcelize +sealed class FlipperKeyContent { + @Serializable data class RawData(val bytes: ByteArray) : FlipperKeyContent() { override fun openStream() = ByteArrayInputStream(bytes) override fun length() = bytes.size.toLong() @@ -38,11 +35,8 @@ sealed class FlipperKeyContent : Parcelable { } } - @Parcelize @Serializable data class InternalFile(val path: String) : FlipperKeyContent() { - - @IgnoredOnParcel @Transient private val file = File(path) @@ -62,12 +56,10 @@ sealed class FlipperKeyContent : Parcelable { abstract fun length(): Long? } -@Parcelize @Serializable data class FlipperFileFormat( val orderedDict: List> -) : FlipperKeyContent(), Parcelable { - @IgnoredOnParcel +) : FlipperKeyContent() { private val fileContentLazy by lazy { generateFileContent() } diff --git a/components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/model/FlipperKeyCrypto.kt b/components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/model/FlipperKeyCrypto.kt similarity index 70% rename from components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/model/FlipperKeyCrypto.kt rename to components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/model/FlipperKeyCrypto.kt index 335a21b05f..dc4d432e62 100644 --- a/components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/model/FlipperKeyCrypto.kt +++ b/components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/model/FlipperKeyCrypto.kt @@ -1,13 +1,10 @@ package com.flipperdevices.bridge.dao.api.model -import android.os.Parcelable -import kotlinx.parcelize.Parcelize import kotlinx.serialization.Serializable -@Parcelize @Serializable data class FlipperKeyCrypto( val fileId: String, val pathToKey: String, val cryptoKey: String -) : Parcelable +) diff --git a/components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/model/FlipperKeyType.kt b/components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/model/FlipperKeyType.kt similarity index 81% rename from components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/model/FlipperKeyType.kt rename to components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/model/FlipperKeyType.kt index 72b20e26c6..c9da154c0c 100644 --- a/components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/model/FlipperKeyType.kt +++ b/components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/model/FlipperKeyType.kt @@ -1,51 +1,43 @@ package com.flipperdevices.bridge.dao.api.model -import androidx.annotation.DrawableRes import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color import com.flipperdevices.core.ui.theme.LocalPallet -import com.flipperdevices.core.ui.res.R as DesignSystem enum class FlipperKeyType( val humanReadableName: String, val extension: String, val flipperDir: String, - @DrawableRes val icon: Int, val flipperAppName: String ) { SUB_GHZ( humanReadableName = "Sub-GHz", extension = "sub", flipperDir = "subghz", - icon = DesignSystem.drawable.ic_fileformat_sub, flipperAppName = "Sub-GHz" ), RFID( humanReadableName = "RFID 125", extension = "rfid", flipperDir = "lfrfid", - icon = DesignSystem.drawable.ic_fileformat_rf, flipperAppName = "125 kHz RFID" ), NFC( humanReadableName = "NFC", extension = "nfc", flipperDir = "nfc", - icon = DesignSystem.drawable.ic_fileformat_nfc, flipperAppName = "NFC" ), INFRARED( humanReadableName = "Infrared", extension = "ir", flipperDir = "infrared", - icon = DesignSystem.drawable.ic_fileformat_ir, flipperAppName = "Infrared" ), I_BUTTON( humanReadableName = "iButton", extension = "ibtn", flipperDir = "ibutton", - icon = DesignSystem.drawable.ic_fileformat_ibutton, flipperAppName = "iButton" ); diff --git a/components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/model/WidgetData.kt b/components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/model/WidgetData.kt similarity index 70% rename from components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/model/WidgetData.kt rename to components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/model/WidgetData.kt index 80f839b2df..bda5effcb0 100644 --- a/components/bridge/dao/api/src/main/java/com/flipperdevices/bridge/dao/api/model/WidgetData.kt +++ b/components/bridge/dao/api/src/commonMain/kotlin/com/flipperdevices/bridge/dao/api/model/WidgetData.kt @@ -1,14 +1,10 @@ package com.flipperdevices.bridge.dao.api.model -import android.os.Parcelable -import kotlinx.parcelize.Parcelize - -@Parcelize data class WidgetData( val widgetId: Int, val flipperKeyPath: FlipperKeyPath?, val widgetType: WidgetType -) : Parcelable +) enum class WidgetType { SIMPLE, diff --git a/components/bridge/dao/impl/src/main/java/com/flipperdevices/bridge/dao/impl/ktx/MappingKeyKtx.kt b/components/bridge/dao/impl/src/main/java/com/flipperdevices/bridge/dao/impl/ktx/MappingKeyKtx.kt index 2c4a5afb3a..b42203088e 100644 --- a/components/bridge/dao/impl/src/main/java/com/flipperdevices/bridge/dao/impl/ktx/MappingKeyKtx.kt +++ b/components/bridge/dao/impl/src/main/java/com/flipperdevices/bridge/dao/impl/ktx/MappingKeyKtx.kt @@ -7,6 +7,7 @@ import com.flipperdevices.bridge.dao.impl.model.DatabaseKeyContent import com.flipperdevices.bridge.dao.impl.model.Key import com.flipperdevices.bridge.dao.impl.model.SynchronizedStatus import com.flipperdevices.bridge.dao.impl.repository.AdditionalFileDao +import kotlinx.collections.immutable.toImmutableList internal fun FlipperKey.toDatabaseKey(): Key { return Key( @@ -32,7 +33,10 @@ internal suspend fun Key.toFlipperKey(additionalFileDao: AdditionalFileDao): Fli notes = notes, synchronized = synchronizedStatus == SynchronizedStatus.SYNCHRONIZED, deleted = deleted, - additionalFiles = additionalFileDao.getFilesForKeyWithId(uid).map { it.toFlipperFile() } + additionalFiles = additionalFileDao.getFilesForKeyWithId(uid) + .map { + it.toFlipperFile() + }.toImmutableList() ) } diff --git a/components/bridge/dao/impl/src/test/java/com/flipperdevices/bridge/dao/impl/api/key/ShouldSynchronizeHelperTest.kt b/components/bridge/dao/impl/src/test/java/com/flipperdevices/bridge/dao/impl/api/key/ShouldSynchronizeHelperTest.kt index fd431aed29..b732f0813e 100644 --- a/components/bridge/dao/impl/src/test/java/com/flipperdevices/bridge/dao/impl/api/key/ShouldSynchronizeHelperTest.kt +++ b/components/bridge/dao/impl/src/test/java/com/flipperdevices/bridge/dao/impl/api/key/ShouldSynchronizeHelperTest.kt @@ -8,6 +8,8 @@ import com.flipperdevices.bridge.dao.api.model.FlipperFilePath import com.flipperdevices.bridge.dao.api.model.FlipperKey import com.flipperdevices.bridge.dao.api.model.FlipperKeyContent import com.flipperdevices.core.preference.FlipperStorageProvider +import kotlinx.collections.immutable.persistentListOf +import kotlinx.collections.immutable.toPersistentList import kotlinx.coroutines.test.runTest import org.junit.Assert import org.junit.Test @@ -22,7 +24,7 @@ private val EXAMPLE_FLIPPER_KEY = FlipperKey( ), content = FlipperKeyContent.RawData("Hello, world".toByteArray()) ), - additionalFiles = listOf( + additionalFiles = persistentListOf( FlipperFile( path = FlipperFilePath( folder = "test", @@ -187,7 +189,7 @@ class ShouldSynchronizeHelperTest { ) ) val newKey = EXAMPLE_FLIPPER_KEY.copy( - additionalFiles = newAdditionalFiles + additionalFiles = newAdditionalFiles.toPersistentList() ) Assert.assertTrue( ShouldSynchronizeHelper.isShouldSynchronize( @@ -200,7 +202,7 @@ class ShouldSynchronizeHelperTest { @Test fun `not edit additional file, not create new file`() = runTest { val newKey = EXAMPLE_FLIPPER_KEY.copy( - additionalFiles = listOf( + additionalFiles = persistentListOf( FlipperFile( path = FlipperFilePath( folder = "test", @@ -221,7 +223,7 @@ class ShouldSynchronizeHelperTest { @Test fun `edit additional file name`() = runTest { val newKey = EXAMPLE_FLIPPER_KEY.copy( - additionalFiles = listOf( + additionalFiles = persistentListOf( EXAMPLE_FLIPPER_KEY.additionalFiles.first().copy( path = FlipperFilePath( folder = "test", @@ -242,7 +244,7 @@ class ShouldSynchronizeHelperTest { @Test fun `edit additional file content`() = runTest { val newKey = EXAMPLE_FLIPPER_KEY.copy( - additionalFiles = listOf( + additionalFiles = persistentListOf( EXAMPLE_FLIPPER_KEY.additionalFiles.first().copy( content = FlipperKeyContent.RawData("Hello from additional file2".toByteArray()) ) @@ -263,7 +265,7 @@ class ShouldSynchronizeHelperTest { .useTemporaryFile(ApplicationProvider.getApplicationContext()) { tmpFile -> tmpFile.writeText("Hello from additional file") val newKey = EXAMPLE_FLIPPER_KEY.copy( - additionalFiles = listOf( + additionalFiles = persistentListOf( FlipperFile( path = FlipperFilePath( folder = "test", @@ -293,7 +295,7 @@ class ShouldSynchronizeHelperTest { ), content = FlipperKeyContent.RawData("Hello from additional file".toByteArray()) ) - ) + ).toPersistentList() ) Assert.assertTrue( @@ -315,10 +317,10 @@ class ShouldSynchronizeHelperTest { ), content = FlipperKeyContent.RawData("Hello from additional file".toByteArray()) ) - ) + ).toPersistentList() ) val newKey = EXAMPLE_FLIPPER_KEY.copy( - additionalFiles = listOf( + additionalFiles = persistentListOf( FlipperFile( path = FlipperFilePath( folder = "test", @@ -334,7 +336,7 @@ class ShouldSynchronizeHelperTest { @Test fun `remove additional file - empty`() = runTest { val newKey = EXAMPLE_FLIPPER_KEY.copy( - additionalFiles = emptyList() + additionalFiles = persistentListOf() ) Assert.assertTrue(ShouldSynchronizeHelper.isShouldSynchronize(EXAMPLE_FLIPPER_KEY, newKey)) diff --git a/components/bridge/synchronization/api/build.gradle.kts b/components/bridge/synchronization/api/build.gradle.kts index 3e6b9d0f06..3e9311f479 100644 --- a/components/bridge/synchronization/api/build.gradle.kts +++ b/components/bridge/synchronization/api/build.gradle.kts @@ -1,10 +1,11 @@ plugins { - id("flipper.android-compose") + id("flipper.multiplatform-compose") + id("flipper.multiplatform-dependencies") } android.namespace = "com.flipperdevices.bridge.synchronization.api" -dependencies { +commonDependencies { implementation(projects.components.bridge.dao.api) implementation(libs.compose.ui) diff --git a/components/bridge/synchronization/api/src/main/java/com/flipperdevices/bridge/synchronization/api/SynchronizationApi.kt b/components/bridge/synchronization/api/src/commonMain/kotlin/com/flipperdevices/bridge/synchronization/api/SynchronizationApi.kt similarity index 100% rename from components/bridge/synchronization/api/src/main/java/com/flipperdevices/bridge/synchronization/api/SynchronizationApi.kt rename to components/bridge/synchronization/api/src/commonMain/kotlin/com/flipperdevices/bridge/synchronization/api/SynchronizationApi.kt diff --git a/components/bridge/synchronization/api/src/main/java/com/flipperdevices/bridge/synchronization/api/SynchronizationState.kt b/components/bridge/synchronization/api/src/commonMain/kotlin/com/flipperdevices/bridge/synchronization/api/SynchronizationState.kt similarity index 100% rename from components/bridge/synchronization/api/src/main/java/com/flipperdevices/bridge/synchronization/api/SynchronizationState.kt rename to components/bridge/synchronization/api/src/commonMain/kotlin/com/flipperdevices/bridge/synchronization/api/SynchronizationState.kt diff --git a/components/bridge/synchronization/api/src/main/java/com/flipperdevices/bridge/synchronization/api/SynchronizationUiApi.kt b/components/bridge/synchronization/api/src/commonMain/kotlin/com/flipperdevices/bridge/synchronization/api/SynchronizationUiApi.kt similarity index 100% rename from components/bridge/synchronization/api/src/main/java/com/flipperdevices/bridge/synchronization/api/SynchronizationUiApi.kt rename to components/bridge/synchronization/api/src/commonMain/kotlin/com/flipperdevices/bridge/synchronization/api/SynchronizationUiApi.kt diff --git a/components/bridge/synchronization/impl/build.gradle.kts b/components/bridge/synchronization/impl/build.gradle.kts index 606b3d7e73..d9a9cdeca9 100644 --- a/components/bridge/synchronization/impl/build.gradle.kts +++ b/components/bridge/synchronization/impl/build.gradle.kts @@ -39,6 +39,7 @@ dependencies { implementation(libs.lifecycle.runtime.ktx) implementation(libs.kotlin.serialization.json) + implementation(libs.kotlin.immutable.collections) // Dagger deps implementation(libs.dagger) diff --git a/components/bridge/synchronization/stub/build.gradle.kts b/components/bridge/synchronization/stub/build.gradle.kts index 2420e1dfb4..5fbb966123 100644 --- a/components/bridge/synchronization/stub/build.gradle.kts +++ b/components/bridge/synchronization/stub/build.gradle.kts @@ -1,20 +1,16 @@ plugins { - id("flipper.android-compose") - id("flipper.anvil") + id("flipper.multiplatform-compose") + id("flipper.multiplatform-dependencies") + id("flipper.anvil-multiplatform") } android.namespace = "com.flipperdevices.bridge.synchronization.stub" -dependencies { +commonDependencies { implementation(projects.components.core.di) implementation(projects.components.bridge.dao.api) implementation(projects.components.bridge.synchronization.api) - // Compose - implementation(libs.compose.ui) - implementation(libs.compose.tooling) - implementation(libs.compose.foundation) - implementation(libs.compose.material) implementation(libs.lifecycle.compose) implementation(libs.decompose) } diff --git a/components/bridge/synchronization/stub/src/main/java/com/flipperdevices/synchronization/stub/SynchronizationApiStub.kt b/components/bridge/synchronization/stub/src/commonMain/kotlin/com/flipperdevices/synchronization/stub/SynchronizationApiStub.kt similarity index 100% rename from components/bridge/synchronization/stub/src/main/java/com/flipperdevices/synchronization/stub/SynchronizationApiStub.kt rename to components/bridge/synchronization/stub/src/commonMain/kotlin/com/flipperdevices/synchronization/stub/SynchronizationApiStub.kt diff --git a/components/bridge/synchronization/stub/src/main/java/com/flipperdevices/synchronization/stub/SynchronizationUiApiStub.kt b/components/bridge/synchronization/stub/src/commonMain/kotlin/com/flipperdevices/synchronization/stub/SynchronizationUiApiStub.kt similarity index 100% rename from components/bridge/synchronization/stub/src/main/java/com/flipperdevices/synchronization/stub/SynchronizationUiApiStub.kt rename to components/bridge/synchronization/stub/src/commonMain/kotlin/com/flipperdevices/synchronization/stub/SynchronizationUiApiStub.kt diff --git a/components/bridge/synchronization/ui/build.gradle.kts b/components/bridge/synchronization/ui/build.gradle.kts index 723d97024a..7e8bfb975b 100644 --- a/components/bridge/synchronization/ui/build.gradle.kts +++ b/components/bridge/synchronization/ui/build.gradle.kts @@ -1,27 +1,20 @@ plugins { - id("flipper.android-compose") - id("flipper.anvil") + id("flipper.multiplatform-compose") + id("flipper.multiplatform-dependencies") + id("flipper.anvil-multiplatform") } android.namespace = "com.flipperdevices.bridge.synchronization.ui" -dependencies { +commonDependencies { implementation(projects.components.bridge.synchronization.api) implementation(projects.components.core.di) implementation(projects.components.core.ui.ktx) - implementation(projects.components.core.ui.res) implementation(projects.components.core.ui.theme) implementation(projects.components.core.ui.lifecycle) implementation(projects.components.bridge.dao.api) - implementation(libs.appcompat) - - // Compose - implementation(libs.compose.ui) - implementation(libs.compose.tooling) - implementation(libs.compose.foundation) - implementation(libs.compose.material) implementation(libs.lifecycle.compose) } diff --git a/components/bridge/synchronization/ui/src/main/res/drawable/ic_mini_sync_failed.xml b/components/bridge/synchronization/ui/src/commonMain/composeResources/drawable/ic_mini_sync_failed.xml similarity index 100% rename from components/bridge/synchronization/ui/src/main/res/drawable/ic_mini_sync_failed.xml rename to components/bridge/synchronization/ui/src/commonMain/composeResources/drawable/ic_mini_sync_failed.xml diff --git a/components/bridge/synchronization/ui/src/main/res/drawable/ic_mini_synced.xml b/components/bridge/synchronization/ui/src/commonMain/composeResources/drawable/ic_mini_synced.xml similarity index 100% rename from components/bridge/synchronization/ui/src/main/res/drawable/ic_mini_synced.xml rename to components/bridge/synchronization/ui/src/commonMain/composeResources/drawable/ic_mini_synced.xml diff --git a/components/bridge/synchronization/ui/src/main/res/drawable/ic_mini_syncing.xml b/components/bridge/synchronization/ui/src/commonMain/composeResources/drawable/ic_mini_syncing.xml similarity index 100% rename from components/bridge/synchronization/ui/src/main/res/drawable/ic_mini_syncing.xml rename to components/bridge/synchronization/ui/src/commonMain/composeResources/drawable/ic_mini_syncing.xml diff --git a/components/bridge/synchronization/ui/src/main/res/values/strings.xml b/components/bridge/synchronization/ui/src/commonMain/composeResources/values/strings.xml similarity index 100% rename from components/bridge/synchronization/ui/src/main/res/values/strings.xml rename to components/bridge/synchronization/ui/src/commonMain/composeResources/values/strings.xml diff --git a/components/bridge/synchronization/ui/src/main/java/com/flipperdevices/bridge/synchronization/ui/api/SynchronizationUiApiImpl.kt b/components/bridge/synchronization/ui/src/commonMain/kotlin/com/flipperdevices/bridge/synchronization/ui/api/SynchronizationUiApiImpl.kt similarity index 100% rename from components/bridge/synchronization/ui/src/main/java/com/flipperdevices/bridge/synchronization/ui/api/SynchronizationUiApiImpl.kt rename to components/bridge/synchronization/ui/src/commonMain/kotlin/com/flipperdevices/bridge/synchronization/ui/api/SynchronizationUiApiImpl.kt diff --git a/components/bridge/synchronization/ui/src/main/java/com/flipperdevices/bridge/synchronization/ui/composable/ComposableItemSynchronizationState.kt b/components/bridge/synchronization/ui/src/commonMain/kotlin/com/flipperdevices/bridge/synchronization/ui/composable/ComposableItemSynchronizationState.kt similarity index 66% rename from components/bridge/synchronization/ui/src/main/java/com/flipperdevices/bridge/synchronization/ui/composable/ComposableItemSynchronizationState.kt rename to components/bridge/synchronization/ui/src/commonMain/kotlin/com/flipperdevices/bridge/synchronization/ui/composable/ComposableItemSynchronizationState.kt index e000144031..166b473fb6 100644 --- a/components/bridge/synchronization/ui/src/main/java/com/flipperdevices/bridge/synchronization/ui/composable/ComposableItemSynchronizationState.kt +++ b/components/bridge/synchronization/ui/src/commonMain/kotlin/com/flipperdevices/bridge/synchronization/ui/composable/ComposableItemSynchronizationState.kt @@ -13,13 +13,19 @@ import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.rotate -import androidx.compose.ui.res.stringResource -import com.flipperdevices.bridge.synchronization.ui.R import com.flipperdevices.bridge.synchronization.ui.model.ItemSynchronizationState import com.flipperdevices.core.ui.ktx.elements.animatedDots -import com.flipperdevices.core.ui.ktx.image.painterResourceByKey import com.flipperdevices.core.ui.theme.LocalPallet import com.flipperdevices.core.ui.theme.LocalTypography +import flipperapp.components.bridge.synchronization.ui.generated.resources.Res +import flipperapp.components.bridge.synchronization.ui.generated.resources.ic_mini_sync_failed +import flipperapp.components.bridge.synchronization.ui.generated.resources.ic_mini_synced +import flipperapp.components.bridge.synchronization.ui.generated.resources.ic_mini_syncing +import flipperapp.components.bridge.synchronization.ui.generated.resources.synchronization_status_not_synced +import flipperapp.components.bridge.synchronization.ui.generated.resources.synchronization_status_synced +import flipperapp.components.bridge.synchronization.ui.generated.resources.synchronization_status_syncing +import org.jetbrains.compose.resources.painterResource +import org.jetbrains.compose.resources.stringResource private const val ROTATE_DURATION_MS = 3000 @@ -29,9 +35,9 @@ internal fun ComposableItemSynchronizationState( withText: Boolean ) { val iconId = when (itemSynchronizationState) { - ItemSynchronizationState.SYNCHRONIZED -> R.drawable.ic_mini_synced - ItemSynchronizationState.IN_PROGRESS -> R.drawable.ic_mini_syncing - ItemSynchronizationState.NOT_SYNCHRONIZED -> R.drawable.ic_mini_sync_failed + ItemSynchronizationState.SYNCHRONIZED -> Res.drawable.ic_mini_synced + ItemSynchronizationState.IN_PROGRESS -> Res.drawable.ic_mini_syncing + ItemSynchronizationState.NOT_SYNCHRONIZED -> Res.drawable.ic_mini_sync_failed } val color = when (itemSynchronizationState) { @@ -41,9 +47,9 @@ internal fun ComposableItemSynchronizationState( } val descriptionId = when (itemSynchronizationState) { - ItemSynchronizationState.SYNCHRONIZED -> R.string.synchronization_status_synced - ItemSynchronizationState.IN_PROGRESS -> R.string.synchronization_status_syncing - ItemSynchronizationState.NOT_SYNCHRONIZED -> R.string.synchronization_status_not_synced + ItemSynchronizationState.SYNCHRONIZED -> Res.string.synchronization_status_synced + ItemSynchronizationState.IN_PROGRESS -> Res.string.synchronization_status_syncing + ItemSynchronizationState.NOT_SYNCHRONIZED -> Res.string.synchronization_status_not_synced } var description = stringResource(descriptionId) var angel = 0f @@ -64,7 +70,7 @@ internal fun ComposableItemSynchronizationState( Column(horizontalAlignment = Alignment.CenterHorizontally) { Icon( modifier = Modifier.rotate(angel), - painter = painterResourceByKey(iconId), + painter = painterResource(iconId), contentDescription = stringResource(descriptionId), tint = color ) diff --git a/components/bridge/synchronization/ui/src/main/java/com/flipperdevices/bridge/synchronization/ui/model/ItemSynchronizationState.kt b/components/bridge/synchronization/ui/src/commonMain/kotlin/com/flipperdevices/bridge/synchronization/ui/model/ItemSynchronizationState.kt similarity index 100% rename from components/bridge/synchronization/ui/src/main/java/com/flipperdevices/bridge/synchronization/ui/model/ItemSynchronizationState.kt rename to components/bridge/synchronization/ui/src/commonMain/kotlin/com/flipperdevices/bridge/synchronization/ui/model/ItemSynchronizationState.kt diff --git a/components/bridge/synchronization/ui/src/main/java/com/flipperdevices/bridge/synchronization/ui/viewmodel/ItemSynchronizationStateMapper.kt b/components/bridge/synchronization/ui/src/commonMain/kotlin/com/flipperdevices/bridge/synchronization/ui/viewmodel/ItemSynchronizationStateMapper.kt similarity index 100% rename from components/bridge/synchronization/ui/src/main/java/com/flipperdevices/bridge/synchronization/ui/viewmodel/ItemSynchronizationStateMapper.kt rename to components/bridge/synchronization/ui/src/commonMain/kotlin/com/flipperdevices/bridge/synchronization/ui/viewmodel/ItemSynchronizationStateMapper.kt diff --git a/components/bridge/synchronization/ui/src/main/java/com/flipperdevices/bridge/synchronization/ui/viewmodel/SynchronizationStateViewModel.kt b/components/bridge/synchronization/ui/src/commonMain/kotlin/com/flipperdevices/bridge/synchronization/ui/viewmodel/SynchronizationStateViewModel.kt similarity index 100% rename from components/bridge/synchronization/ui/src/main/java/com/flipperdevices/bridge/synchronization/ui/viewmodel/SynchronizationStateViewModel.kt rename to components/bridge/synchronization/ui/src/commonMain/kotlin/com/flipperdevices/bridge/synchronization/ui/viewmodel/SynchronizationStateViewModel.kt diff --git a/components/core/kmpparcelize/.gitignore b/components/core/kmpparcelize/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/components/core/kmpparcelize/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/components/core/kmpparcelize/build.gradle.kts b/components/core/kmpparcelize/build.gradle.kts new file mode 100644 index 0000000000..6aed8c3b8d --- /dev/null +++ b/components/core/kmpparcelize/build.gradle.kts @@ -0,0 +1,6 @@ +plugins { + id("flipper.multiplatform") + id("kotlin-parcelize") +} + +android.namespace = "com.flipperdevices.core.kmpparcelize" diff --git a/components/core/kmpparcelize/src/androidMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPIgnoreOnParcel.kt b/components/core/kmpparcelize/src/androidMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPIgnoreOnParcel.kt new file mode 100644 index 0000000000..7f35f400a6 --- /dev/null +++ b/components/core/kmpparcelize/src/androidMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPIgnoreOnParcel.kt @@ -0,0 +1,5 @@ +package com.flipperdevices.core.kmpparcelize + +import kotlinx.parcelize.IgnoredOnParcel + +actual typealias KMPIgnoreOnParcel = IgnoredOnParcel diff --git a/components/core/kmpparcelize/src/androidMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPParcelable.kt b/components/core/kmpparcelize/src/androidMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPParcelable.kt new file mode 100644 index 0000000000..c73b1ab4b2 --- /dev/null +++ b/components/core/kmpparcelize/src/androidMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPParcelable.kt @@ -0,0 +1,5 @@ +package com.flipperdevices.core.kmpparcelize + +import android.os.Parcelable + +actual typealias KMPParcelable = Parcelable diff --git a/components/core/kmpparcelize/src/androidMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPParcelize.kt b/components/core/kmpparcelize/src/androidMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPParcelize.kt new file mode 100644 index 0000000000..6702b412de --- /dev/null +++ b/components/core/kmpparcelize/src/androidMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPParcelize.kt @@ -0,0 +1,5 @@ +package com.flipperdevices.core.kmpparcelize + +import kotlinx.parcelize.Parcelize + +actual typealias KMPParcelize = Parcelize diff --git a/components/core/kmpparcelize/src/commonMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPIgnoreOnParcel.kt b/components/core/kmpparcelize/src/commonMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPIgnoreOnParcel.kt new file mode 100644 index 0000000000..1dabd3a648 --- /dev/null +++ b/components/core/kmpparcelize/src/commonMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPIgnoreOnParcel.kt @@ -0,0 +1,5 @@ +package com.flipperdevices.core.kmpparcelize + +@Target(AnnotationTarget.PROPERTY) +@Retention(AnnotationRetention.SOURCE) +expect annotation class KMPIgnoreOnParcel() diff --git a/components/core/kmpparcelize/src/commonMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPParcelable.kt b/components/core/kmpparcelize/src/commonMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPParcelable.kt new file mode 100644 index 0000000000..845abf3237 --- /dev/null +++ b/components/core/kmpparcelize/src/commonMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPParcelable.kt @@ -0,0 +1,3 @@ +package com.flipperdevices.core.kmpparcelize + +expect interface KMPParcelable diff --git a/components/core/kmpparcelize/src/commonMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPParcelize.kt b/components/core/kmpparcelize/src/commonMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPParcelize.kt new file mode 100644 index 0000000000..745919219e --- /dev/null +++ b/components/core/kmpparcelize/src/commonMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPParcelize.kt @@ -0,0 +1,5 @@ +package com.flipperdevices.core.kmpparcelize + +@Target(AnnotationTarget.CLASS) +@Retention(AnnotationRetention.BINARY) +expect annotation class KMPParcelize() diff --git a/components/core/kmpparcelize/src/desktopMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPIgnoreOnParcel.kt b/components/core/kmpparcelize/src/desktopMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPIgnoreOnParcel.kt new file mode 100644 index 0000000000..241b19fb0d --- /dev/null +++ b/components/core/kmpparcelize/src/desktopMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPIgnoreOnParcel.kt @@ -0,0 +1,3 @@ +package com.flipperdevices.core.kmpparcelize + +actual annotation class KMPIgnoreOnParcel diff --git a/components/core/kmpparcelize/src/desktopMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPParcelable.kt b/components/core/kmpparcelize/src/desktopMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPParcelable.kt new file mode 100644 index 0000000000..48ac39197b --- /dev/null +++ b/components/core/kmpparcelize/src/desktopMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPParcelable.kt @@ -0,0 +1,3 @@ +package com.flipperdevices.core.kmpparcelize + +actual interface KMPParcelable diff --git a/components/core/kmpparcelize/src/desktopMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPParcelize.kt b/components/core/kmpparcelize/src/desktopMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPParcelize.kt new file mode 100644 index 0000000000..c9119bce2b --- /dev/null +++ b/components/core/kmpparcelize/src/desktopMain/kotlin/com/flipperdevices/core/kmpparcelize/KMPParcelize.kt @@ -0,0 +1,3 @@ +package com.flipperdevices.core.kmpparcelize + +actual annotation class KMPParcelize diff --git a/components/core/ui/ktx/build.gradle.kts b/components/core/ui/ktx/build.gradle.kts index c83b634370..126068433c 100644 --- a/components/core/ui/ktx/build.gradle.kts +++ b/components/core/ui/ktx/build.gradle.kts @@ -1,25 +1,25 @@ plugins { - id("flipper.android-compose") + id("flipper.multiplatform-compose") + id("flipper.multiplatform-dependencies") } android.namespace = "com.flipperdevices.core.ui.ktx" -dependencies { +commonDependencies { implementation(projects.components.bridge.dao.api) - implementation(projects.components.core.ui.res) implementation(projects.components.core.ui.theme) // Compose - implementation(libs.compose.ui) - implementation(libs.compose.tooling) - implementation(libs.compose.foundation) - implementation(libs.compose.material) - implementation(libs.compose.placeholder) - implementation(libs.coil.compose) - implementation(libs.coil.svg) - implementation(libs.image.lottie) implementation(libs.lifecycle.viewmodel.ktx) implementation(libs.lifecycle.compose) + implementation(libs.compose.placeholder) implementation(libs.decompose) } + +androidDependencies { + implementation(projects.components.core.ui.res) + implementation(libs.image.lottie) + implementation(libs.coil.compose) + implementation(libs.coil.svg) +} diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/OrangeAppBar.kt b/components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/OrangeAppBar.kt similarity index 100% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/OrangeAppBar.kt rename to components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/OrangeAppBar.kt diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/elements/ComposableFlipperButton.kt b/components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/elements/ComposableFlipperButton.kt similarity index 100% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/elements/ComposableFlipperButton.kt rename to components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/elements/ComposableFlipperButton.kt diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/elements/ComposableKeyType.kt b/components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/elements/ComposableKeyType.kt similarity index 94% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/elements/ComposableKeyType.kt rename to components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/elements/ComposableKeyType.kt index 68a455e11c..9c5fc4464f 100644 --- a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/elements/ComposableKeyType.kt +++ b/components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/elements/ComposableKeyType.kt @@ -18,9 +18,10 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import com.flipperdevices.bridge.dao.api.R import com.flipperdevices.bridge.dao.api.model.FlipperKeyType import com.flipperdevices.bridge.dao.api.model.FlipperKeyType.Companion.colorByFlipperKeyType +import com.flipperdevices.bridge.dao.api.model.icon +import com.flipperdevices.core.ui.ktx.R import com.flipperdevices.core.ui.ktx.placeholderByLocalProvider import com.flipperdevices.core.ui.theme.FlipperThemeInternal import com.flipperdevices.core.ui.theme.LocalPallet @@ -36,7 +37,7 @@ fun ComposableKeyType( ) { val icon = type?.icon ?: DesignSystem.drawable.ic_fileformat_unknown val title = type?.humanReadableName - ?: stringResource(R.string.fileformat_unknown) + ?: stringResource(R.string.ktx_fileformat_unknown) var rowModifier = modifier .clip(RoundedCornerShape(bottomEnd = 18.dp)) diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/elements/FlipperProgressIndicator.kt b/components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/elements/FlipperProgressIndicator.kt similarity index 100% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/elements/FlipperProgressIndicator.kt rename to components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/elements/FlipperProgressIndicator.kt diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/image/AsyncImageWithPlaceholder.kt b/components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/image/AsyncImageWithPlaceholder.kt similarity index 100% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/image/AsyncImageWithPlaceholder.kt rename to components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/image/AsyncImageWithPlaceholder.kt diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/image/ComposeLottiePic.kt b/components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/image/ComposeLottiePic.kt similarity index 100% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/image/ComposeLottiePic.kt rename to components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/image/ComposeLottiePic.kt diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/image/ImageKtx.kt b/components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/image/ImageKtx.kt similarity index 100% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/image/ImageKtx.kt rename to components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/image/ImageKtx.kt diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/image/Picture.kt b/components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/image/Picture.kt similarity index 100% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/image/Picture.kt rename to components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/image/Picture.kt diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/image/WhiteToAlphaTransformation.kt b/components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/image/WhiteToAlphaTransformation.kt similarity index 100% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/image/WhiteToAlphaTransformation.kt rename to components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/image/WhiteToAlphaTransformation.kt diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/sweep/AnimatedRotatableBrush.kt b/components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/sweep/AnimatedRotatableBrush.kt similarity index 100% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/sweep/AnimatedRotatableBrush.kt rename to components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/sweep/AnimatedRotatableBrush.kt diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/sweep/RotatableSweepGradient.kt b/components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/sweep/RotatableSweepGradient.kt similarity index 100% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/sweep/RotatableSweepGradient.kt rename to components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/sweep/RotatableSweepGradient.kt diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/sweep/RotatableSweepShader.kt b/components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/sweep/RotatableSweepShader.kt similarity index 100% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/sweep/RotatableSweepShader.kt rename to components/core/ui/ktx/src/androidMain/kotlin/com/flipperdevices/core/ui/ktx/sweep/RotatableSweepShader.kt diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/ClickableKtx.kt b/components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/ClickableKtx.kt similarity index 100% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/ClickableKtx.kt rename to components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/ClickableKtx.kt diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/ComposeCommonKtx.kt b/components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/ComposeCommonKtx.kt similarity index 100% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/ComposeCommonKtx.kt rename to components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/ComposeCommonKtx.kt diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/OnHoldModifierKtx.kt b/components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/OnHoldModifierKtx.kt similarity index 100% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/OnHoldModifierKtx.kt rename to components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/OnHoldModifierKtx.kt diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/PlaceholderKtx.kt b/components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/PlaceholderKtx.kt similarity index 100% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/PlaceholderKtx.kt rename to components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/PlaceholderKtx.kt diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/elements/AnimatedDots.kt b/components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/elements/AnimatedDots.kt similarity index 100% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/elements/AnimatedDots.kt rename to components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/elements/AnimatedDots.kt diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/elements/ComposableReportTextField.kt b/components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/elements/ComposableReportTextField.kt similarity index 100% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/elements/ComposableReportTextField.kt rename to components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/elements/ComposableReportTextField.kt diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/elements/SwipeRefresh.kt b/components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/elements/SwipeRefresh.kt similarity index 100% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/elements/SwipeRefresh.kt rename to components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/elements/SwipeRefresh.kt diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/fade/FadeKtx.kt b/components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/fade/FadeKtx.kt similarity index 100% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/fade/FadeKtx.kt rename to components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/fade/FadeKtx.kt diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/fade/FadeKtxPreview.kt b/components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/fade/FadeKtxPreview.kt similarity index 95% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/fade/FadeKtxPreview.kt rename to components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/fade/FadeKtxPreview.kt index 6a0ec2224d..e26265a58c 100644 --- a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/fade/FadeKtxPreview.kt +++ b/components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/fade/FadeKtxPreview.kt @@ -7,9 +7,9 @@ import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.flipperdevices.core.ui.theme.FlipperThemeInternal +import org.jetbrains.compose.ui.tooling.preview.Preview @Composable private fun FadePreviewColumn( diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/fade/FadeOrientation.kt b/components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/fade/FadeOrientation.kt similarity index 100% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/fade/FadeOrientation.kt rename to components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/fade/FadeOrientation.kt diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/tab/ComposeTabAnimatedBackground.kt b/components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/tab/ComposeTabAnimatedBackground.kt similarity index 100% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/tab/ComposeTabAnimatedBackground.kt rename to components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/tab/ComposeTabAnimatedBackground.kt diff --git a/components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/tab/TabTransition.kt b/components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/tab/TabTransition.kt similarity index 100% rename from components/core/ui/ktx/src/main/java/com/flipperdevices/core/ui/ktx/tab/TabTransition.kt rename to components/core/ui/ktx/src/commonMain/kotlin/com/flipperdevices/core/ui/ktx/tab/TabTransition.kt diff --git a/components/core/ui/ktx/src/main/res/values/strings.xml b/components/core/ui/ktx/src/main/res/values/strings.xml new file mode 100644 index 0000000000..5f94d9cd61 --- /dev/null +++ b/components/core/ui/ktx/src/main/res/values/strings.xml @@ -0,0 +1,4 @@ + + + Unknown + \ No newline at end of file diff --git a/components/core/ui/theme/build.gradle.kts b/components/core/ui/theme/build.gradle.kts index 32a31b094a..6e0de5cca8 100644 --- a/components/core/ui/theme/build.gradle.kts +++ b/components/core/ui/theme/build.gradle.kts @@ -1,23 +1,17 @@ plugins { - id("flipper.android-compose") - id("flipper.anvil") + id("flipper.multiplatform-compose") + id("flipper.multiplatform-dependencies") + id("flipper.anvil-multiplatform") } android.namespace = "com.flipperdevices.core.ui.theme" -dependencies { +commonDependencies { implementation(projects.components.core.di) - implementation(projects.components.core.ui.res) implementation(projects.components.core.ui.lifecycle) implementation(projects.components.core.ktx) implementation(projects.components.core.preference) - // Compose - implementation(libs.compose.ui) - implementation(libs.compose.foundation) - implementation(libs.compose.material) - implementation(libs.lifecycle.viewmodel.ktx) implementation(libs.lifecycle.compose) - implementation(libs.appcompat) } diff --git a/components/core/ui/res/src/main/res/font/flipper.ttf b/components/core/ui/theme/src/commonMain/composeResources/font/flipper.ttf similarity index 100% rename from components/core/ui/res/src/main/res/font/flipper.ttf rename to components/core/ui/theme/src/commonMain/composeResources/font/flipper.ttf diff --git a/components/core/ui/res/src/main/res/font/flipper_action.ttf b/components/core/ui/theme/src/commonMain/composeResources/font/flipper_action.ttf similarity index 100% rename from components/core/ui/res/src/main/res/font/flipper_action.ttf rename to components/core/ui/theme/src/commonMain/composeResources/font/flipper_action.ttf diff --git a/components/core/ui/res/src/main/res/font/flipper_bold.ttf b/components/core/ui/theme/src/commonMain/composeResources/font/flipper_bold.ttf similarity index 100% rename from components/core/ui/res/src/main/res/font/flipper_bold.ttf rename to components/core/ui/theme/src/commonMain/composeResources/font/flipper_bold.ttf diff --git a/components/core/ui/res/src/main/res/font/roboto_black.ttf b/components/core/ui/theme/src/commonMain/composeResources/font/roboto_black.ttf similarity index 100% rename from components/core/ui/res/src/main/res/font/roboto_black.ttf rename to components/core/ui/theme/src/commonMain/composeResources/font/roboto_black.ttf diff --git a/components/core/ui/res/src/main/res/font/roboto_black_italic.ttf b/components/core/ui/theme/src/commonMain/composeResources/font/roboto_black_italic.ttf similarity index 100% rename from components/core/ui/res/src/main/res/font/roboto_black_italic.ttf rename to components/core/ui/theme/src/commonMain/composeResources/font/roboto_black_italic.ttf diff --git a/components/core/ui/res/src/main/res/font/roboto_bold.ttf b/components/core/ui/theme/src/commonMain/composeResources/font/roboto_bold.ttf similarity index 100% rename from components/core/ui/res/src/main/res/font/roboto_bold.ttf rename to components/core/ui/theme/src/commonMain/composeResources/font/roboto_bold.ttf diff --git a/components/core/ui/res/src/main/res/font/roboto_bold_italic.ttf b/components/core/ui/theme/src/commonMain/composeResources/font/roboto_bold_italic.ttf similarity index 100% rename from components/core/ui/res/src/main/res/font/roboto_bold_italic.ttf rename to components/core/ui/theme/src/commonMain/composeResources/font/roboto_bold_italic.ttf diff --git a/components/core/ui/res/src/main/res/font/roboto_italic.ttf b/components/core/ui/theme/src/commonMain/composeResources/font/roboto_italic.ttf similarity index 100% rename from components/core/ui/res/src/main/res/font/roboto_italic.ttf rename to components/core/ui/theme/src/commonMain/composeResources/font/roboto_italic.ttf diff --git a/components/core/ui/res/src/main/res/font/roboto_light.ttf b/components/core/ui/theme/src/commonMain/composeResources/font/roboto_light.ttf similarity index 100% rename from components/core/ui/res/src/main/res/font/roboto_light.ttf rename to components/core/ui/theme/src/commonMain/composeResources/font/roboto_light.ttf diff --git a/components/core/ui/res/src/main/res/font/roboto_light_italic.ttf b/components/core/ui/theme/src/commonMain/composeResources/font/roboto_light_italic.ttf similarity index 100% rename from components/core/ui/res/src/main/res/font/roboto_light_italic.ttf rename to components/core/ui/theme/src/commonMain/composeResources/font/roboto_light_italic.ttf diff --git a/components/core/ui/res/src/main/res/font/roboto_medium.ttf b/components/core/ui/theme/src/commonMain/composeResources/font/roboto_medium.ttf similarity index 100% rename from components/core/ui/res/src/main/res/font/roboto_medium.ttf rename to components/core/ui/theme/src/commonMain/composeResources/font/roboto_medium.ttf diff --git a/components/core/ui/res/src/main/res/font/roboto_medium_italic.ttf b/components/core/ui/theme/src/commonMain/composeResources/font/roboto_medium_italic.ttf similarity index 100% rename from components/core/ui/res/src/main/res/font/roboto_medium_italic.ttf rename to components/core/ui/theme/src/commonMain/composeResources/font/roboto_medium_italic.ttf diff --git a/components/core/ui/res/src/main/res/font/roboto_mono_medium.ttf b/components/core/ui/theme/src/commonMain/composeResources/font/roboto_mono_medium.ttf similarity index 100% rename from components/core/ui/res/src/main/res/font/roboto_mono_medium.ttf rename to components/core/ui/theme/src/commonMain/composeResources/font/roboto_mono_medium.ttf diff --git a/components/core/ui/res/src/main/res/font/roboto_regular.ttf b/components/core/ui/theme/src/commonMain/composeResources/font/roboto_regular.ttf similarity index 100% rename from components/core/ui/res/src/main/res/font/roboto_regular.ttf rename to components/core/ui/theme/src/commonMain/composeResources/font/roboto_regular.ttf diff --git a/components/core/ui/res/src/main/res/font/roboto_thin.ttf b/components/core/ui/theme/src/commonMain/composeResources/font/roboto_thin.ttf similarity index 100% rename from components/core/ui/res/src/main/res/font/roboto_thin.ttf rename to components/core/ui/theme/src/commonMain/composeResources/font/roboto_thin.ttf diff --git a/components/core/ui/res/src/main/res/font/roboto_thin_italic.ttf b/components/core/ui/theme/src/commonMain/composeResources/font/roboto_thin_italic.ttf similarity index 100% rename from components/core/ui/res/src/main/res/font/roboto_thin_italic.ttf rename to components/core/ui/theme/src/commonMain/composeResources/font/roboto_thin_italic.ttf diff --git a/components/core/ui/theme/src/main/kotlin/com/flipperdevices/core/ui/theme/FlipperTheme.kt b/components/core/ui/theme/src/commonMain/kotlin/com/flipperdevices/core/ui/theme/FlipperTheme.kt similarity index 100% rename from components/core/ui/theme/src/main/kotlin/com/flipperdevices/core/ui/theme/FlipperTheme.kt rename to components/core/ui/theme/src/commonMain/kotlin/com/flipperdevices/core/ui/theme/FlipperTheme.kt diff --git a/components/core/ui/theme/src/main/kotlin/com/flipperdevices/core/ui/theme/composable/AnimatedFlipperPalletProvider.kt b/components/core/ui/theme/src/commonMain/kotlin/com/flipperdevices/core/ui/theme/composable/AnimatedFlipperPalletProvider.kt similarity index 100% rename from components/core/ui/theme/src/main/kotlin/com/flipperdevices/core/ui/theme/composable/AnimatedFlipperPalletProvider.kt rename to components/core/ui/theme/src/commonMain/kotlin/com/flipperdevices/core/ui/theme/composable/AnimatedFlipperPalletProvider.kt diff --git a/components/core/ui/theme/src/main/kotlin/com/flipperdevices/core/ui/theme/composable/FlipperPallet.kt b/components/core/ui/theme/src/commonMain/kotlin/com/flipperdevices/core/ui/theme/composable/FlipperPallet.kt similarity index 100% rename from components/core/ui/theme/src/main/kotlin/com/flipperdevices/core/ui/theme/composable/FlipperPallet.kt rename to components/core/ui/theme/src/commonMain/kotlin/com/flipperdevices/core/ui/theme/composable/FlipperPallet.kt diff --git a/components/core/ui/theme/src/main/kotlin/com/flipperdevices/core/ui/theme/composable/FlipperPalletProvider.kt b/components/core/ui/theme/src/commonMain/kotlin/com/flipperdevices/core/ui/theme/composable/FlipperPalletProvider.kt similarity index 100% rename from components/core/ui/theme/src/main/kotlin/com/flipperdevices/core/ui/theme/composable/FlipperPalletProvider.kt rename to components/core/ui/theme/src/commonMain/kotlin/com/flipperdevices/core/ui/theme/composable/FlipperPalletProvider.kt diff --git a/components/core/ui/theme/src/commonMain/kotlin/com/flipperdevices/core/ui/theme/composable/FlipperTypography.kt b/components/core/ui/theme/src/commonMain/kotlin/com/flipperdevices/core/ui/theme/composable/FlipperTypography.kt new file mode 100644 index 0000000000..426ad1e919 --- /dev/null +++ b/components/core/ui/theme/src/commonMain/kotlin/com/flipperdevices/core/ui/theme/composable/FlipperTypography.kt @@ -0,0 +1,278 @@ +package com.flipperdevices.core.ui.theme.composable + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Stable +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.sp +import flipperapp.components.core.ui.theme.generated.resources.Res +import flipperapp.components.core.ui.theme.generated.resources.flipper +import flipperapp.components.core.ui.theme.generated.resources.flipper_action +import flipperapp.components.core.ui.theme.generated.resources.flipper_bold +import flipperapp.components.core.ui.theme.generated.resources.roboto_black +import flipperapp.components.core.ui.theme.generated.resources.roboto_black_italic +import flipperapp.components.core.ui.theme.generated.resources.roboto_bold +import flipperapp.components.core.ui.theme.generated.resources.roboto_bold_italic +import flipperapp.components.core.ui.theme.generated.resources.roboto_italic +import flipperapp.components.core.ui.theme.generated.resources.roboto_light +import flipperapp.components.core.ui.theme.generated.resources.roboto_light_italic +import flipperapp.components.core.ui.theme.generated.resources.roboto_medium +import flipperapp.components.core.ui.theme.generated.resources.roboto_medium_italic +import flipperapp.components.core.ui.theme.generated.resources.roboto_mono_medium +import flipperapp.components.core.ui.theme.generated.resources.roboto_regular +import flipperapp.components.core.ui.theme.generated.resources.roboto_thin +import flipperapp.components.core.ui.theme.generated.resources.roboto_thin_italic +import org.jetbrains.compose.resources.Font + +@Stable +data class FlipperTypography( + val titleB24: TextStyle, + val titleB22: TextStyle, + val titleB20: TextStyle, + val titleSB18: TextStyle, + val titleSB16: TextStyle, + val titleEB20: TextStyle, + val titleEB18: TextStyle, + val titleB18: TextStyle, + val titleR18: TextStyle, + val titleM18: TextStyle, + val subtitleB12: TextStyle, + val subtitleEB12: TextStyle, + val subtitleM12: TextStyle, + val subtitleR12: TextStyle, + val subtitleR10: TextStyle, + val subtitleB10: TextStyle, + val subtitleM10: TextStyle, + val bodySB14: TextStyle, + val bodySSB14: TextStyle, + val bodyR14: TextStyle, + val bodyM14: TextStyle, + val bodyR16: TextStyle, + val buttonB16: TextStyle, + val buttonM16: TextStyle, + val buttonB14: TextStyle, + val updateButton40: TextStyle, + val updateText40: TextStyle, + val flipperAction: TextStyle, + val monoSpaceM14: TextStyle, + val monoSpaceM10: TextStyle, + val monoSpaceM12: TextStyle, + val monoSpaceM16: TextStyle, + val monoSpaceR12: TextStyle, + val notificationB8: TextStyle, + val fapHubButtonText: TextStyle, + val fapHubButtonProgressText: TextStyle, + val infraredEditButton: TextStyle, +) + +@Composable +@Suppress("LongMethod") +fun getTypography(): FlipperTypography { + val robotoFamily = getRobotoFamily() + return FlipperTypography( + titleB24 = TextStyle( + fontSize = 24.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W700 + ), + titleB22 = TextStyle( + fontSize = 22.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W700 + ), + titleB20 = TextStyle( + fontSize = 20.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W700 + ), + titleSB18 = TextStyle( + fontSize = 18.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W600 + ), + titleSB16 = TextStyle( + fontSize = 18.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W600 + ), + titleEB20 = TextStyle( + fontSize = 20.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W800 + ), + titleEB18 = TextStyle( + fontSize = 18.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W800 + ), + titleB18 = TextStyle( + fontSize = 18.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W700 + ), + titleR18 = TextStyle( + fontSize = 18.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W400 + ), + titleM18 = TextStyle( + fontSize = 18.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W500 + ), + subtitleB12 = TextStyle( + fontSize = 12.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W700 + ), + subtitleEB12 = TextStyle( + fontSize = 12.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W800 + ), + subtitleM12 = TextStyle( + fontSize = 12.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W500 + ), + subtitleR12 = TextStyle( + fontSize = 12.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W400 + ), + subtitleR10 = TextStyle( + fontSize = 10.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W400 + ), + subtitleB10 = TextStyle( + fontSize = 10.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W700 + ), + subtitleM10 = TextStyle( + fontSize = 10.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W500 + ), + bodySB14 = TextStyle( + fontSize = 14.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W600 + ), + bodySSB14 = TextStyle( + fontSize = 14.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W700 + ), + bodyR14 = TextStyle( + fontSize = 14.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W400 + ), + bodyM14 = TextStyle( + fontSize = 14.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W500 + ), + bodyR16 = TextStyle( + fontSize = 16.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W400 + ), + buttonB16 = TextStyle( + fontSize = 16.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W700 + ), + buttonM16 = TextStyle( + fontSize = 16.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W500 + ), + buttonB14 = TextStyle( + fontSize = 14.sp, + fontFamily = robotoFamily, + fontWeight = FontWeight.W700 + ), + updateButton40 = TextStyle( + fontSize = 40.sp, + fontFamily = FontFamily(Font(Res.font.flipper_bold)), + fontWeight = FontWeight.W500 + ), + updateText40 = TextStyle( + fontSize = 40.sp, + fontFamily = FontFamily(Font(Res.font.flipper)), + fontWeight = FontWeight.W400 + ), + flipperAction = TextStyle( + fontSize = 24.sp, + fontFamily = FontFamily(Font(Res.font.flipper_action)), + fontWeight = FontWeight.W500 + ), + monoSpaceM14 = TextStyle( + fontSize = 14.sp, + fontFamily = FontFamily(Font(Res.font.roboto_mono_medium)), + fontWeight = FontWeight.W500 + ), + monoSpaceM10 = TextStyle( + fontSize = 10.sp, + fontFamily = FontFamily(Font(Res.font.roboto_mono_medium)), + fontWeight = FontWeight.W500 + ), + monoSpaceM12 = TextStyle( + fontSize = 12.sp, + fontFamily = FontFamily(Font(Res.font.roboto_mono_medium)), + fontWeight = FontWeight.W500 + ), + monoSpaceM16 = TextStyle( + fontSize = 16.sp, + fontFamily = FontFamily(Font(Res.font.roboto_mono_medium)), + fontWeight = FontWeight.W500 + ), + monoSpaceR12 = TextStyle( + fontSize = 12.sp, + fontFamily = FontFamily(Font(Res.font.roboto_mono_medium)), + fontWeight = FontWeight.W400 + ), + notificationB8 = TextStyle( + fontSize = 8.sp, + fontFamily = FontFamily(Font(Res.font.roboto_mono_medium)), + fontWeight = FontWeight.W700 + ), + fapHubButtonText = TextStyle( + fontSize = 18.sp, + fontFamily = FontFamily(Font(Res.font.flipper_action)), + fontWeight = FontWeight.W500 + ), + fapHubButtonProgressText = TextStyle( + fontSize = 18.sp, + fontFamily = FontFamily(Font(Res.font.flipper)), + fontWeight = FontWeight.W500 + ), + infraredEditButton = TextStyle( + fontSize = 32.sp, + fontFamily = FontFamily(Font(Res.font.flipper)), + fontWeight = FontWeight.W400 + ), + ) +} + +@Composable +@Suppress("LongMethod") +private fun getRobotoFamily() = FontFamily( + Font(Res.font.roboto_regular, FontWeight.W400), + Font(Res.font.roboto_italic, FontWeight.W400, FontStyle.Italic), + Font(Res.font.roboto_black, FontWeight.W900), + Font(Res.font.roboto_black_italic, FontWeight.W900, FontStyle.Italic), + Font(Res.font.roboto_light, FontWeight.W300), + Font(Res.font.roboto_light_italic, FontWeight.W300, FontStyle.Italic), + Font(Res.font.roboto_medium, FontWeight.W500), + Font(Res.font.roboto_medium_italic, FontWeight.W500, FontStyle.Italic), + Font(Res.font.roboto_bold, FontWeight.W700), + Font(Res.font.roboto_bold_italic, FontWeight.W700, FontStyle.Italic), + Font(Res.font.roboto_thin, FontWeight.W100), + Font(Res.font.roboto_thin_italic, FontWeight.W100, FontStyle.Italic) +) diff --git a/components/core/ui/theme/src/main/kotlin/com/flipperdevices/core/ui/theme/composable/pallet/FlipperPalletV2Provider.kt b/components/core/ui/theme/src/commonMain/kotlin/com/flipperdevices/core/ui/theme/composable/pallet/FlipperPalletV2Provider.kt similarity index 100% rename from components/core/ui/theme/src/main/kotlin/com/flipperdevices/core/ui/theme/composable/pallet/FlipperPalletV2Provider.kt rename to components/core/ui/theme/src/commonMain/kotlin/com/flipperdevices/core/ui/theme/composable/pallet/FlipperPalletV2Provider.kt diff --git a/components/core/ui/theme/src/main/kotlin/com/flipperdevices/core/ui/theme/composable/pallet/generated/AnimatedPallet.kt b/components/core/ui/theme/src/commonMain/kotlin/com/flipperdevices/core/ui/theme/composable/pallet/generated/AnimatedPallet.kt similarity index 100% rename from components/core/ui/theme/src/main/kotlin/com/flipperdevices/core/ui/theme/composable/pallet/generated/AnimatedPallet.kt rename to components/core/ui/theme/src/commonMain/kotlin/com/flipperdevices/core/ui/theme/composable/pallet/generated/AnimatedPallet.kt diff --git a/components/core/ui/theme/src/main/kotlin/com/flipperdevices/core/ui/theme/composable/pallet/generated/DarkPallet.kt b/components/core/ui/theme/src/commonMain/kotlin/com/flipperdevices/core/ui/theme/composable/pallet/generated/DarkPallet.kt similarity index 100% rename from components/core/ui/theme/src/main/kotlin/com/flipperdevices/core/ui/theme/composable/pallet/generated/DarkPallet.kt rename to components/core/ui/theme/src/commonMain/kotlin/com/flipperdevices/core/ui/theme/composable/pallet/generated/DarkPallet.kt diff --git a/components/core/ui/theme/src/main/kotlin/com/flipperdevices/core/ui/theme/composable/pallet/generated/FlipperPalletV2.kt b/components/core/ui/theme/src/commonMain/kotlin/com/flipperdevices/core/ui/theme/composable/pallet/generated/FlipperPalletV2.kt similarity index 100% rename from components/core/ui/theme/src/main/kotlin/com/flipperdevices/core/ui/theme/composable/pallet/generated/FlipperPalletV2.kt rename to components/core/ui/theme/src/commonMain/kotlin/com/flipperdevices/core/ui/theme/composable/pallet/generated/FlipperPalletV2.kt diff --git a/components/core/ui/theme/src/main/kotlin/com/flipperdevices/core/ui/theme/composable/pallet/generated/LightPallet.kt b/components/core/ui/theme/src/commonMain/kotlin/com/flipperdevices/core/ui/theme/composable/pallet/generated/LightPallet.kt similarity index 100% rename from components/core/ui/theme/src/main/kotlin/com/flipperdevices/core/ui/theme/composable/pallet/generated/LightPallet.kt rename to components/core/ui/theme/src/commonMain/kotlin/com/flipperdevices/core/ui/theme/composable/pallet/generated/LightPallet.kt diff --git a/components/core/ui/theme/src/main/kotlin/com/flipperdevices/core/ui/theme/viewmodel/ThemeViewModel.kt b/components/core/ui/theme/src/commonMain/kotlin/com/flipperdevices/core/ui/theme/viewmodel/ThemeViewModel.kt similarity index 100% rename from components/core/ui/theme/src/main/kotlin/com/flipperdevices/core/ui/theme/viewmodel/ThemeViewModel.kt rename to components/core/ui/theme/src/commonMain/kotlin/com/flipperdevices/core/ui/theme/viewmodel/ThemeViewModel.kt diff --git a/components/core/ui/theme/src/main/kotlin/com/flipperdevices/core/ui/theme/composable/FlipperTypography.kt b/components/core/ui/theme/src/main/kotlin/com/flipperdevices/core/ui/theme/composable/FlipperTypography.kt deleted file mode 100644 index 91bbc0edb2..0000000000 --- a/components/core/ui/theme/src/main/kotlin/com/flipperdevices/core/ui/theme/composable/FlipperTypography.kt +++ /dev/null @@ -1,218 +0,0 @@ -package com.flipperdevices.core.ui.theme.composable - -import androidx.compose.runtime.Stable -import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.text.font.Font -import androidx.compose.ui.text.font.FontFamily -import androidx.compose.ui.text.font.FontStyle -import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.unit.sp -import com.flipperdevices.core.ui.res.R - -@Stable -data class FlipperTypography( - val titleB24: TextStyle = TextStyle( - fontSize = 24.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W700 - ), - val titleB22: TextStyle = TextStyle( - fontSize = 22.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W700 - ), - val titleB20: TextStyle = TextStyle( - fontSize = 20.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W700 - ), - val titleSB18: TextStyle = TextStyle( - fontSize = 18.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W600 - ), - val titleSB16: TextStyle = TextStyle( - fontSize = 18.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W600 - ), - val titleEB20: TextStyle = TextStyle( - fontSize = 20.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W800 - ), - val titleEB18: TextStyle = TextStyle( - fontSize = 18.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W800 - ), - val titleB18: TextStyle = TextStyle( - fontSize = 18.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W700 - ), - val titleR18: TextStyle = TextStyle( - fontSize = 18.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W400 - ), - val titleM18: TextStyle = TextStyle( - fontSize = 18.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W500 - ), - val subtitleB12: TextStyle = TextStyle( - fontSize = 12.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W700 - ), - val subtitleEB12: TextStyle = TextStyle( - fontSize = 12.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W800 - ), - val subtitleM12: TextStyle = TextStyle( - fontSize = 12.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W500 - ), - val subtitleR12: TextStyle = TextStyle( - fontSize = 12.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W400 - ), - val subtitleR10: TextStyle = TextStyle( - fontSize = 10.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W400 - ), - val subtitleB10: TextStyle = TextStyle( - fontSize = 10.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W700 - ), - val subtitleM10: TextStyle = TextStyle( - fontSize = 10.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W500 - ), - val bodySB14: TextStyle = TextStyle( - fontSize = 14.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W600 - ), - val bodySSB14: TextStyle = TextStyle( - fontSize = 14.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W700 - ), - val bodyR14: TextStyle = TextStyle( - fontSize = 14.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W400 - ), - val bodyM14: TextStyle = TextStyle( - fontSize = 14.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W500 - ), - val bodyR16: TextStyle = TextStyle( - fontSize = 16.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W400 - ), - val buttonB16: TextStyle = TextStyle( - fontSize = 16.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W700 - ), - val buttonM16: TextStyle = TextStyle( - fontSize = 16.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W500 - ), - val buttonB14: TextStyle = TextStyle( - fontSize = 14.sp, - fontFamily = robotoFamily, - fontWeight = FontWeight.W700 - ), - val updateButton40: TextStyle = TextStyle( - fontSize = 40.sp, - fontFamily = FontFamily(Font(R.font.flipper_bold)), - fontWeight = FontWeight.W500 - ), - val updateText40: TextStyle = TextStyle( - fontSize = 40.sp, - fontFamily = FontFamily(Font(R.font.flipper)), - fontWeight = FontWeight.W400 - ), - val flipperAction: TextStyle = TextStyle( - fontSize = 24.sp, - fontFamily = FontFamily(Font(R.font.flipper_action)), - fontWeight = FontWeight.W500 - ), - val monoSpaceM14: TextStyle = TextStyle( - fontSize = 14.sp, - fontFamily = FontFamily(Font(R.font.roboto_mono_medium)), - fontWeight = FontWeight.W500 - ), - val monoSpaceM10: TextStyle = TextStyle( - fontSize = 10.sp, - fontFamily = FontFamily(Font(R.font.roboto_mono_medium)), - fontWeight = FontWeight.W500 - ), - val monoSpaceM12: TextStyle = TextStyle( - fontSize = 12.sp, - fontFamily = FontFamily(Font(R.font.roboto_mono_medium)), - fontWeight = FontWeight.W500 - ), - val monoSpaceM16: TextStyle = TextStyle( - fontSize = 16.sp, - fontFamily = FontFamily(Font(R.font.roboto_mono_medium)), - fontWeight = FontWeight.W500 - ), - val monoSpaceR12: TextStyle = TextStyle( - fontSize = 12.sp, - fontFamily = FontFamily(Font(R.font.roboto_mono_medium)), - fontWeight = FontWeight.W400 - ), - val notificationB8: TextStyle = TextStyle( - fontSize = 8.sp, - fontFamily = FontFamily(Font(R.font.roboto_mono_medium)), - fontWeight = FontWeight.W700 - ), - val fapHubButtonText: TextStyle = TextStyle( - fontSize = 18.sp, - fontFamily = FontFamily(Font(R.font.flipper_action)), - fontWeight = FontWeight.W500 - ), - val fapHubButtonProgressText: TextStyle = TextStyle( - fontSize = 18.sp, - fontFamily = FontFamily(Font(R.font.flipper)), - fontWeight = FontWeight.W500 - ), - val infraredEditButton: TextStyle = TextStyle( - fontSize = 32.sp, - fontFamily = FontFamily(Font(R.font.flipper)), - fontWeight = FontWeight.W400 - ), -) - -fun getTypography(): FlipperTypography { - return FlipperTypography() -} - -internal val robotoFamily = FontFamily( - Font(R.font.roboto_regular, FontWeight.W400), - Font(R.font.roboto_italic, FontWeight.W400, FontStyle.Italic), - Font(R.font.roboto_black, FontWeight.W900), - Font(R.font.roboto_black_italic, FontWeight.W900, FontStyle.Italic), - Font(R.font.roboto_light, FontWeight.W300), - Font(R.font.roboto_light_italic, FontWeight.W300, FontStyle.Italic), - Font(R.font.roboto_medium, FontWeight.W500), - Font(R.font.roboto_medium_italic, FontWeight.W500, FontStyle.Italic), - Font(R.font.roboto_bold, FontWeight.W700), - Font(R.font.roboto_bold_italic, FontWeight.W700, FontStyle.Italic), - Font(R.font.roboto_thin, FontWeight.W100), - Font(R.font.roboto_thin_italic, FontWeight.W100, FontStyle.Italic) -) diff --git a/components/deeplink/api/build.gradle.kts b/components/deeplink/api/build.gradle.kts index 53dacc6a6c..bcaf400ca0 100644 --- a/components/deeplink/api/build.gradle.kts +++ b/components/deeplink/api/build.gradle.kts @@ -1,6 +1,6 @@ plugins { id("flipper.android-lib") - id("kotlin-parcelize") + id("kotlinx-serialization") } diff --git a/components/deeplink/api/src/main/java/com/flipperdevices/deeplink/model/DeeplinkContent.kt b/components/deeplink/api/src/main/java/com/flipperdevices/deeplink/model/DeeplinkContent.kt index 8e8f0f90dd..0ec8e8e3a8 100644 --- a/components/deeplink/api/src/main/java/com/flipperdevices/deeplink/model/DeeplinkContent.kt +++ b/components/deeplink/api/src/main/java/com/flipperdevices/deeplink/model/DeeplinkContent.kt @@ -3,46 +3,39 @@ package com.flipperdevices.deeplink.model import android.content.ContentResolver import android.content.Intent import android.net.Uri -import android.os.Parcelable import com.flipperdevices.bridge.dao.api.model.FlipperFileFormat import com.flipperdevices.bridge.dao.api.model.FlipperKeyCrypto -import com.flipperdevices.core.ktx.jre.length -import kotlinx.parcelize.IgnoredOnParcel -import kotlinx.parcelize.Parcelize import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient import java.io.File import java.io.InputStream @Serializable -sealed class DeeplinkContent : Parcelable { - @Parcelize +sealed class DeeplinkContent { @Serializable data class FFFContent( val filename: String, val flipperFileFormat: FlipperFileFormat ) : DeeplinkContent() - @Parcelize @Serializable data class ExternalUri( val filename: String?, val size: Long?, val uriString: String ) : DeeplinkContent() { - @IgnoredOnParcel + @Transient val uri: Uri by lazy { Uri.parse(uriString) } } - @Parcelize @Serializable data class InternalStorageFile( val filePath: String ) : DeeplinkContent() { - @IgnoredOnParcel + @Transient val file by lazy { File(filePath) } } - @Parcelize @Serializable data class FFFCryptoContent( val key: FlipperKeyCrypto diff --git a/components/faphub/dao/api/build.gradle.kts b/components/faphub/dao/api/build.gradle.kts index 920e5e8c64..1a51cd6a97 100644 --- a/components/faphub/dao/api/build.gradle.kts +++ b/components/faphub/dao/api/build.gradle.kts @@ -1,6 +1,6 @@ plugins { id("flipper.android-lib") - id("kotlin-parcelize") + id("kotlinx-serialization") } diff --git a/components/faphub/dao/api/src/main/java/com/flipperdevices/faphub/dao/api/model/FapCategory.kt b/components/faphub/dao/api/src/main/java/com/flipperdevices/faphub/dao/api/model/FapCategory.kt index 7204faa5f9..10fa36ce24 100644 --- a/components/faphub/dao/api/src/main/java/com/flipperdevices/faphub/dao/api/model/FapCategory.kt +++ b/components/faphub/dao/api/src/main/java/com/flipperdevices/faphub/dao/api/model/FapCategory.kt @@ -1,11 +1,8 @@ package com.flipperdevices.faphub.dao.api.model -import android.os.Parcelable import androidx.annotation.ColorInt -import kotlinx.parcelize.Parcelize import kotlinx.serialization.Serializable -@Parcelize @Serializable data class FapCategory( val id: String, @@ -13,4 +10,4 @@ data class FapCategory( val picUrl: String, val applicationCount: Int, @ColorInt val color: Int? -) : Parcelable +) diff --git a/components/filemanager/impl/src/main/java/com/flipperdevices/filemanager/impl/composable/list/ComposableFileItem.kt b/components/filemanager/impl/src/main/java/com/flipperdevices/filemanager/impl/composable/list/ComposableFileItem.kt index 2d36024196..893f0e3250 100644 --- a/components/filemanager/impl/src/main/java/com/flipperdevices/filemanager/impl/composable/list/ComposableFileItem.kt +++ b/components/filemanager/impl/src/main/java/com/flipperdevices/filemanager/impl/composable/list/ComposableFileItem.kt @@ -19,6 +19,7 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import com.flipperdevices.bridge.dao.api.model.FlipperKeyType +import com.flipperdevices.bridge.dao.api.model.icon import com.flipperdevices.core.ui.ktx.clickableRipple import com.flipperdevices.filemanager.impl.R import com.flipperdevices.filemanager.impl.model.FileItem diff --git a/components/keyedit/api/build.gradle.kts b/components/keyedit/api/build.gradle.kts index 9b3b352787..18859c8724 100644 --- a/components/keyedit/api/build.gradle.kts +++ b/components/keyedit/api/build.gradle.kts @@ -1,6 +1,6 @@ plugins { id("flipper.android-lib") - id("kotlin-parcelize") + id("kotlinx-serialization") } diff --git a/components/keyedit/api/src/main/java/com/flipperdevices/keyedit/api/NotSavedFlipperKey.kt b/components/keyedit/api/src/main/java/com/flipperdevices/keyedit/api/NotSavedFlipperKey.kt index 849181dc12..9de6082d0f 100644 --- a/components/keyedit/api/src/main/java/com/flipperdevices/keyedit/api/NotSavedFlipperKey.kt +++ b/components/keyedit/api/src/main/java/com/flipperdevices/keyedit/api/NotSavedFlipperKey.kt @@ -1,30 +1,26 @@ package com.flipperdevices.keyedit.api import android.content.Context -import android.os.Parcelable import com.flipperdevices.bridge.dao.api.model.FlipperFile import com.flipperdevices.bridge.dao.api.model.FlipperFilePath import com.flipperdevices.bridge.dao.api.model.FlipperKeyContent import com.flipperdevices.core.ktx.jre.FlipperDispatchers import com.flipperdevices.core.preference.FlipperStorageProvider import kotlinx.coroutines.withContext -import kotlinx.parcelize.Parcelize import kotlinx.serialization.Serializable -@Parcelize @Serializable data class NotSavedFlipperKey( val mainFile: NotSavedFlipperFile, val additionalFiles: List, val notes: String? -) : Parcelable +) -@Parcelize @Serializable data class NotSavedFlipperFile( val path: FlipperFilePath, val content: FlipperKeyContent -) : Parcelable +) suspend fun FlipperFile.toNotSavedFlipperFile( context: Context diff --git a/components/keyedit/impl/build.gradle.kts b/components/keyedit/impl/build.gradle.kts index d9a46e435f..5f04e94d53 100644 --- a/components/keyedit/impl/build.gradle.kts +++ b/components/keyedit/impl/build.gradle.kts @@ -1,7 +1,7 @@ plugins { id("flipper.android-compose") id("flipper.anvil") - id("kotlin-parcelize") + id("kotlinx-serialization") } @@ -32,6 +32,7 @@ dependencies { implementation(libs.appcompat) implementation(libs.kotlin.serialization.json) + implementation(libs.kotlin.immutable.collections) // Compose implementation(libs.compose.ui) diff --git a/components/keyedit/impl/src/main/java/com/flipperdevices/keyedit/impl/model/EditableKey.kt b/components/keyedit/impl/src/main/java/com/flipperdevices/keyedit/impl/model/EditableKey.kt index 680bbd644e..c2245e1245 100644 --- a/components/keyedit/impl/src/main/java/com/flipperdevices/keyedit/impl/model/EditableKey.kt +++ b/components/keyedit/impl/src/main/java/com/flipperdevices/keyedit/impl/model/EditableKey.kt @@ -1,19 +1,14 @@ package com.flipperdevices.keyedit.impl.model -import android.os.Parcelable import com.flipperdevices.bridge.dao.api.model.FlipperKeyPath import com.flipperdevices.keyedit.api.NotSavedFlipperKey -import kotlinx.parcelize.Parcelize import kotlinx.serialization.Serializable -@Parcelize @Serializable -sealed class EditableKey : Parcelable { - @Parcelize +sealed class EditableKey { @Serializable - data class Existed(val flipperKeyPath: FlipperKeyPath) : EditableKey(), Parcelable + data class Existed(val flipperKeyPath: FlipperKeyPath) : EditableKey() - @Parcelize @Serializable - data class Limb(val notSavedFlipperKey: NotSavedFlipperKey) : EditableKey(), Parcelable + data class Limb(val notSavedFlipperKey: NotSavedFlipperKey) : EditableKey() } diff --git a/components/keyedit/impl/src/main/java/com/flipperdevices/keyedit/impl/viewmodel/processors/LimboKeyProcessor.kt b/components/keyedit/impl/src/main/java/com/flipperdevices/keyedit/impl/viewmodel/processors/LimboKeyProcessor.kt index b22ccbc361..f1a15c968a 100644 --- a/components/keyedit/impl/src/main/java/com/flipperdevices/keyedit/impl/viewmodel/processors/LimboKeyProcessor.kt +++ b/components/keyedit/impl/src/main/java/com/flipperdevices/keyedit/impl/viewmodel/processors/LimboKeyProcessor.kt @@ -14,6 +14,7 @@ import com.flipperdevices.keyedit.impl.R import com.flipperdevices.keyedit.impl.model.EditableKey import com.flipperdevices.keyedit.impl.model.KeyEditState import com.flipperdevices.keyparser.api.KeyParser +import kotlinx.collections.immutable.toImmutableList import javax.inject.Inject class LimboKeyProcessor @Inject constructor( @@ -82,7 +83,7 @@ private fun NotSavedFlipperKey.toFlipperKey(newPath: FlipperFilePath) = FlipperK it.path.copyWithChangedName(newPath.nameWithoutExtension), it.content ) - }, + }.toImmutableList(), notes = notes, deleted = false, synchronized = false diff --git a/components/keyparser/impl/src/test/kotlin/com/flipperdevices/keyparser/impl/NFCParserTest.kt b/components/keyparser/impl/src/test/kotlin/com/flipperdevices/keyparser/impl/NFCParserTest.kt index 5a10d368a3..7dd5a737a4 100644 --- a/components/keyparser/impl/src/test/kotlin/com/flipperdevices/keyparser/impl/NFCParserTest.kt +++ b/components/keyparser/impl/src/test/kotlin/com/flipperdevices/keyparser/impl/NFCParserTest.kt @@ -11,6 +11,7 @@ import com.flipperdevices.core.test.readTestAsset import com.flipperdevices.core.test.readTestAssetString import com.flipperdevices.keyparser.api.model.FlipperKeyParsed import com.flipperdevices.keyparser.impl.parsers.impl.NFCParser +import kotlinx.collections.immutable.persistentListOf import kotlinx.coroutines.test.runTest import org.junit.Assert import org.junit.Test @@ -29,7 +30,7 @@ class NFCParserTest { path = FlipperFilePath("test", "test.nfc"), content = FlipperKeyContent.RawData(readTestAsset("mf_4k.nfc")) ), - additionalFiles = listOf( + additionalFiles = persistentListOf( FlipperFile( path = FlipperFilePath("test", "test.nfc.shd"), content = FlipperKeyContent.RawData(readTestAsset("mf_4k.nfc.shd")) @@ -64,7 +65,7 @@ class NFCParserTest { path = FlipperFilePath("test", "test.nfc"), content = FlipperKeyContent.RawData(readTestAsset("mf_4k.nfc")) ), - additionalFiles = listOf( + additionalFiles = persistentListOf( FlipperFile( path = FlipperFilePath("test", "test.nfc.invalidshd"), content = FlipperKeyContent.RawData(readTestAsset("mf_4k.nfc.shd")) diff --git a/components/nfceditor/impl/src/main/java/com/flipperdevices/nfceditor/impl/viewmodel/NfcEditorStateProducerHelper.kt b/components/nfceditor/impl/src/main/java/com/flipperdevices/nfceditor/impl/viewmodel/NfcEditorStateProducerHelper.kt index 95adee9d77..08cf545427 100644 --- a/components/nfceditor/impl/src/main/java/com/flipperdevices/nfceditor/impl/viewmodel/NfcEditorStateProducerHelper.kt +++ b/components/nfceditor/impl/src/main/java/com/flipperdevices/nfceditor/impl/viewmodel/NfcEditorStateProducerHelper.kt @@ -233,7 +233,7 @@ object NfcEditorStateProducerHelper { ).filterNotNull() return oldKey.copy( - additionalFiles = newAdditionalFiles + additionalFiles = newAdditionalFiles.toImmutableList() ) } @@ -249,7 +249,6 @@ object NfcEditorStateProducerHelper { return FlipperKey( mainFile = newFlipperFile, - additionalFiles = listOf(), notes = oldKey.notes, synchronized = false, deleted = false diff --git a/components/nfceditor/impl/src/test/kotlin/com/flipperdevices/nfceditor/impl/viewmodel/NfcEditorStateProducerHelperTest.kt b/components/nfceditor/impl/src/test/kotlin/com/flipperdevices/nfceditor/impl/viewmodel/NfcEditorStateProducerHelperTest.kt index c3d806a3ed..ec3b97951d 100644 --- a/components/nfceditor/impl/src/test/kotlin/com/flipperdevices/nfceditor/impl/viewmodel/NfcEditorStateProducerHelperTest.kt +++ b/components/nfceditor/impl/src/test/kotlin/com/flipperdevices/nfceditor/impl/viewmodel/NfcEditorStateProducerHelperTest.kt @@ -17,6 +17,7 @@ import com.flipperdevices.nfceditor.impl.model.NfcCellType import com.flipperdevices.nfceditor.impl.model.NfcEditorCardType import com.flipperdevices.nfceditor.impl.model.NfcEditorCell import com.flipperdevices.nfceditor.impl.model.NfcEditorCellLocation +import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.runBlocking import org.junit.Assert import org.junit.Test @@ -422,7 +423,7 @@ class NfcEditorStateProducerHelperTest { FlipperFilePath("test", "some_trash.txt"), content = FlipperKeyContent.RawData(byteArrayOf()) ) - ) + ).toImmutableList() ) val editorState = NfcEditorStateProducerHelper.mapParsedKeyToNfcEditorState( @@ -461,7 +462,7 @@ class NfcEditorStateProducerHelperTest { FlipperFilePath("test", "some_trash.txt"), content = FlipperKeyContent.RawData(byteArrayOf()) ) - ) + ).toImmutableList() ) val editorState = NfcEditorStateProducerHelper.mapParsedKeyToNfcEditorState( @@ -496,7 +497,7 @@ private fun getFlipperKey( ) } else { emptyList() - }, + }.toImmutableList(), synchronized = false, deleted = false ) diff --git a/components/nfceditor/sample/build.gradle.kts b/components/nfceditor/sample/build.gradle.kts index cc6afab77d..b2fe00077e 100644 --- a/components/nfceditor/sample/build.gradle.kts +++ b/components/nfceditor/sample/build.gradle.kts @@ -49,6 +49,7 @@ dependencies { kapt(libs.dagger.kapt) implementation(libs.timber) + implementation(libs.kotlin.immutable.collections) // Compose implementation(libs.compose.activity) diff --git a/components/remote-controls/grid/create-control/impl/src/main/kotlin/com/flipperdevices/remotecontrols/impl/createcontrol/viewmodel/SaveRemoteControlViewModel.kt b/components/remote-controls/grid/create-control/impl/src/main/kotlin/com/flipperdevices/remotecontrols/impl/createcontrol/viewmodel/SaveRemoteControlViewModel.kt index 0aee2de2ff..b0ce7020d0 100644 --- a/components/remote-controls/grid/create-control/impl/src/main/kotlin/com/flipperdevices/remotecontrols/impl/createcontrol/viewmodel/SaveRemoteControlViewModel.kt +++ b/components/remote-controls/grid/create-control/impl/src/main/kotlin/com/flipperdevices/remotecontrols/impl/createcontrol/viewmodel/SaveRemoteControlViewModel.kt @@ -19,6 +19,7 @@ import com.flipperdevices.protobuf.Flipper import com.flipperdevices.protobuf.main import com.flipperdevices.protobuf.storage.deleteRequest import com.flipperdevices.protobuf.storage.renameRequest +import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.Job import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow @@ -149,7 +150,7 @@ class SaveRemoteControlViewModel @Inject constructor( path = it.path.toNonTempPath(), content = it.content ) - } + }.toImmutableList() ) ) awaitSynchronization() diff --git a/components/settings/impl/build.gradle.kts b/components/settings/impl/build.gradle.kts index 508f5748af..24bf7c5a19 100644 --- a/components/settings/impl/build.gradle.kts +++ b/components/settings/impl/build.gradle.kts @@ -55,4 +55,5 @@ dependencies { implementation(libs.lifecycle.viewmodel.ktx) implementation(libs.kotlin.serialization.json) + implementation(libs.kotlin.immutable.collections) } diff --git a/components/share/uploader/build.gradle.kts b/components/share/uploader/build.gradle.kts index d575b5c492..fffedc749e 100644 --- a/components/share/uploader/build.gradle.kts +++ b/components/share/uploader/build.gradle.kts @@ -30,6 +30,7 @@ dependencies { implementation(libs.lifecycle.compose) implementation(libs.kotlin.serialization.json) + implementation(libs.kotlin.immutable.collections) // Compose implementation(libs.compose.ui) diff --git a/components/updater/api/build.gradle.kts b/components/updater/api/build.gradle.kts index e957b1d5da..398172629b 100644 --- a/components/updater/api/build.gradle.kts +++ b/components/updater/api/build.gradle.kts @@ -1,6 +1,6 @@ plugins { id("flipper.android-compose") - id("kotlin-parcelize") + id("kotlinx-serialization") } diff --git a/components/updater/api/src/main/java/com/flipperdevices/updater/model/FirmwareVersion.kt b/components/updater/api/src/main/java/com/flipperdevices/updater/model/FirmwareVersion.kt index 3fe99becb5..8fbca1116b 100644 --- a/components/updater/api/src/main/java/com/flipperdevices/updater/model/FirmwareVersion.kt +++ b/components/updater/api/src/main/java/com/flipperdevices/updater/model/FirmwareVersion.kt @@ -1,13 +1,10 @@ package com.flipperdevices.updater.model -import android.os.Parcelable -import kotlinx.parcelize.Parcelize import kotlinx.serialization.Serializable -@Parcelize @Serializable data class FirmwareVersion( val channel: FirmwareChannel, val version: String, val buildDate: String? = null -) : Parcelable +) diff --git a/components/updater/api/src/main/java/com/flipperdevices/updater/model/UpdateRequest.kt b/components/updater/api/src/main/java/com/flipperdevices/updater/model/UpdateRequest.kt index aa1e495b03..550edeba38 100644 --- a/components/updater/api/src/main/java/com/flipperdevices/updater/model/UpdateRequest.kt +++ b/components/updater/api/src/main/java/com/flipperdevices/updater/model/UpdateRequest.kt @@ -1,13 +1,9 @@ package com.flipperdevices.updater.model import android.net.Uri -import android.os.Parcelable -import kotlinx.parcelize.IgnoredOnParcel -import kotlinx.parcelize.Parcelize import kotlinx.serialization.Serializable import kotlinx.serialization.Transient -@Parcelize @Serializable data class UpdateRequest( val updateFrom: FirmwareVersion, @@ -15,27 +11,23 @@ data class UpdateRequest( val changelog: String?, val content: UpdateContent, val requestId: Long = System.currentTimeMillis() -) : Parcelable +) -@Parcelize @Serializable -sealed class UpdateContent : Parcelable { +sealed class UpdateContent { abstract fun folderName(): String } -@Parcelize @Serializable class OfficialFirmware( val distributionFile: DistributionFile -) : UpdateContent(), Parcelable { +) : UpdateContent() { override fun folderName(): String = distributionFile.sha256 ?: distributionFile.url } -@Parcelize @Serializable -class InternalStorageFirmware(private val uriString: String) : UpdateContent(), Parcelable { +class InternalStorageFirmware(private val uriString: String) : UpdateContent() { - @IgnoredOnParcel @Transient val uri: Uri = Uri.parse(uriString) @@ -47,8 +39,7 @@ class InternalStorageFirmware(private val uriString: String) : UpdateContent(), } } -@Parcelize @Serializable -class WebUpdaterFirmware(val url: String) : UpdateContent(), Parcelable { +class WebUpdaterFirmware(val url: String) : UpdateContent() { override fun folderName(): String = url.substringBeforeLast("/") } diff --git a/components/updater/api/src/main/java/com/flipperdevices/updater/model/VersionFiles.kt b/components/updater/api/src/main/java/com/flipperdevices/updater/model/VersionFiles.kt index f019845da5..9d68a7058f 100644 --- a/components/updater/api/src/main/java/com/flipperdevices/updater/model/VersionFiles.kt +++ b/components/updater/api/src/main/java/com/flipperdevices/updater/model/VersionFiles.kt @@ -1,19 +1,15 @@ package com.flipperdevices.updater.model -import android.os.Parcelable -import kotlinx.parcelize.Parcelize import kotlinx.serialization.Serializable -@Parcelize -data class VersionFiles constructor( +data class VersionFiles( val version: FirmwareVersion, val updaterFile: DistributionFile, val changelog: String? = null -) : Parcelable +) -@Parcelize @Serializable data class DistributionFile( val url: String, val sha256: String? = null -) : Parcelable +) diff --git a/components/wearable/sync/common/build.gradle.kts b/components/wearable/sync/common/build.gradle.kts index ff9f6bbc61..f4b772440a 100644 --- a/components/wearable/sync/common/build.gradle.kts +++ b/components/wearable/sync/common/build.gradle.kts @@ -1,6 +1,6 @@ plugins { id("flipper.android-compose") - id("kotlin-parcelize") + id("flipper.protobuf") } diff --git a/components/wearable/sync/wear/impl/src/main/java/com/flipperdevices/wearable/sync/wear/impl/composable/ComposableKeysListElement.kt b/components/wearable/sync/wear/impl/src/main/java/com/flipperdevices/wearable/sync/wear/impl/composable/ComposableKeysListElement.kt index 2886be68a6..a9be565893 100644 --- a/components/wearable/sync/wear/impl/src/main/java/com/flipperdevices/wearable/sync/wear/impl/composable/ComposableKeysListElement.kt +++ b/components/wearable/sync/wear/impl/src/main/java/com/flipperdevices/wearable/sync/wear/impl/composable/ComposableKeysListElement.kt @@ -22,6 +22,7 @@ import androidx.compose.ui.unit.dp import androidx.wear.compose.material.Icon import androidx.wear.compose.material.Text import com.flipperdevices.bridge.dao.api.model.FlipperKeyType +import com.flipperdevices.bridge.dao.api.model.icon import com.flipperdevices.core.ui.theme.LocalTypography import com.flipperdevices.wearable.sync.wear.impl.model.FlipperWearKey import com.flipperdevices.core.ui.res.R as DesignSystem diff --git a/components/widget/impl/src/main/java/com/flipperdevices/widget/impl/tasks/invalidate/renderer/InProgressWidgetStateRenderer.kt b/components/widget/impl/src/main/java/com/flipperdevices/widget/impl/tasks/invalidate/renderer/InProgressWidgetStateRenderer.kt index 8590944753..fc2d90678d 100644 --- a/components/widget/impl/src/main/java/com/flipperdevices/widget/impl/tasks/invalidate/renderer/InProgressWidgetStateRenderer.kt +++ b/components/widget/impl/src/main/java/com/flipperdevices/widget/impl/tasks/invalidate/renderer/InProgressWidgetStateRenderer.kt @@ -5,6 +5,7 @@ import android.view.View import android.widget.RemoteViews import com.flipperdevices.bridge.dao.api.model.FlipperKeyPath import com.flipperdevices.bridge.dao.api.model.FlipperKeyType +import com.flipperdevices.bridge.dao.api.model.icon import com.flipperdevices.core.di.AppGraph import com.flipperdevices.core.log.LogTagProvider import com.flipperdevices.widget.impl.R diff --git a/components/widget/impl/src/main/java/com/flipperdevices/widget/impl/tasks/invalidate/renderer/PendingWidgetStateRenderer.kt b/components/widget/impl/src/main/java/com/flipperdevices/widget/impl/tasks/invalidate/renderer/PendingWidgetStateRenderer.kt index c74ab3aff2..09389c9b7a 100644 --- a/components/widget/impl/src/main/java/com/flipperdevices/widget/impl/tasks/invalidate/renderer/PendingWidgetStateRenderer.kt +++ b/components/widget/impl/src/main/java/com/flipperdevices/widget/impl/tasks/invalidate/renderer/PendingWidgetStateRenderer.kt @@ -5,6 +5,7 @@ import android.view.View import android.widget.RemoteViews import com.flipperdevices.bridge.dao.api.model.FlipperKeyPath import com.flipperdevices.bridge.dao.api.model.FlipperKeyType +import com.flipperdevices.bridge.dao.api.model.icon import com.flipperdevices.core.di.AppGraph import com.flipperdevices.core.log.LogTagProvider import com.flipperdevices.widget.impl.R diff --git a/settings.gradle.kts b/settings.gradle.kts index 15b94f07d3..b7453cbdd4 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -111,6 +111,7 @@ include( ":components:core:progress", ":components:core:permission:api", ":components:core:permission:impl", + ":components:core:kmpparcelize", ":components:bottombar:api", ":components:bottombar:impl",