Skip to content

Commit

Permalink
added offline cart repo
Browse files Browse the repository at this point in the history
  • Loading branch information
gilokimu committed Mar 15, 2020
1 parent 00799f0 commit 250b805
Show file tree
Hide file tree
Showing 28 changed files with 481 additions and 163 deletions.
1 change: 1 addition & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,9 @@ dependencies {
implementation project(path: ':firebasecart')
implementation project(path: ':core')
implementation project(path: ':cocart')
implementation project(path: ':offlinecart')

debugImplementation 'im.dino:dbinspector:3.4.1@aar'

implementation 'org.fabiomsr:moneytextview:1.1.0'

Expand Down
8 changes: 8 additions & 0 deletions app/src/main/java/me/gilo/woodroid/app/di/AppModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import dagger.Provides
import me.gilo.woodroid.app.Config
import me.gilo.woodroid.app.WcApp
import me.gilo.woodroid.Woocommerce
import me.gilo.woodroid.offlinecart.repo.RoomCartRepository

import javax.inject.Singleton

Expand Down Expand Up @@ -35,4 +36,11 @@ class AppModule {
.build()
}


@Provides
@Singleton
internal fun providesRoomCartRepository(): RoomCartRepository = RoomCartRepository(app!!.baseContext)



}
33 changes: 3 additions & 30 deletions app/src/main/java/me/gilo/woodroid/app/repo/CartRepository.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,16 @@ import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.firestore.CollectionReference
import com.google.firebase.firestore.DocumentReference
import com.google.firebase.firestore.FirebaseFirestore
import me.gilo.cocart.model.CartItem
import me.gilo.woodroid.app.common.CompletionGenericLiveData
import me.gilo.woodroid.app.common.QueryLiveData
import me.gilo.woodroid.app.common.WooLiveData
import me.gilo.woodroid.app.models.CartLineItem
import me.gilo.woodroid.Woocommerce
import me.gilo.woodroid.core.cart.Cart
import me.gilo.woodroid.core.cart.CartItem

import me.gilo.woodroid.models.Product
import me.gilo.woodroid.offlinecart.repo.RoomCartRepository
import javax.inject.Inject

open class CartRepository @Inject
Expand Down Expand Up @@ -72,33 +74,4 @@ constructor() {
}
}


fun addToCart(product: Product): CompletionGenericLiveData<DocumentReference> {
val completion = CompletionGenericLiveData<DocumentReference>()

val lineItem = CartLineItem()
lineItem.setProductId(product.id)
lineItem.product = product
lineItem.setQuantity(1)

cart.add(lineItem).addOnCompleteListener(completion)

return completion

}

fun addToCart(context: Context, productId: Int, quantity: Int): WooLiveData<CartItem> {
val callBack = WooLiveData<CartItem>()
woocommerce.CartRepository(context).addToCart(productId, quantity).enqueue(callBack)

return callBack
}

