From d528e38709838662cd022c2413b9602d2d46d4f6 Mon Sep 17 00:00:00 2001 From: Gilbert Kimutai Date: Tue, 17 Dec 2019 05:15:48 +0300 Subject: [PATCH] updated the cocart implementation --- app/build.gradle | 1 + .../gilo/woodroid/app/repo/CartRepository.kt | 15 +- .../app/ui/product/ProductActivity.kt | 34 +++- .../woodroid/app/ui/product/ShopActivity.kt | 4 +- .../me/gilo/woodroid/app/utils/AppUtils.java | 2 +- .../app/viewmodels/CartViewModel.java | 6 +- .../app/viewmodels/ProductViewModel.java | 10 +- .../java/me/gilo/cocart/data/RestAdapter.kt | 18 -- .../java/me/gilo/cocart/data/api/ItemsAPI.kt | 27 ++- .../gilo/cocart/data/auth/AlphabeticSorter.kt | 12 -- .../gilo/cocart/data/auth/AuthIntercepter.kt | 174 ------------------ .../data/callbacks/CategoriesCallback.kt | 14 -- .../cocart/data/callbacks/CustomerData.kt | 8 - .../me/gilo/cocart/data/callbacks/Data.kt | 7 - .../cocart/data/callbacks/OrderCallback.kt | 11 -- .../cocart/data/callbacks/ProductCallback.kt | 12 -- .../gilo/cocart/data/callbacks/ProductData.kt | 8 - .../cocart/data/callbacks/ReviewsCallback.kt | 13 -- .../gilo/cocart/data/callbacks/ReviewsData.kt | 11 -- .../cocart/data/callbacks/StoreCallback.kt | 10 - .../gilo/cocart/data/requests/CartRequest.kt | 11 ++ .../java/me/gilo/cocart/model/CartItem.kt | 7 +- .../java/me/gilo/cocart/model/CartTotal.kt | 54 ++++++ .../me/gilo/cocart/repo/CoCartRepository.kt | 15 +- .../main/java/me/gilo/woodroid/Woocommerce.kt | 3 +- .../me/gilo/woodroid/repo/CartRepository.kt | 6 +- 26 files changed, 173 insertions(+), 320 deletions(-) delete mode 100644 cocart/src/main/java/me/gilo/cocart/data/RestAdapter.kt delete mode 100644 cocart/src/main/java/me/gilo/cocart/data/auth/AlphabeticSorter.kt delete mode 100644 cocart/src/main/java/me/gilo/cocart/data/auth/AuthIntercepter.kt delete mode 100644 cocart/src/main/java/me/gilo/cocart/data/callbacks/CategoriesCallback.kt delete mode 100644 cocart/src/main/java/me/gilo/cocart/data/callbacks/CustomerData.kt delete mode 100644 cocart/src/main/java/me/gilo/cocart/data/callbacks/Data.kt delete mode 100644 cocart/src/main/java/me/gilo/cocart/data/callbacks/OrderCallback.kt delete mode 100644 cocart/src/main/java/me/gilo/cocart/data/callbacks/ProductCallback.kt delete mode 100644 cocart/src/main/java/me/gilo/cocart/data/callbacks/ProductData.kt delete mode 100644 cocart/src/main/java/me/gilo/cocart/data/callbacks/ReviewsCallback.kt delete mode 100644 cocart/src/main/java/me/gilo/cocart/data/callbacks/ReviewsData.kt delete mode 100644 cocart/src/main/java/me/gilo/cocart/data/callbacks/StoreCallback.kt create mode 100644 cocart/src/main/java/me/gilo/cocart/data/requests/CartRequest.kt create mode 100644 cocart/src/main/java/me/gilo/cocart/model/CartTotal.kt diff --git a/app/build.gradle b/app/build.gradle index dbec713..7632f33 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -199,6 +199,7 @@ dependencies { implementation project(path: ':woodroid') implementation project(path: ':firebasecart') implementation project(path: ':core') + implementation project(path: ':cocart') implementation 'org.fabiomsr:moneytextview:1.1.0' diff --git a/app/src/main/java/me/gilo/woodroid/app/repo/CartRepository.kt b/app/src/main/java/me/gilo/woodroid/app/repo/CartRepository.kt index 37df858..8a798a0 100644 --- a/app/src/main/java/me/gilo/woodroid/app/repo/CartRepository.kt +++ b/app/src/main/java/me/gilo/woodroid/app/repo/CartRepository.kt @@ -7,12 +7,12 @@ 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.models.LineItem import me.gilo.woodroid.models.Product import javax.inject.Inject @@ -87,9 +87,16 @@ constructor() { } - fun cart(context: Context): WooLiveData> { - val callBack = WooLiveData>() - woocommerce.CartRepository(context).cart().enqueue(callBack) + fun addToCart(context: Context, productId: Int, quantity: Int): WooLiveData { + val callBack = WooLiveData() + woocommerce.CartRepository(context).addToCart(productId, quantity).enqueue(callBack) + + return callBack + } + + fun cart(context: Context, customerId: String): WooLiveData> { + val callBack = WooLiveData>() + woocommerce.CartRepository(context).cart(customerId).enqueue(callBack) return callBack } 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 fc86a2f..dc9da92 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 @@ -11,6 +11,7 @@ import android.widget.FrameLayout import android.widget.TextView import android.widget.Toast import androidx.core.content.ContextCompat +import androidx.lifecycle.Observer import kotlinx.android.synthetic.main.activity_product.* import kotlinx.android.synthetic.main.content_product.* import me.gilo.woodroid.app.R @@ -20,6 +21,7 @@ import me.gilo.woodroid.app.common.Status import me.gilo.woodroid.app.events.ProductEvent 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.models.Product import org.greenrobot.eventbus.EventBus @@ -55,32 +57,56 @@ class ProductActivity : BaseActivity() { } cart() + viewCart(AppUtils(baseContext).cartSession) } private fun addToCart(product: Product) { - viewModel.addToCart(product.id).observe(this, androidx.lifecycle.Observer { response -> + 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 -> { + + } + } }) } diff --git a/app/src/main/java/me/gilo/woodroid/app/ui/product/ShopActivity.kt b/app/src/main/java/me/gilo/woodroid/app/ui/product/ShopActivity.kt index 1bfb2ea..8a30a37 100644 --- a/app/src/main/java/me/gilo/woodroid/app/ui/product/ShopActivity.kt +++ b/app/src/main/java/me/gilo/woodroid/app/ui/product/ShopActivity.kt @@ -16,6 +16,7 @@ import me.gilo.woodroid.app.adapter.ProductAdapter import me.gilo.woodroid.app.common.BaseActivity import me.gilo.woodroid.app.common.Status 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.models.Product import me.gilo.woodroid.models.filters.ProductFilter @@ -135,7 +136,8 @@ class ShopActivity : BaseActivity() { } private fun cart() { - viewModel.cart(baseContext).observe(this, androidx.lifecycle.Observer { response -> + val cartKey = AppUtils(baseContext).cartSession + viewModel.cart(baseContext, cartKey).observe(this, androidx.lifecycle.Observer { response -> when (response!!.status()) { Status.LOADING -> { } diff --git a/app/src/main/java/me/gilo/woodroid/app/utils/AppUtils.java b/app/src/main/java/me/gilo/woodroid/app/utils/AppUtils.java index 4414225..8e1a44d 100644 --- a/app/src/main/java/me/gilo/woodroid/app/utils/AppUtils.java +++ b/app/src/main/java/me/gilo/woodroid/app/utils/AppUtils.java @@ -63,7 +63,7 @@ public class AppUtils { public String getCartSession() { SharedPreferences prefs = context.getSharedPreferences(MY_PREFS_NAME, context.MODE_PRIVATE); - return prefs.getString("cartSession", null); + return prefs.getString("cartSession", ""); } public String getExpiry() { diff --git a/app/src/main/java/me/gilo/woodroid/app/viewmodels/CartViewModel.java b/app/src/main/java/me/gilo/woodroid/app/viewmodels/CartViewModel.java index ff93ab6..a1c9b73 100644 --- a/app/src/main/java/me/gilo/woodroid/app/viewmodels/CartViewModel.java +++ b/app/src/main/java/me/gilo/woodroid/app/viewmodels/CartViewModel.java @@ -51,9 +51,9 @@ public final class CartViewModel extends ViewModel { return cartRepository.setQuantity(cartLineItem, quantity); } - public WooLiveData> cart(Context context) { - return cartRepository.cart(context); - } +// public WooLiveData> cart(Context context) { +// return cartRepository.cart(context); +// } public WooLiveData createOrder(Order order) { return orderRepository.create(order); diff --git a/app/src/main/java/me/gilo/woodroid/app/viewmodels/ProductViewModel.java b/app/src/main/java/me/gilo/woodroid/app/viewmodels/ProductViewModel.java index a18c9f1..ae15fb1 100644 --- a/app/src/main/java/me/gilo/woodroid/app/viewmodels/ProductViewModel.java +++ b/app/src/main/java/me/gilo/woodroid/app/viewmodels/ProductViewModel.java @@ -4,6 +4,8 @@ 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; @@ -74,8 +76,12 @@ public final class ProductViewModel extends ViewModel { return cartRepository.setQuantity(cartLineItem, quantity); } - public WooLiveData> cart(Context context) { - return cartRepository.cart(context); + public WooLiveData> cart(Context context, String customerId) { + return cartRepository.cart(context, customerId); + } + + public WooLiveData addToCart(Context context, int productId, int quantity) { + return cartRepository.addToCart(context, productId, quantity); } public WooLiveData> products(ProductFilter filter) { diff --git a/cocart/src/main/java/me/gilo/cocart/data/RestAdapter.kt b/cocart/src/main/java/me/gilo/cocart/data/RestAdapter.kt deleted file mode 100644 index 5096150..0000000 --- a/cocart/src/main/java/me/gilo/cocart/data/RestAdapter.kt +++ /dev/null @@ -1,18 +0,0 @@ -package me.gilo.woodroid.data - -import org.apache.http.NameValuePair - -import java.util.ArrayList - -class RestAdapter(private val baseUrl: String, private val consumerKey: String, private val consumerSecret: String) { - companion object { - - internal var oauth_nonce = "" - internal var oauth_timestamp = "" - internal var oauth_signature_method = "HMAC-SHA1" - - internal var params: ArrayList? = null - } - - -} diff --git a/cocart/src/main/java/me/gilo/cocart/data/api/ItemsAPI.kt b/cocart/src/main/java/me/gilo/cocart/data/api/ItemsAPI.kt index a3c2479..218e7ed 100644 --- a/cocart/src/main/java/me/gilo/cocart/data/api/ItemsAPI.kt +++ b/cocart/src/main/java/me/gilo/cocart/data/api/ItemsAPI.kt @@ -2,7 +2,9 @@ package me.gilo.cocart.data.api import me.gilo.cocart.data.requests.CartItemRequest +import me.gilo.cocart.data.requests.CartRequest import me.gilo.cocart.model.CartItem +import me.gilo.cocart.model.CartTotal import retrofit2.Call import retrofit2.http.* @@ -10,6 +12,29 @@ interface ItemsAPI { @Headers("Content-Type: application/json") @POST("add-item") - fun addToCart(@Body body: CartItemRequest): Call> + fun addToCart(@Body body: CartItemRequest): Call + + @Headers("Content-Type: application/json") + @GET("get-cart") + fun list( @Query("thumb") thumb: Boolean = true): Call> + + @POST("get-cart/saved") + fun getCustomerCart(@Body body: CartRequest): Call> + + @Headers("Content-Type: application/json") + @POST("clear") + fun clear(): Call + + @Headers("Content-Type: application/json") + @GET("count-items") + fun count(): Call + + @Headers("Content-Type: application/json") + @POST("calculate") + fun calculate(@Query("return") returnTotal: Boolean = true): Call + + @Headers("Content-Type: application/json") + @GET("totals") + fun totals(@Query("html") returnTotal: Boolean = true): Call } \ No newline at end of file diff --git a/cocart/src/main/java/me/gilo/cocart/data/auth/AlphabeticSorter.kt b/cocart/src/main/java/me/gilo/cocart/data/auth/AlphabeticSorter.kt deleted file mode 100644 index b19c3df..0000000 --- a/cocart/src/main/java/me/gilo/cocart/data/auth/AlphabeticSorter.kt +++ /dev/null @@ -1,12 +0,0 @@ -package me.gilo.woodroid.data.auth - -import org.apache.http.NameValuePair - -import java.util.Comparator - -class AlphabeticSorter : Comparator { - - override fun compare(nameValuePair1: NameValuePair, nameValuePair2: NameValuePair): Int { - return nameValuePair1.name.compareTo(nameValuePair2.name) - } -} \ No newline at end of file diff --git a/cocart/src/main/java/me/gilo/cocart/data/auth/AuthIntercepter.kt b/cocart/src/main/java/me/gilo/cocart/data/auth/AuthIntercepter.kt deleted file mode 100644 index 2472c0b..0000000 --- a/cocart/src/main/java/me/gilo/cocart/data/auth/AuthIntercepter.kt +++ /dev/null @@ -1,174 +0,0 @@ -package me.gilo.woodroid.data.auth - -import android.util.Base64 -import android.util.Log -import okhttp3.HttpUrl -import okhttp3.Interceptor -import okhttp3.Request -import okhttp3.Response -import org.apache.http.NameValuePair -import org.apache.http.client.utils.URLEncodedUtils -import org.apache.http.message.BasicNameValuePair - -import javax.crypto.Mac -import javax.crypto.spec.SecretKeySpec -import java.io.IOException -import java.io.UnsupportedEncodingException -import java.net.URLDecoder -import java.net.URLEncoder -import java.security.InvalidKeyException -import java.security.NoSuchAlgorithmException -import java.util.* -import java.util.Map - -class AuthIntercepter(private val consumerKey: String, private val consumerSecret: String) : Interceptor { - private var oauth_signature = "" - - - @Throws(IOException::class) - override fun intercept(chain: Interceptor.Chain): Response { - val params = getOauthParams(chain) - - val builder = chain.request().url().newBuilder() - for (entry in params) { - builder.addQueryParameter(entry.name, entry.value) - } - - val newRequest = chain.request() - .newBuilder() - .url(builder.build()) - .header("Accept", "application/json") - .build() - - return chain.proceed(newRequest) - } - - fun getOauthParams(chain: Interceptor.Chain): ArrayList { - val params = ArrayList() - - var request_url = chain.request().url().toString() - - val iterator = getQueryParams(request_url).entries.iterator() - while (iterator.hasNext()) { - val pair = iterator.next() as Map.Entry<*, *> - - val key = pair.key as String - val values = pair.value as List - var value = "" - - //why there would be multiple values for single key is not so clear to me, will keep this here though - if (values.size == 1) { - value = values[0] - } - - params.add(BasicNameValuePair(key, value)) - - iterator.remove() - } - - if (request_url.contains("?")) { - val request_url_end = request_url.indexOf("?") - request_url = request_url.substring(0, request_url_end) - } - - oauth_nonce = getOauth_nonce() - oauth_timestamp = getOauth_timestamp() - - params.add(BasicNameValuePair("oauth_consumer_key", consumerKey)) - params.add(BasicNameValuePair("oauth_nonce", oauth_nonce)) - params.add(BasicNameValuePair("oauth_timestamp", oauth_timestamp)) - params.add(BasicNameValuePair("oauth_signature_method", oauth_signature_method)) - - Collections.sort(params, AlphabeticSorter()) - val encodedParams = URLEncodedUtils.format(params, "utf-8") - oauth_signature = getOauth_signature(chain.request().method(), request_url, consumerSecret, encodedParams) - - params.add(BasicNameValuePair("oauth_signature", oauth_signature)) - - return params - } - - fun getOauth_nonce(): String { - return StringBuilder((Math.random() * 100000000.0).toString()).toString() - } - - fun getStringToSign(method: String, url: String, parameters: String): String { - var string_to_sign = "" - try { - string_to_sign = StringBuilder("$method&") - .append(URLEncoder.encode(url, "utf-8")).append("&") - .append(URLEncoder.encode(parameters, "utf-8")) - .toString() - } catch (e: UnsupportedEncodingException) { - e.printStackTrace() - } - - return string_to_sign - } - - - fun getOauth_signature(method: String, url: String, consumerSecret: String, parameters: String): String { - var signature = "" - val string_to_sign = getStringToSign(method, url, parameters) - - try { - val mac = Mac.getInstance(oauth_signature_method) - val secret = "$consumerSecret&" - mac.init(SecretKeySpec(secret.toByteArray(charset("utf-8")), oauth_signature_method)) - signature = - Base64.encodeToString(mac.doFinal(string_to_sign.toByteArray(charset("utf-8"))), 0).trim { it <= ' ' } - } catch (e: NoSuchAlgorithmException) { - e.printStackTrace() - } catch (e: InvalidKeyException) { - e.printStackTrace() - } catch (e: UnsupportedEncodingException) { - e.printStackTrace() - } - - return signature - } - - - fun getOauth_timestamp(): String { - val stamp = (System.currentTimeMillis() / 1000.0).toLong() - return StringBuilder(stamp.toString()).toString() - } - - companion object { - - - internal var oauth_nonce = "" - internal var oauth_timestamp = "" - internal var oauth_signature_method = "HMAC-SHA1" - - fun getQueryParams(url: String): MutableMap> { - try { - val params = HashMap>() - val urlParts = url.split("\\?".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() - if (urlParts.size > 1) { - val query = urlParts[1] - for (param in query.split("&".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()) { - val pair = param.split("=".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() - val key = URLDecoder.decode(pair[0], "UTF-8") - var value = "" - if (pair.size > 1) { - value = URLDecoder.decode(pair[1], "UTF-8") - } - - var values: MutableList? = params[key]?.toMutableList() - if (values == null) { - values = ArrayList() - params[key] = values - } - values.add(value) - } - } - - return params - } catch (ex: UnsupportedEncodingException) { - throw AssertionError(ex) - } - - } - } -} diff --git a/cocart/src/main/java/me/gilo/cocart/data/callbacks/CategoriesCallback.kt b/cocart/src/main/java/me/gilo/cocart/data/callbacks/CategoriesCallback.kt deleted file mode 100644 index afce783..0000000 --- a/cocart/src/main/java/me/gilo/cocart/data/callbacks/CategoriesCallback.kt +++ /dev/null @@ -1,14 +0,0 @@ -package me.gilo.woodroid.data.callbacks - - -import com.google.gson.annotations.SerializedName -import me.gilo.woodroid.models.Category - - -import java.util.ArrayList - - -class CategoriesCallback { - @SerializedName("product_categories") - lateinit var categories: ArrayList -} diff --git a/cocart/src/main/java/me/gilo/cocart/data/callbacks/CustomerData.kt b/cocart/src/main/java/me/gilo/cocart/data/callbacks/CustomerData.kt deleted file mode 100644 index c229ff0..0000000 --- a/cocart/src/main/java/me/gilo/cocart/data/callbacks/CustomerData.kt +++ /dev/null @@ -1,8 +0,0 @@ -package me.gilo.woodroid.data.callbacks - - -import me.gilo.woodroid.models.Customer - -class CustomerData { - lateinit var customer: Customer -} diff --git a/cocart/src/main/java/me/gilo/cocart/data/callbacks/Data.kt b/cocart/src/main/java/me/gilo/cocart/data/callbacks/Data.kt deleted file mode 100644 index dbad33c..0000000 --- a/cocart/src/main/java/me/gilo/cocart/data/callbacks/Data.kt +++ /dev/null @@ -1,7 +0,0 @@ -package me.gilo.woodroid.data.callbacks - -import me.gilo.woodroid.models.Order - -class Data { - lateinit var order: Order -} diff --git a/cocart/src/main/java/me/gilo/cocart/data/callbacks/OrderCallback.kt b/cocart/src/main/java/me/gilo/cocart/data/callbacks/OrderCallback.kt deleted file mode 100644 index bbbb5a9..0000000 --- a/cocart/src/main/java/me/gilo/cocart/data/callbacks/OrderCallback.kt +++ /dev/null @@ -1,11 +0,0 @@ -package me.gilo.woodroid.data.callbacks - - -import me.gilo.woodroid.models.Order - -import java.util.ArrayList - - -class OrderCallback { - var orders = ArrayList() -} diff --git a/cocart/src/main/java/me/gilo/cocart/data/callbacks/ProductCallback.kt b/cocart/src/main/java/me/gilo/cocart/data/callbacks/ProductCallback.kt deleted file mode 100644 index 527b53a..0000000 --- a/cocart/src/main/java/me/gilo/cocart/data/callbacks/ProductCallback.kt +++ /dev/null @@ -1,12 +0,0 @@ -package me.gilo.woodroid.data.callbacks - - -import me.gilo.woodroid.models.Product - -import java.util.ArrayList - - -class ProductCallback { - var products = ArrayList() - lateinit var product: Product -} diff --git a/cocart/src/main/java/me/gilo/cocart/data/callbacks/ProductData.kt b/cocart/src/main/java/me/gilo/cocart/data/callbacks/ProductData.kt deleted file mode 100644 index 5716c8b..0000000 --- a/cocart/src/main/java/me/gilo/cocart/data/callbacks/ProductData.kt +++ /dev/null @@ -1,8 +0,0 @@ -package me.gilo.woodroid.data.callbacks - - -import me.gilo.woodroid.models.Product - -class ProductData { - var product: Product? = null -} diff --git a/cocart/src/main/java/me/gilo/cocart/data/callbacks/ReviewsCallback.kt b/cocart/src/main/java/me/gilo/cocart/data/callbacks/ReviewsCallback.kt deleted file mode 100644 index ba26a00..0000000 --- a/cocart/src/main/java/me/gilo/cocart/data/callbacks/ReviewsCallback.kt +++ /dev/null @@ -1,13 +0,0 @@ -package me.gilo.woodroid.data.callbacks - - -import com.google.gson.annotations.SerializedName -import me.gilo.woodroid.models.ProductReview - -import java.util.ArrayList - - -class ReviewsCallback { - @SerializedName("product_reviews") - lateinit var productReviews: ArrayList -} diff --git a/cocart/src/main/java/me/gilo/cocart/data/callbacks/ReviewsData.kt b/cocart/src/main/java/me/gilo/cocart/data/callbacks/ReviewsData.kt deleted file mode 100644 index 031dde2..0000000 --- a/cocart/src/main/java/me/gilo/cocart/data/callbacks/ReviewsData.kt +++ /dev/null @@ -1,11 +0,0 @@ -package me.gilo.woodroid.data.callbacks - - -import me.gilo.woodroid.models.ProductReview - -import java.util.ArrayList - - -class ReviewsData { - lateinit var productReviews: ArrayList -} diff --git a/cocart/src/main/java/me/gilo/cocart/data/callbacks/StoreCallback.kt b/cocart/src/main/java/me/gilo/cocart/data/callbacks/StoreCallback.kt deleted file mode 100644 index 291ae59..0000000 --- a/cocart/src/main/java/me/gilo/cocart/data/callbacks/StoreCallback.kt +++ /dev/null @@ -1,10 +0,0 @@ -package me.gilo.woodroid.data.callbacks - -import com.google.gson.annotations.SerializedName -import me.gilo.woodroid.models.Store - -class StoreCallback { - - @SerializedName("store") - lateinit var store: Store -} diff --git a/cocart/src/main/java/me/gilo/cocart/data/requests/CartRequest.kt b/cocart/src/main/java/me/gilo/cocart/data/requests/CartRequest.kt new file mode 100644 index 0000000..7e61a5a --- /dev/null +++ b/cocart/src/main/java/me/gilo/cocart/data/requests/CartRequest.kt @@ -0,0 +1,11 @@ +package me.gilo.cocart.data.requests + +import com.google.gson.annotations.SerializedName + +data class CartRequest( + @SerializedName("id") + var customerId: String? = null, + + @SerializedName("thumb") + var thumb: Boolean? +) \ No newline at end of file diff --git a/cocart/src/main/java/me/gilo/cocart/model/CartItem.kt b/cocart/src/main/java/me/gilo/cocart/model/CartItem.kt index fd73a37..a6fea3e 100644 --- a/cocart/src/main/java/me/gilo/cocart/model/CartItem.kt +++ b/cocart/src/main/java/me/gilo/cocart/model/CartItem.kt @@ -9,7 +9,9 @@ class CartItem { var productId: Int = 0 @SerializedName("variation_id") - var variationId: Int = 0 + var variationId: Int? = null + + var variation: Array? = null lateinit var subtotal: String @SerializedName("subtotal_tax") @@ -22,7 +24,8 @@ class CartItem { lateinit var name: String - + lateinit var key: String lateinit var sku: String lateinit var variations: String + lateinit var data_hash: String } diff --git a/cocart/src/main/java/me/gilo/cocart/model/CartTotal.kt b/cocart/src/main/java/me/gilo/cocart/model/CartTotal.kt new file mode 100644 index 0000000..492ef54 --- /dev/null +++ b/cocart/src/main/java/me/gilo/cocart/model/CartTotal.kt @@ -0,0 +1,54 @@ +package me.gilo.cocart.model + +import com.google.gson.annotations.SerializedName + + +data class CartTotal ( + + @SerializedName("subtotal") + var subtotal: String? = "", + + @SerializedName("subtotal_tax") + var subtotalTax: Float? = 0f, + + @SerializedName("shipping_total") + var shippingTotal: String? = "", + + @SerializedName("shipping_tax") + var shippingTax: Float? = 0f, + + @SerializedName("shipping_taxes") + var shippingTaxes: Map? = HashMap(), + + @SerializedName("discount_total") + var discountTotal: Float? = 0f, + + @SerializedName("discount_tax") + var discountTax: Float? = 0f, + + @SerializedName("cart_contents_total") + var cartContentsTotal: String? = "", + + @SerializedName("cart_contents_tax") + var cartContentsTax: Float? = 0f, + + @SerializedName("cart_contents_taxes") + var cartContentsTaxes: Map? = HashMap(), + + @SerializedName("fee_total") + var feeTotal: String? = "", + + @SerializedName("fee_tax") + var feeTax: String? = "", + + @SerializedName("fee_taxes") + var feeTaxes: Any, + + @SerializedName("total") + var total: String? = "", + + @SerializedName("total_tax") + var totalTax: Float? = 0f + + + ) diff --git a/cocart/src/main/java/me/gilo/cocart/repo/CoCartRepository.kt b/cocart/src/main/java/me/gilo/cocart/repo/CoCartRepository.kt index 0d74d85..66f9d9e 100644 --- a/cocart/src/main/java/me/gilo/cocart/repo/CoCartRepository.kt +++ b/cocart/src/main/java/me/gilo/cocart/repo/CoCartRepository.kt @@ -2,6 +2,7 @@ package me.gilo.cocart.repo import me.gilo.cocart.data.api.ItemsAPI import me.gilo.cocart.data.requests.CartItemRequest +import me.gilo.cocart.data.requests.CartRequest import me.gilo.cocart.model.CartItem import okhttp3.OkHttpClient import okhttp3.logging.HttpLoggingInterceptor @@ -35,7 +36,7 @@ class CoCartRepository(private var baseUrl: String, consumerKey: String, consume apiService = retrofit.create(ItemsAPI::class.java) } - fun addToCart(productId: Int, quantity: Int): Call> { + fun addToCart(productId: Int, quantity: Int): Call { val cartItemRequest = CartItemRequest( productId = productId, quantity = quantity ) @@ -43,5 +44,17 @@ class CoCartRepository(private var baseUrl: String, consumerKey: String, consume return apiService.addToCart(cartItemRequest) } + fun cart(): Call> { + return apiService.list() + } + + fun cart(customerId: Int, thumb:Boolean = false): Call> { + return apiService.list(thumb) + } + + fun getCustomerCart(customerId: String, thumb:Boolean = false): Call> { + return apiService.getCustomerCart(CartRequest(customerId=customerId, thumb = true)) + } + } diff --git a/woodroid/src/main/java/me/gilo/woodroid/Woocommerce.kt b/woodroid/src/main/java/me/gilo/woodroid/Woocommerce.kt index ff9f21e..0ba1b22 100644 --- a/woodroid/src/main/java/me/gilo/woodroid/Woocommerce.kt +++ b/woodroid/src/main/java/me/gilo/woodroid/Woocommerce.kt @@ -37,7 +37,7 @@ class Woocommerce(siteUrl: String, apiVerion: ApiVersion, consumerKey: String, c init { val baseUrl = "$siteUrl/wp-json/wc/v$apiVerion/" - val cartBaseUrl = "$siteUrl/wp-json/wc/v2/" + val cartBaseUrl = "$siteUrl/wp-json/cocart/v1/" orderNoteRepository = OrderNoteRepository(baseUrl, consumerKey, consumerSecret) refundRepository = RefundRepository(baseUrl, consumerKey, consumerSecret) @@ -129,7 +129,6 @@ class Woocommerce(siteUrl: String, apiVerion: ApiVersion, consumerKey: String, c } fun CartRepository(context: Context): CartRepository { - cartRepository.turnOnCookies(context) return cartRepository } diff --git a/woodroid/src/main/java/me/gilo/woodroid/repo/CartRepository.kt b/woodroid/src/main/java/me/gilo/woodroid/repo/CartRepository.kt index 4cef05b..e54f038 100644 --- a/woodroid/src/main/java/me/gilo/woodroid/repo/CartRepository.kt +++ b/woodroid/src/main/java/me/gilo/woodroid/repo/CartRepository.kt @@ -8,8 +8,12 @@ class CartRepository(internal var baseUrl: String, consumerKey: String, consumer private var cartRepository: CoCartRepository = CoCartRepository(baseUrl, consumerKey, consumerSecret) - fun addToCart(productId: Int, quantity: Int): Call> { + fun addToCart(productId: Int, quantity: Int): Call { return cartRepository.addToCart(productId, quantity) } + fun cart(customerId: String): Call> { + return cartRepository.getCustomerCart(customerId = customerId) + } + }