diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..41a4fba
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/me/gilo/woodroid/app/ui/product/ProductActivity.kt b/app/src/main/java/me/gilo/woodroid/app/ui/product/ProductActivity.kt
index f1a6b27..d9bbc14 100644
--- a/app/src/main/java/me/gilo/woodroid/app/ui/product/ProductActivity.kt
+++ b/app/src/main/java/me/gilo/woodroid/app/ui/product/ProductActivity.kt
@@ -55,13 +55,25 @@ class ProductActivity : BaseActivity() {
if (productId != 0){
product(productId)
-
+ checkIfExistsInCart(productId)
}
cart()
+ }
+ private fun checkIfExistsInCart(productId: Int) {
+ RoomCartRepository(baseContext).exists(productId).observe(this, Observer {productExists ->
+ if (productExists) {
+ fab.backgroundTintList = ColorStateList.valueOf(resources.getColor(R.color.carnation_red))
+ fab.setImageDrawable(ContextCompat.getDrawable(baseContext, R.drawable.baseline_remove_shopping_cart_24))
+ }else{
+ fab.backgroundTintList = ColorStateList.valueOf(resources.getColor(R.color.colorPrimary))
+ fab.setImageDrawable(ContextCompat.getDrawable(baseContext, R.drawable.baseline_add_shopping_cart_24))
+ }
+ productInCart = productExists
+ })
}
@@ -79,27 +91,6 @@ class ProductActivity : BaseActivity() {
private fun removeFromCart(cartLineItem: CartLineItem) {
- viewModel.deleteItem(cartLineItem).observe(this, androidx.lifecycle.Observer { response ->
- when (response!!.status()) {
- Status.LOADING -> {
-
- }
-
- Status.SUCCESS -> {
-
-
- }
-
- Status.ERROR -> {
- toast("error : " + response.error().message)
- }
-
- Status.EMPTY -> {
-
- }
- }
-
- })
}
@@ -135,7 +126,7 @@ class ProductActivity : BaseActivity() {
private fun cart() {
- viewModel.cart().observe(this, androidx.lifecycle.Observer { response ->
+ viewModel.cart().observe(this, Observer { response ->
when (response!!.status()) {
Status.LOADING -> {
@@ -156,8 +147,6 @@ class ProductActivity : BaseActivity() {
}
}
- toggleFab()
-
if (cartItems.size == 0 && tvCartCounter != null){
tvCartCounter?.visibility = View.GONE
}else{
@@ -175,7 +164,6 @@ class ProductActivity : BaseActivity() {
Status.EMPTY -> {
productInCart = false
cartItems.clear()
- toggleFab()
if (cartItems.size == 0 && tvCartCounter != null){
tvCartCounter?.visibility = View.GONE
@@ -190,17 +178,6 @@ class ProductActivity : BaseActivity() {
}
- private fun toggleFab() {
- if (productInCart) {
- fab.backgroundTintList = ColorStateList.valueOf(resources.getColor(R.color.carnation_red))
- fab.setImageDrawable(ContextCompat.getDrawable(baseContext, R.drawable.baseline_remove_shopping_cart_24))
- }else{
- fab.backgroundTintList = ColorStateList.valueOf(resources.getColor(R.color.colorPrimary))
- fab.setImageDrawable(ContextCompat.getDrawable(baseContext, R.drawable.baseline_add_shopping_cart_24))
- }
- }
-
-
private fun setUpPage(product: Product) {
tvTitle.text = product.name
tvDescription.text = Html.fromHtml(product.description)
diff --git a/build.gradle b/build.gradle
index 5009e01..9084ae8 100644
--- a/build.gradle
+++ b/build.gradle
@@ -10,7 +10,7 @@ buildscript {
}
dependencies {
- classpath 'com.android.tools.build:gradle:4.0.0-alpha04'
+ classpath 'com.android.tools.build:gradle:4.1.0-alpha02'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.2.0'
classpath 'androidx.navigation:navigation-safe-args-gradle-plugin:2.1.0'
diff --git a/core/src/main/java/me/gilo/woodroid/core/cart/Cart.kt b/core/src/main/java/me/gilo/woodroid/core/cart/Cart.kt
index 5e0cfda..a7279ed 100644
--- a/core/src/main/java/me/gilo/woodroid/core/cart/Cart.kt
+++ b/core/src/main/java/me/gilo/woodroid/core/cart/Cart.kt
@@ -1,6 +1,7 @@
package me.gilo.woodroid.core.cart
+import androidx.lifecycle.LiveData
import me.gilo.woodroid.core.cart.lines.FeeLine
import me.gilo.woodroid.core.cart.lines.LineItem
import me.gilo.woodroid.core.cart.lines.ShippingLine
@@ -32,6 +33,7 @@ data class Cart(
var feeLines: List = ArrayList(),
- var couponLines: List = ArrayList()
+ var couponLines: List = ArrayList(),
+ var items: LiveData>
)
diff --git a/core/src/main/java/me/gilo/woodroid/core/cart/CartItem.kt b/core/src/main/java/me/gilo/woodroid/core/cart/CartItem.kt
index 2c61686..7d070c2 100644
--- a/core/src/main/java/me/gilo/woodroid/core/cart/CartItem.kt
+++ b/core/src/main/java/me/gilo/woodroid/core/cart/CartItem.kt
@@ -2,7 +2,7 @@ package me.gilo.woodroid.core.cart
data class CartItem (
- var id: Int? = 0,
+ var id: Int? = null,
var createdAt: Long? = null,
var modifiedAt: Long? = null,
var productId: Int = 0,
diff --git a/firebasecart/src/main/java/me/gilo/woodroid/firebasecart/FirebaseCartRepository.kt b/firebasecart/src/main/java/me/gilo/woodroid/firebasecart/FirebaseCartRepository.kt
index cfc7b30..eab7f08 100644
--- a/firebasecart/src/main/java/me/gilo/woodroid/firebasecart/FirebaseCartRepository.kt
+++ b/firebasecart/src/main/java/me/gilo/woodroid/firebasecart/FirebaseCartRepository.kt
@@ -1,14 +1,9 @@
package me.gilo.woodroid.firebasecart
-import androidx.lifecycle.LiveData
-import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.firestore.CollectionReference
import com.google.firebase.firestore.FirebaseFirestore
-import me.gilo.woodroid.core.cart.Cart
-import me.gilo.woodroid.core.cart.CartItem
-import me.gilo.woodroid.core.cart.CartRepository
-import me.gilo.woodroid.core.cart.lines.LineItem
+
open class FirebaseCartRepository(userId : String){
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index fc22f1c..71881c9 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Sat Nov 30 11:05:14 EAT 2019
+#Tue Mar 17 11:45:23 EAT 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.0-rc-1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.2.1-bin.zip
diff --git a/offlinecart/src/main/java/me/gilo/woodroid/offlinecart/dao/CartItemDao.kt b/offlinecart/src/main/java/me/gilo/woodroid/offlinecart/dao/CartItemDao.kt
index 164458a..e9b22d5 100755
--- a/offlinecart/src/main/java/me/gilo/woodroid/offlinecart/dao/CartItemDao.kt
+++ b/offlinecart/src/main/java/me/gilo/woodroid/offlinecart/dao/CartItemDao.kt
@@ -12,9 +12,15 @@ interface CartItemDao {
@Query("SELECT * FROM cart_item ORDER BY created_at desc")
fun fetchAll(): List
+ @Query("SELECT * FROM cart_item ORDER BY created_at desc")
+ fun items(): LiveData>
+
@Query("SELECT COUNT(*) FROM cart_item")
fun count(): LiveData
+ @Query("SELECT COUNT(*) FROM cart_item where product_id = :productId")
+ fun exists(productId: Int): LiveData
+
@Query("SELECT * FROM cart_item WHERE id =:id")
operator fun get(id: Int): LiveData
diff --git a/offlinecart/src/main/java/me/gilo/woodroid/offlinecart/entity/CartItemEntity.kt b/offlinecart/src/main/java/me/gilo/woodroid/offlinecart/entity/CartItemEntity.kt
index 8cca48e..6d59d9f 100644
--- a/offlinecart/src/main/java/me/gilo/woodroid/offlinecart/entity/CartItemEntity.kt
+++ b/offlinecart/src/main/java/me/gilo/woodroid/offlinecart/entity/CartItemEntity.kt
@@ -8,7 +8,7 @@ import me.gilo.woodroid.core.cart.CartItem
@Entity(tableName = "cart_item")
data class CartItemEntity (
@PrimaryKey(autoGenerate = true)
- var id: Int? = 0,
+ var id: Int?,
@ColumnInfo(name = "created_at")
var createdAt: Long? = null,
diff --git a/offlinecart/src/main/java/me/gilo/woodroid/offlinecart/repo/CartRepository.kt b/offlinecart/src/main/java/me/gilo/woodroid/offlinecart/repo/CartRepository.kt
index 165fba7..8b08922 100755
--- a/offlinecart/src/main/java/me/gilo/woodroid/offlinecart/repo/CartRepository.kt
+++ b/offlinecart/src/main/java/me/gilo/woodroid/offlinecart/repo/CartRepository.kt
@@ -2,19 +2,18 @@ package me.gilo.woodroid.offlinecart.repo
import android.content.Context
import androidx.lifecycle.LiveData
-import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Transformations
import androidx.room.Room
-import me.gilo.moneta.room.task.DeleteCartItem
-import me.gilo.moneta.room.task.InsertCartItem
-import me.gilo.moneta.room.task.RetrieveCartItems
-import me.gilo.moneta.room.task.UpdateCartItem
-import me.gilo.woodroid.offlinecart.utils.AppUtils
+import me.gilo.woodroid.offlinecart.task.DeleteCartItem
+import me.gilo.woodroid.offlinecart.task.InsertCartItem
+import me.gilo.woodroid.offlinecart.task.UpdateCartItem
+import me.gilo.woodroid.core.cart.Cart
import me.gilo.woodroid.core.cart.CartItem
import me.gilo.woodroid.offlinecart.config.Config
import me.gilo.woodroid.offlinecart.db.AppDatabase
import me.gilo.woodroid.offlinecart.entity.CartItemEntity
import me.gilo.woodroid.offlinecart.entity.toCartItem
+import me.gilo.woodroid.offlinecart.utils.AppUtils
class RoomCartRepository(val context: Context){
@@ -32,6 +31,8 @@ class RoomCartRepository(val context: Context){
InsertCartItem(appDatabase, cartItem).execute()
}
+
+
fun update(cartItem: CartItem) {
cartItem.modifiedAt = AppUtils.currentDateTime.time
UpdateCartItem(appDatabase, cartItem).execute()
@@ -42,6 +43,10 @@ class RoomCartRepository(val context: Context){
return appDatabase.cartItemDao().count()
}
+ fun exists(productId: Int): LiveData {
+ return appDatabase.cartItemDao().exists(productId)
+ }
+
fun delete(cartItem: CartItem) {
DeleteCartItem(appDatabase, cartItem).execute()
}
@@ -53,11 +58,12 @@ class RoomCartRepository(val context: Context){
}
}
- fun items(): LiveData> {
- val data: MutableLiveData> = MutableLiveData()
- RetrieveCartItems(appDatabase, data).execute()
-
- return data
+ fun cart(): Cart {
+ return Cart(
+ items = Transformations.map(appDatabase.cartItemDao().items()){
+ it.map { cartItemEntity -> cartItemEntity.toCartItem() }
+ }
+ )
}
}
diff --git a/offlinecart/src/main/java/me/gilo/woodroid/offlinecart/task/CartItemAsyncExecutor.kt b/offlinecart/src/main/java/me/gilo/woodroid/offlinecart/task/CartItemAsyncExecutor.kt
index e0311fa..79da183 100644
--- a/offlinecart/src/main/java/me/gilo/woodroid/offlinecart/task/CartItemAsyncExecutor.kt
+++ b/offlinecart/src/main/java/me/gilo/woodroid/offlinecart/task/CartItemAsyncExecutor.kt
@@ -1,7 +1,8 @@
-package me.gilo.moneta.room.task
+package me.gilo.woodroid.offlinecart.task
import android.os.AsyncTask
import androidx.lifecycle.MutableLiveData
+import me.gilo.woodroid.core.cart.Cart
import me.gilo.woodroid.core.cart.CartItem
import me.gilo.woodroid.offlinecart.db.AppDatabase
import me.gilo.woodroid.offlinecart.entity.toCartItem
@@ -23,28 +24,6 @@ class InsertCartItem(
}
}
-class RetrieveCartItems(
- private val appDatabase: AppDatabase,
-
- private val data: MutableLiveData>
-) :
- AsyncTask() {
-
- var categories = ArrayList()
-
- override fun doInBackground(vararg voids: Void){
- val list = appDatabase.cartItemDao().fetchAll()
- for (item in list){
- categories.add(item.toCartItem())
- }
- }
-
- override fun onPostExecute(result: Unit?) {
- data.value = categories;
- super.onPostExecute(result)
- }
-}
-
class UpdateCartItem(
private val appDatabase: AppDatabase,
private val cartItem: CartItem