fun cart(context: Context, customerId: String): WooLiveData<Map<String, CartItem>> {
val callBack = WooLiveData<Map<String, CartItem>>()
woocommerce.CartRepository(context).cart(customerId).enqueue(callBack)

return callBack
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -18,50 +18,50 @@ constructor() {
fun create(category: Category): WooLiveData<Category> {
val callBack = WooLiveData<Category>()

woocommerce!!.CategoryRepository().create(category).enqueue(callBack)
woocommerce.CategoryRepository().create(category).enqueue(callBack)
return callBack
}


fun category(id: Int): WooLiveData<Category> {
val callBack = WooLiveData<Category>()

woocommerce!!.CategoryRepository().category(id).enqueue(callBack)
woocommerce.CategoryRepository().category(id).enqueue(callBack)
return callBack
}

fun categories(): WooLiveData<List<Category>> {
val callBack = WooLiveData<List<Category>>()

woocommerce!!.CategoryRepository().categories().enqueue(callBack)
woocommerce.CategoryRepository().categories().enqueue(callBack)
return callBack
}

fun categories(productCategoryFilter: ProductCategoryFilter): WooLiveData<List<Category>> {
val callBack = WooLiveData<List<Category>>()

woocommerce!!.CategoryRepository().categories(productCategoryFilter).enqueue(callBack)
woocommerce.CategoryRepository().categories(productCategoryFilter).enqueue(callBack)
return callBack
}

fun update(id: Int, category: Category): WooLiveData<Category> {
val callBack = WooLiveData<Category>()

woocommerce!!.CategoryRepository().update(id, category).enqueue(callBack)
woocommerce.CategoryRepository().update(id, category).enqueue(callBack)
return callBack
}

fun delete(id: Int): WooLiveData<Category> {
val callBack = WooLiveData<Category>()

woocommerce!!.CategoryRepository().delete(id).enqueue(callBack)
woocommerce.CategoryRepository().delete(id).enqueue(callBack)
return callBack
}

fun delete(id: Int, force: Boolean): WooLiveData<Category> {
val callBack = WooLiveData<Category>()

woocommerce!!.CategoryRepository().delete(id, force).enqueue(callBack)
woocommerce.CategoryRepository().delete(id, force).enqueue(callBack)
return callBack
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@ import me.gilo.woodroid.app.models.CartLineItem
import me.gilo.woodroid.app.ui.state.ProgressDialogFragment
import me.gilo.woodroid.app.utils.AppUtils
import me.gilo.woodroid.app.viewmodels.ProductViewModel
import me.gilo.woodroid.core.cart.CartItem
import me.gilo.woodroid.models.Product
import me.gilo.woodroid.offlinecart.repo.RoomCartRepository
import org.greenrobot.eventbus.EventBus


Expand Down Expand Up @@ -57,57 +59,22 @@ class ProductActivity : BaseActivity() {
}

cart()
viewCart(AppUtils(baseContext).cartSession)


}


private fun addToCart(product: Product) {
viewModel.addToCart(baseContext, product.id, 1).observe(this, Observer { response ->
when (response!!.status()) {
Status.LOADING -> {

}

Status.SUCCESS -> {
toast("success!")
val cartItem = response.data()
AppUtils(baseContext).saveCartSession(cartItem.key, "")
}

Status.ERROR -> {
toast("error : " + response.error().message)
}

Status.EMPTY -> {

}
}
})
}

private fun viewCart(customerId: String) {
viewModel.cart(baseContext, customerId).observe(this, Observer { response ->
when (response!!.status()) {
Status.LOADING -> {

}

Status.SUCCESS -> {
toast("success!")

}

Status.ERROR -> {
toast("error : " + response.error().message)
}

Status.EMPTY -> {

}
}
})
private fun addToCart(product: Product) {
RoomCartRepository(baseContext).addToCart(
CartItem(
productId = product.id,
productImage = product.getFeatureImage(),
quantity = 1,
productPrice = product.price
)

)
}

private fun removeFromCart(cartLineItem: CartLineItem) {
Expand Down
20 changes: 0 additions & 20 deletions app/src/main/java/me/gilo/woodroid/app/ui/product/ShopActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -137,26 +137,6 @@ class ShopActivity : BaseActivity() {

private fun cart() {
val cartKey = AppUtils(baseContext).cartSession
viewModel.cart(baseContext, cartKey).observe(this, androidx.lifecycle.Observer { response ->
when (response!!.status()) {
Status.LOADING -> {
}

Status.SUCCESS -> {
val cartResponse = response.data()
}

Status.ERROR -> {


}

Status.EMPTY -> {

}
}

})
}

private fun search(query : String) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,6 @@ public final class CartViewModel extends ViewModel {
this.customerRepository = customerRepository;
}

public CompletionGenericLiveData<DocumentReference> addToCart(Product product) {
return cartRepository.addToCart(product);
}

public QueryLiveData<CartLineItem> cart() {
return cartRepository.cart();
}
Expand All @@ -51,10 +47,6 @@ public CompletionGenericLiveData<Void> setQuantity(CartLineItem cartLineItem, in
return cartRepository.setQuantity(cartLineItem, quantity);
}

// public WooLiveData<Map<String, CartLineItem>> cart(Context context) {
// return cartRepository.cart(context);
// }

public WooLiveData<Order> createOrder(Order order) {
return orderRepository.create(order);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,14 @@

import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import android.content.Context;
import com.google.firebase.firestore.DocumentReference;

import me.gilo.cocart.model.CartItem;
import me.gilo.woodroid.app.common.CompletionGenericLiveData;
import me.gilo.woodroid.app.common.QueryLiveData;
import me.gilo.woodroid.app.common.WooLiveData;
import me.gilo.woodroid.app.models.CartLineItem;
import me.gilo.woodroid.app.repo.CartRepository;
import me.gilo.woodroid.app.repo.OrderRepository;
import me.gilo.woodroid.app.repo.ProductRepository;
import me.gilo.woodroid.models.LineItem;

import me.gilo.woodroid.models.Order;
import me.gilo.woodroid.models.Product;
import me.gilo.woodroid.models.ProductReview;
Expand Down Expand Up @@ -52,9 +48,6 @@ public WooLiveData<List<Product>> products() {
return productRepository.products();
}

public CompletionGenericLiveData<DocumentReference> addToCart(Product product) {
return cartRepository.addToCart(product);
}

public WooLiveData<Order> addToCart(int productId) {
return orderRepository.addToCart(productId);
Expand All @@ -76,14 +69,6 @@ public CompletionGenericLiveData<Void> setQuantity(CartLineItem cartLineItem, in
return cartRepository.setQuantity(cartLineItem, quantity);
}

public WooLiveData<Map<String, CartItem>> cart(Context context, String customerId) {
return cartRepository.cart(context, customerId);
}

public WooLiveData<CartItem> addToCart(Context context, int productId, int quantity) {
return cartRepository.addToCart(context, productId, quantity);
}

public WooLiveData<List<Product>> products(ProductFilter filter) {
return productRepository.products(filter);
}
Expand Down
16 changes: 16 additions & 0 deletions core/src/main/java/me/gilo/woodroid/core/cart/CartItem.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package me.gilo.woodroid.core.cart


data class CartItem (
var id: Int? = 0,
var createdAt: Long? = null,
var modifiedAt: Long? = null,
var productId: Int = 0,
var variationId: Int? = 0,
var quantity: Int = 0,

var productName: String? = "",
var productPrice: String? = "",
var productImage: String? = ""

)
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ abstract class CartRepository{

abstract fun clear(): LiveData<String>
abstract fun count(id: Int): LiveData<Int>
abstract fun cart(): LiveData<List<LineItem>>
abstract fun addToCart(lineItem: LineItem): LiveData<LineItem>
abstract fun cart(): LiveData<Cart>
abstract fun addToCart(cartItem: CartItem)
abstract fun delete(cartId: String): LiveData<String>
abstract fun restore(cartId: String): LiveData<String>
abstract fun update(cartId: String, quantity: Int): LiveData<LineItem>
abstract fun update(cartId: String, quantity: Int)

}
Loading

0 comments on commit 250b805

Please sign in to comment.