Remove parcelable interface
Because proper proguard rules weren't added for Attendee and Gson, we can not make changes to the Attendee data class without affecting it's obfuscated Json member names. When serialized using Gson, the resulting json still uses the obfuscated member names
This commit is contained in:
parent
950feba0bc
commit
b655b8be52
5 changed files with 6 additions and 9 deletions
|
@ -6,7 +6,6 @@ plugins {
|
||||||
alias(libs.plugins.android)
|
alias(libs.plugins.android)
|
||||||
alias(libs.plugins.kotlinAndroid)
|
alias(libs.plugins.kotlinAndroid)
|
||||||
alias(libs.plugins.ksp)
|
alias(libs.plugins.ksp)
|
||||||
alias(libs.plugins.parcelize)
|
|
||||||
base
|
base
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,8 @@ import android.widget.RelativeLayout
|
||||||
import com.google.android.material.timepicker.MaterialTimePicker
|
import com.google.android.material.timepicker.MaterialTimePicker
|
||||||
import com.google.android.material.timepicker.MaterialTimePicker.INPUT_MODE_CLOCK
|
import com.google.android.material.timepicker.MaterialTimePicker.INPUT_MODE_CLOCK
|
||||||
import com.google.android.material.timepicker.TimeFormat
|
import com.google.android.material.timepicker.TimeFormat
|
||||||
|
import com.google.gson.Gson
|
||||||
|
import com.google.gson.reflect.TypeToken
|
||||||
import com.simplemobiletools.calendar.pro.R
|
import com.simplemobiletools.calendar.pro.R
|
||||||
import com.simplemobiletools.calendar.pro.adapters.AutoCompleteTextViewAdapter
|
import com.simplemobiletools.calendar.pro.adapters.AutoCompleteTextViewAdapter
|
||||||
import com.simplemobiletools.calendar.pro.databinding.ActivityEventBinding
|
import com.simplemobiletools.calendar.pro.databinding.ActivityEventBinding
|
||||||
|
@ -169,7 +171,7 @@ class EventActivity : SimpleActivity() {
|
||||||
putInt(REPEAT_RULE, mRepeatRule)
|
putInt(REPEAT_RULE, mRepeatRule)
|
||||||
putLong(REPEAT_LIMIT, mRepeatLimit)
|
putLong(REPEAT_LIMIT, mRepeatLimit)
|
||||||
|
|
||||||
putParcelableArrayList(ATTENDEES, getAllAttendees(false))
|
putString(ATTENDEES, Gson().toJson(getAllAttendees(false)))
|
||||||
|
|
||||||
putInt(AVAILABILITY, mAvailability)
|
putInt(AVAILABILITY, mAvailability)
|
||||||
putInt(EVENT_COLOR, mEventColor)
|
putInt(EVENT_COLOR, mEventColor)
|
||||||
|
@ -211,7 +213,8 @@ class EventActivity : SimpleActivity() {
|
||||||
mRepeatRule = getInt(REPEAT_RULE)
|
mRepeatRule = getInt(REPEAT_RULE)
|
||||||
mRepeatLimit = getLong(REPEAT_LIMIT)
|
mRepeatLimit = getLong(REPEAT_LIMIT)
|
||||||
|
|
||||||
mAttendees = getParcelableArrayList(ATTENDEES) ?: arrayListOf()
|
val token = object : TypeToken<List<Attendee>>() {}.type
|
||||||
|
mAttendees = Gson().fromJson<ArrayList<Attendee>>(getString(ATTENDEES), token) ?: ArrayList()
|
||||||
|
|
||||||
mEventTypeId = getLong(EVENT_TYPE_ID)
|
mEventTypeId = getLong(EVENT_TYPE_ID)
|
||||||
mEventCalendarId = getInt(EVENT_CALENDAR_ID)
|
mEventCalendarId = getInt(EVENT_CALENDAR_ID)
|
||||||
|
|
|
@ -2,16 +2,13 @@ package com.simplemobiletools.calendar.pro.models
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.os.Parcelable
|
|
||||||
import android.provider.CalendarContract
|
import android.provider.CalendarContract
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||||
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions
|
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions
|
||||||
import com.bumptech.glide.request.RequestOptions
|
import com.bumptech.glide.request.RequestOptions
|
||||||
import kotlinx.parcelize.Parcelize
|
|
||||||
|
|
||||||
@Parcelize
|
|
||||||
data class Attendee(
|
data class Attendee(
|
||||||
val contactId: Int,
|
val contactId: Int,
|
||||||
var name: String,
|
var name: String,
|
||||||
|
@ -20,7 +17,7 @@ data class Attendee(
|
||||||
var photoUri: String,
|
var photoUri: String,
|
||||||
var isMe: Boolean,
|
var isMe: Boolean,
|
||||||
var relationship: Int
|
var relationship: Int
|
||||||
) : Parcelable {
|
) {
|
||||||
fun getPublicName() = name.ifEmpty { email }
|
fun getPublicName() = name.ifEmpty { email }
|
||||||
|
|
||||||
fun updateImage(context: Context, imageView: ImageView, placeholder: Drawable) {
|
fun updateImage(context: Context, imageView: ImageView, placeholder: Drawable) {
|
||||||
|
|
|
@ -2,7 +2,6 @@ plugins {
|
||||||
alias(libs.plugins.android).apply(false)
|
alias(libs.plugins.android).apply(false)
|
||||||
alias(libs.plugins.kotlinAndroid).apply(false)
|
alias(libs.plugins.kotlinAndroid).apply(false)
|
||||||
alias(libs.plugins.ksp).apply(false)
|
alias(libs.plugins.ksp).apply(false)
|
||||||
alias(libs.plugins.parcelize).apply(false)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.register<Delete>("clean") {
|
tasks.register<Delete>("clean") {
|
||||||
|
|
|
@ -45,5 +45,4 @@ room = [
|
||||||
android = { id = "com.android.application", version.ref = "gradlePlugins-agp" }
|
android = { id = "com.android.application", version.ref = "gradlePlugins-agp" }
|
||||||
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
|
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
|
||||||
kotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
|
kotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
|
||||||
parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" }
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue