Skip to content
This repository was archived by the owner on Dec 16, 2023. It is now read-only.

Commit d48a8de

Browse files
committed
Use @parcelize for parcelables
1 parent d1ee69b commit d48a8de

6 files changed

Lines changed: 21 additions & 104 deletions

File tree

app/build.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ android {
2626
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
2727
}
2828
}
29+
// Required for @Parcelize
30+
androidExtensions {
31+
experimental = true
32+
}
2933
}
3034

3135
dependencies {

app/src/main/java/com/marknkamau/justjava/data/models/CartItem.kt

Lines changed: 4 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ package com.marknkamau.justjava.data.models
22

33
import androidx.room.Entity
44
import androidx.room.PrimaryKey
5-
import android.os.Parcel
65
import android.os.Parcelable
76
import com.marknjunge.core.model.OrderItem
7+
import kotlinx.android.parcel.Parcelize
88

99
@Entity(tableName = "cart")
10+
@Parcelize
1011
data class CartItem(@PrimaryKey(autoGenerate = true) val id: Int,
1112
var itemName: String,
1213
var itemQty: Int,
@@ -15,37 +16,7 @@ data class CartItem(@PrimaryKey(autoGenerate = true) val id: Int,
1516
var itemMarshmallow: Boolean,
1617
var itemPrice: Int) : Parcelable {
1718

18-
constructor(source: Parcel) : this(
19-
source.readInt(),
20-
source.readString(),
21-
source.readInt(),
22-
1 == source.readInt(),
23-
1 == source.readInt(),
24-
1 == source.readInt(),
25-
source.readInt()
26-
)
27-
28-
override fun describeContents() = 0
29-
30-
override fun writeToParcel(dest: Parcel, flags: Int) = with(dest) {
31-
writeInt(id)
32-
writeString(itemName)
33-
writeInt(itemQty)
34-
writeInt((if (itemCinnamon) 1 else 0))
35-
writeInt((if (itemChoc) 1 else 0))
36-
writeInt((if (itemMarshmallow) 1 else 0))
37-
writeInt(itemPrice)
38-
}
39-
40-
companion object {
41-
@JvmField
42-
val CREATOR: Parcelable.Creator<CartItem> = object : Parcelable.Creator<CartItem> {
43-
override fun createFromParcel(source: Parcel): CartItem = CartItem(source)
44-
override fun newArray(size: Int): Array<CartItem?> = arrayOfNulls(size)
45-
}
19+
fun toOrderItem(): OrderItem {
20+
return OrderItem(this.id, this.itemName, this.itemQty, this.itemCinnamon, this.itemChoc, this.itemMarshmallow, this.itemPrice)
4621
}
4722
}
48-
49-
fun CartItem.toOrderItem(): OrderItem {
50-
return OrderItem(this.id, this.itemName, this.itemQty, this.itemCinnamon, this.itemChoc, this.itemMarshmallow, this.itemPrice)
51-
}

app/src/main/java/com/marknkamau/justjava/ui/checkout/CheckoutPresenter.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import com.marknkamau.justjava.data.local.PreferencesRepository
88
import com.marknjunge.core.model.OrderItem
99
import com.marknjunge.core.model.Order
1010
import com.marknkamau.justjava.data.models.CartItem
11-
import com.marknkamau.justjava.data.models.toOrderItem
1211
import com.marknkamau.justjava.ui.BasePresenter
1312
import kotlinx.coroutines.CoroutineDispatcher
1413
import kotlinx.coroutines.launch

core/build.gradle

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
apply plugin: 'com.android.library'
22
apply plugin: 'kotlin-android'
33
apply plugin: 'kotlin-kapt'
4+
apply plugin: 'kotlin-android-extensions'
45

56
// A properties file is located at projectFolder/keys.properties
67
def keysPropertiesFile = rootProject.file("keys.properties")
@@ -30,6 +31,10 @@ android {
3031
}
3132
}
3233

34+
// Required for @Parcelize
35+
androidExtensions {
36+
experimental = true
37+
}
3338
}
3439

3540
dependencies {
Lines changed: 5 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,13 @@
11
package com.marknjunge.core.model
22

3-
import android.os.Parcel
43
import android.os.Parcelable
4+
import kotlinx.android.parcel.Parcelize
55

6-
open class CoffeeDrink(var drinkID: String = "",
6+
@Parcelize
7+
data class CoffeeDrink(var drinkID: String = "",
78
var drinkName: String = "",
89
var drinkContents: String = "",
910
var drinkDescription: String = "",
1011
var drinkPrice: String = "",
11-
var drinkImage: String = "")
12-
: Parcelable {
13-
14-
constructor(source: Parcel) : this(
15-
source.readString(),
16-
source.readString(),
17-
source.readString(),
18-
source.readString(),
19-
source.readString(),
20-
source.readString()
21-
)
22-
23-
override fun describeContents() = 0
24-
25-
override fun writeToParcel(dest: Parcel, flags: Int) = with(dest) {
26-
writeString(drinkID)
27-
writeString(drinkName)
28-
writeString(drinkContents)
29-
writeString(drinkDescription)
30-
writeString(drinkPrice)
31-
writeString(drinkImage)
32-
}
33-
34-
companion object {
35-
@JvmField val CREATOR: Parcelable.Creator<CoffeeDrink> = object : Parcelable.Creator<CoffeeDrink> {
36-
override fun createFromParcel(source: Parcel): CoffeeDrink = CoffeeDrink(source)
37-
override fun newArray(size: Int): Array<CoffeeDrink?> = arrayOfNulls(size)
38-
}
39-
}
40-
}
12+
var drinkImage: String = ""
13+
) : Parcelable
Lines changed: 3 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package com.marknjunge.core.model
22

3-
import android.os.Parcel
43
import android.os.Parcelable
4+
import kotlinx.android.parcel.Parcelize
55
import java.util.*
66

7+
@Parcelize
78
data class Order(val orderId: String,
89
val customerId: String,
910
var itemsCount: Int,
@@ -13,40 +14,4 @@ data class Order(val orderId: String,
1314
val status: OrderStatus = OrderStatus.PENDING,
1415
val date: Date = Date(),
1516
val paymentMethod: String,
16-
val paymentStatus: String = "unpaid") : Parcelable {
17-
constructor(source: Parcel) : this(
18-
source.readString(),
19-
source.readString(),
20-
source.readInt(),
21-
source.readInt(),
22-
source.readString(),
23-
source.readString(),
24-
OrderStatus.values()[source.readInt()],
25-
source.readSerializable() as Date,
26-
source.readString(),
27-
source.readString()
28-
)
29-
30-
override fun describeContents() = 0
31-
32-
override fun writeToParcel(dest: Parcel, flags: Int) = with(dest) {
33-
writeString(orderId)
34-
writeString(customerId)
35-
writeInt(itemsCount)
36-
writeInt(totalPrice)
37-
writeString(deliveryAddress)
38-
writeString(additionalComments)
39-
writeInt(status.ordinal)
40-
writeSerializable(date)
41-
writeString(paymentMethod)
42-
writeString(paymentStatus)
43-
}
44-
45-
companion object {
46-
@JvmField
47-
val CREATOR: Parcelable.Creator<Order> = object : Parcelable.Creator<Order> {
48-
override fun createFromParcel(source: Parcel): Order = Order(source)
49-
override fun newArray(size: Int): Array<Order?> = arrayOfNulls(size)
50-
}
51-
}
52-
}
17+
val paymentStatus: String = "unpaid") : Parcelable

0 commit comments

Comments
 (0)