Add CommonParcelize

pull/2898/head
Alex Baker 4 weeks ago
parent 505c8c29d5
commit 17d218aa4e

@ -1,3 +1,7 @@
@file:OptIn(ExperimentalKotlinGradlePluginApi::class)
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
plugins {
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.androidLibrary)
@ -14,7 +18,9 @@ repositories {
kotlin {
applyDefaultHierarchyTemplate()
androidTarget {
publishLibraryVariants("release")
compilerOptions {
freeCompilerArgs.addAll("-P", "plugin:org.jetbrains.kotlin.parcelize:additionalAnnotation=org.tasks.CommonParcelize")
}
compilations.all {
kotlinOptions {
jvmTarget = "17"
@ -22,12 +28,10 @@ kotlin {
}
}
sourceSets {
val commonMain by getting {
dependencies {
implementation(libs.androidx.room)
implementation(libs.kotlinx.serialization)
implementation(libs.kermit)
}
commonMain.dependencies {
implementation(libs.androidx.room)
implementation(libs.kotlinx.serialization)
implementation(libs.kermit)
}
}
}

@ -0,0 +1,7 @@
@file:Suppress("EXPECT_ACTUAL_CLASSIFIERS_ARE_IN_BETA_WARNING")
package org.tasks
import android.os.Parcelable
actual typealias CommonParcelable = Parcelable

@ -0,0 +1,9 @@
@file:Suppress("EXPECT_ACTUAL_CLASSIFIERS_ARE_IN_BETA_WARNING")
package org.tasks
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.BINARY)
annotation class CommonParcelize
expect interface CommonParcelable

@ -1,23 +1,17 @@
package org.tasks.data
import android.os.Parcel
import android.os.Parcelable
import androidx.room.Embedded
import androidx.room.Ignore
import org.tasks.CommonParcelable
import org.tasks.CommonParcelize
import org.tasks.data.entity.Geofence
import org.tasks.data.entity.Place
import java.io.Serializable
@CommonParcelize
data class Location(
@Embedded val geofence: Geofence,
@Embedded val place: Place,
) : Serializable, Parcelable {
@Ignore
private constructor(parcel: Parcel): this(
geofence = parcel.readParcelable(Geofence::class.java.classLoader)!!,
place = parcel.readParcelable(Place::class.java.classLoader)!!,
)
) : Serializable, CommonParcelable {
val task: Long
get() = geofence.task
@ -45,19 +39,4 @@ data class Location(
val displayAddress: String?
get() = place.displayAddress
override fun describeContents() = 0
override fun writeToParcel(dest: Parcel, flags: Int) {
dest.writeParcelable(geofence, flags)
dest.writeParcelable(place, flags)
}
companion object {
@JvmField val CREATOR: Parcelable.Creator<Location> = object : Parcelable.Creator<Location> {
override fun createFromParcel(`in`: Parcel): Location = Location(`in`)
override fun newArray(size: Int): Array<Location?> = arrayOfNulls(size)
}
}
}

@ -1,17 +1,17 @@
package org.tasks.data.entity
import android.os.Parcelable
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.ForeignKey
import androidx.room.Ignore
import androidx.room.PrimaryKey
import kotlinx.parcelize.Parcelize
import kotlinx.serialization.Serializable
import org.tasks.CommonParcelable
import org.tasks.CommonParcelize
import org.tasks.data.db.Table
@Serializable
@Parcelize
@CommonParcelize
@Entity(
tableName = Geofence.TABLE_NAME,
foreignKeys = [
@ -37,7 +37,7 @@ data class Geofence(
val isArrival: Boolean = false,
@ColumnInfo(name = "departure")
var isDeparture: Boolean = false,
) : java.io.Serializable, Parcelable {
) : java.io.Serializable, CommonParcelable {
@Ignore
constructor(
task: Long,

@ -1,20 +1,20 @@
package org.tasks.data.entity
import android.os.Parcelable
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.Index
import androidx.room.PrimaryKey
import kotlinx.parcelize.Parcelize
import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
import org.tasks.CommonParcelable
import org.tasks.CommonParcelize
import org.tasks.data.NO_ORDER
import org.tasks.data.UUIDHelper
import org.tasks.data.db.Table
@Serializable
@Parcelize
@CommonParcelize
@Entity(
tableName = Place.TABLE_NAME,
indices = [
@ -48,7 +48,7 @@ data class Place(
val order: Int = NO_ORDER,
@ColumnInfo(name = "radius", defaultValue = "250")
val radius: Int = 250,
) : java.io.Serializable, Parcelable {
) : java.io.Serializable, CommonParcelable {
val displayAddress: String?
get() = if (address.isNullOrEmpty()) null else address.replace("$name, ", "")

@ -1,17 +1,17 @@
package org.tasks.data.entity
import android.os.Parcelable
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
import kotlinx.parcelize.Parcelize
import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
import org.tasks.CommonParcelable
import org.tasks.CommonParcelize
import org.tasks.data.LABEL
import org.tasks.data.NO_ORDER
import org.tasks.data.UUIDHelper
@Parcelize
@CommonParcelize
@Serializable
@Entity(tableName = "tagdata")
data class TagData(
@ -31,7 +31,7 @@ data class TagData(
private val icon: Int? = -1,
@ColumnInfo(name = "td_order")
val order: Int = NO_ORDER,
) : Parcelable {
) : CommonParcelable {
@Suppress("RedundantNullableReturnType")
fun getIcon(): Int? = icon ?: LABEL
}

Loading…
Cancel
Save