From 38db311926e7a9304108a8bf8476fd33d3a9ef72 Mon Sep 17 00:00:00 2001 From: Aaron Rono Date: Fri, 31 May 2019 16:31:56 +0300 Subject: [PATCH] java to kotlin conversion --- app/build.gradle | 11 +- app/src/main/AndroidManifest.xml | 4 +- app/src/main/java/me/gilo/wc/Config.java | 6 +- app/src/main/java/me/gilo/wc/MainActivity.kt | 15 +-- app/src/main/java/me/gilo/wc/WcApp.java | 32 ----- app/src/main/java/me/gilo/wc/WcApp.kt | 35 ++++++ .../java/me/gilo/wc/adapter/CartAdapter.java | 37 ------ .../java/me/gilo/wc/adapter/CartAdapter.kt | 30 +++++ .../me/gilo/wc/adapter/CategoryAdapter.java | 34 ------ .../me/gilo/wc/adapter/CategoryAdapter.kt | 27 +++++ .../me/gilo/wc/adapter/CouponAdapter.java | 34 ------ .../java/me/gilo/wc/adapter/CouponAdapter.kt | 27 +++++ .../gilo/wc/adapter/HomeProductAdapter.java | 34 ------ .../me/gilo/wc/adapter/HomeProductAdapter.kt | 27 +++++ .../java/me/gilo/wc/adapter/ListAdapter.java | 34 ------ .../java/me/gilo/wc/adapter/ListAdapter.kt | 27 +++++ .../java/me/gilo/wc/adapter/MenuAdapter.java | 36 ------ .../java/me/gilo/wc/adapter/MenuAdapter.kt | 30 +++++ .../java/me/gilo/wc/adapter/OrderAdapter.java | 36 ------ .../java/me/gilo/wc/adapter/OrderAdapter.kt | 29 +++++ .../me/gilo/wc/adapter/ProductAdapter.java | 35 ------ .../java/me/gilo/wc/adapter/ProductAdapter.kt | 28 +++++ .../gilo/wc/adapter/ProductReviewAdapter.java | 36 ------ .../gilo/wc/adapter/ProductReviewAdapter.kt | 29 +++++ .../wc/common/CompletionGenericLiveData.java | 25 ---- .../wc/common/CompletionGenericLiveData.kt | 21 ++++ .../java/me/gilo/wc/di/ActivitiesModule.java | 66 ---------- .../java/me/gilo/wc/di/ActivitiesModule.kt | 66 ++++++++++ .../main/java/me/gilo/wc/di/AppComponent.java | 25 ---- .../main/java/me/gilo/wc/di/AppComponent.kt | 19 +++ .../main/java/me/gilo/wc/di/AppModule.java | 39 ------ app/src/main/java/me/gilo/wc/di/AppModule.kt | 38 ++++++ .../java/me/gilo/wc/di/FirebaseModule.java | 46 ------- .../main/java/me/gilo/wc/di/FirebaseModule.kt | 41 +++++++ .../java/me/gilo/wc/di/ViewModelModule.java | 62 ---------- .../java/me/gilo/wc/di/ViewModelModule.kt | 61 ++++++++++ .../java/me/gilo/wc/repo/CartRepository.java | 113 ------------------ .../java/me/gilo/wc/repo/CartRepository.kt | 96 +++++++++++++++ .../me/gilo/wc/repo/CategoryRepository.java | 73 ----------- .../me/gilo/wc/repo/CategoryRepository.kt | 69 +++++++++++ .../me/gilo/wc/repo/CustomerRepository.java | 83 ------------- .../me/gilo/wc/repo/CustomerRepository.kt | 76 ++++++++++++ .../me/gilo/wc/repo/FirebaseRepository.java | 111 ----------------- .../me/gilo/wc/repo/FirebaseRepository.kt | 102 ++++++++++++++++ .../main/java/me/gilo/wc/ui/BaseActivity.kt | 7 +- .../java/me/gilo/wc/ui/WooDroidActivity.kt | 1 - .../ui/onboarding/AnonymousSignInActivity.kt | 53 ++++---- build.gradle | 7 +- woodroid/build.gradle | 6 + .../java/me/gilo/woodroid/Woocommerce.java | 36 +++--- .../woodroid/models/filters/ListFilter.java | 4 +- .../me/gilo/woodroid/repo/CartRepository.java | 105 ---------------- .../me/gilo/woodroid/repo/CartRepository.kt | 99 +++++++++++++++ .../me/gilo/woodroid/utils/Converter.java | 12 -- .../java/me/gilo/woodroid/utils/Converter.kt | 13 ++ 55 files changed, 1061 insertions(+), 1187 deletions(-) delete mode 100644 app/src/main/java/me/gilo/wc/WcApp.java create mode 100644 app/src/main/java/me/gilo/wc/WcApp.kt delete mode 100644 app/src/main/java/me/gilo/wc/adapter/CartAdapter.java create mode 100644 app/src/main/java/me/gilo/wc/adapter/CartAdapter.kt delete mode 100644 app/src/main/java/me/gilo/wc/adapter/CategoryAdapter.java create mode 100644 app/src/main/java/me/gilo/wc/adapter/CategoryAdapter.kt delete mode 100644 app/src/main/java/me/gilo/wc/adapter/CouponAdapter.java create mode 100644 app/src/main/java/me/gilo/wc/adapter/CouponAdapter.kt delete mode 100644 app/src/main/java/me/gilo/wc/adapter/HomeProductAdapter.java create mode 100644 app/src/main/java/me/gilo/wc/adapter/HomeProductAdapter.kt delete mode 100644 app/src/main/java/me/gilo/wc/adapter/ListAdapter.java create mode 100644 app/src/main/java/me/gilo/wc/adapter/ListAdapter.kt delete mode 100644 app/src/main/java/me/gilo/wc/adapter/MenuAdapter.java create mode 100644 app/src/main/java/me/gilo/wc/adapter/MenuAdapter.kt delete mode 100644 app/src/main/java/me/gilo/wc/adapter/OrderAdapter.java create mode 100644 app/src/main/java/me/gilo/wc/adapter/OrderAdapter.kt delete mode 100644 app/src/main/java/me/gilo/wc/adapter/ProductAdapter.java create mode 100644 app/src/main/java/me/gilo/wc/adapter/ProductAdapter.kt delete mode 100644 app/src/main/java/me/gilo/wc/adapter/ProductReviewAdapter.java create mode 100644 app/src/main/java/me/gilo/wc/adapter/ProductReviewAdapter.kt delete mode 100644 app/src/main/java/me/gilo/wc/common/CompletionGenericLiveData.java create mode 100644 app/src/main/java/me/gilo/wc/common/CompletionGenericLiveData.kt delete mode 100644 app/src/main/java/me/gilo/wc/di/ActivitiesModule.java create mode 100644 app/src/main/java/me/gilo/wc/di/ActivitiesModule.kt delete mode 100644 app/src/main/java/me/gilo/wc/di/AppComponent.java create mode 100644 app/src/main/java/me/gilo/wc/di/AppComponent.kt delete mode 100644 app/src/main/java/me/gilo/wc/di/AppModule.java create mode 100644 app/src/main/java/me/gilo/wc/di/AppModule.kt delete mode 100644 app/src/main/java/me/gilo/wc/di/FirebaseModule.java create mode 100644 app/src/main/java/me/gilo/wc/di/FirebaseModule.kt delete mode 100644 app/src/main/java/me/gilo/wc/di/ViewModelModule.java create mode 100644 app/src/main/java/me/gilo/wc/di/ViewModelModule.kt delete mode 100644 app/src/main/java/me/gilo/wc/repo/CartRepository.java create mode 100644 app/src/main/java/me/gilo/wc/repo/CartRepository.kt delete mode 100644 app/src/main/java/me/gilo/wc/repo/CategoryRepository.java create mode 100644 app/src/main/java/me/gilo/wc/repo/CategoryRepository.kt delete mode 100644 app/src/main/java/me/gilo/wc/repo/CustomerRepository.java create mode 100644 app/src/main/java/me/gilo/wc/repo/CustomerRepository.kt delete mode 100644 app/src/main/java/me/gilo/wc/repo/FirebaseRepository.java create mode 100644 app/src/main/java/me/gilo/wc/repo/FirebaseRepository.kt delete mode 100644 woodroid/src/main/java/me/gilo/woodroid/repo/CartRepository.java create mode 100644 woodroid/src/main/java/me/gilo/woodroid/repo/CartRepository.kt delete mode 100644 woodroid/src/main/java/me/gilo/woodroid/utils/Converter.java create mode 100644 woodroid/src/main/java/me/gilo/woodroid/utils/Converter.kt diff --git a/app/build.gradle b/app/build.gradle index f1bd7c5..21e5f1b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,8 @@ apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'kotlin-kapt' + android { compileSdkVersion 28 defaultConfig { @@ -43,7 +45,10 @@ android { ext { arch_version = '1.1.1' support_lib_version = '28.0.0' - dagger_version = '2.14.1' + dagger_version = '2.15' +} +kapt { + generateStubs = true } @@ -91,8 +96,8 @@ dependencies { implementation "com.google.dagger:dagger:$dagger_version" implementation "com.google.dagger:dagger-android:$dagger_version" implementation "com.google.dagger:dagger-android-support:$dagger_version" - annotationProcessor "com.google.dagger:dagger-android-processor:$dagger_version" - annotationProcessor "com.google.dagger:dagger-compiler:$dagger_version" + kapt "com.google.dagger:dagger-android-processor:$dagger_version" + kapt "com.google.dagger:dagger-compiler:$dagger_version" implementation 'com.squareup.retrofit2:retrofit:2.3.0' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5599d14..fd686bd 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,5 +1,6 @@ @@ -12,7 +13,8 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme" - android:usesCleartextTraffic="true"> + android:usesCleartextTraffic="true" + tools:ignore="GoogleAppIndexingWarning"> applicationInjector() { - return DaggerAppComponent.create(); - } -} diff --git a/app/src/main/java/me/gilo/wc/WcApp.kt b/app/src/main/java/me/gilo/wc/WcApp.kt new file mode 100644 index 0000000..d477448 --- /dev/null +++ b/app/src/main/java/me/gilo/wc/WcApp.kt @@ -0,0 +1,35 @@ +package me.gilo.wc + +import android.app.Application +import dagger.android.AndroidInjector +import dagger.android.DaggerApplication +import io.github.inflationx.calligraphy3.CalligraphyConfig +import io.github.inflationx.calligraphy3.CalligraphyInterceptor +import io.github.inflationx.viewpump.ViewPump +import me.gilo.wc.di.DaggerAppComponent + +class WcApp : DaggerApplication() { + + override fun onCreate() { + super.onCreate() + + ViewPump.init( + ViewPump.builder() + .addInterceptor( + CalligraphyInterceptor( + CalligraphyConfig.Builder() + .setDefaultFontPath("fonts/GT-America-Regular.otf") + .setFontAttrId(R.attr.fontPath) + .build() + ) + ) + .build() + ) + + + } + + override fun applicationInjector(): AndroidInjector { + return DaggerAppComponent.create() + } +} diff --git a/app/src/main/java/me/gilo/wc/adapter/CartAdapter.java b/app/src/main/java/me/gilo/wc/adapter/CartAdapter.java deleted file mode 100644 index ace6196..0000000 --- a/app/src/main/java/me/gilo/wc/adapter/CartAdapter.java +++ /dev/null @@ -1,37 +0,0 @@ -package me.gilo.wc.adapter; - -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.ViewGroup; -import me.gilo.wc.R; -import me.gilo.wc.adapter.viewholder.CartViewHolder; -import me.gilo.wc.adapter.viewholder.CategoryViewHolder; -import me.gilo.wc.models.CartLineItem; -import me.gilo.woodroid.models.CartItem; -import me.gilo.woodroid.models.Category; - -import java.util.List; - -public class CartAdapter extends RecyclerView.Adapter { - private List cartLineItems; - - public CartAdapter(List cartLineItems) { - this.cartLineItems = cartLineItems; - } - - @Override - public CartViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - return new CartViewHolder(parent.getContext(), LayoutInflater.from(parent.getContext()).inflate(R.layout.single_cart_item, parent, false)); - } - - @Override - public void onBindViewHolder(CartViewHolder holder, int position) { - holder.renderView(cartLineItems.get(position)); - } - - - @Override - public int getItemCount() { - return cartLineItems.size() == 0 ? 0 : cartLineItems.size(); - } -} diff --git a/app/src/main/java/me/gilo/wc/adapter/CartAdapter.kt b/app/src/main/java/me/gilo/wc/adapter/CartAdapter.kt new file mode 100644 index 0000000..df7330f --- /dev/null +++ b/app/src/main/java/me/gilo/wc/adapter/CartAdapter.kt @@ -0,0 +1,30 @@ +package me.gilo.wc.adapter + +import android.support.v7.widget.RecyclerView +import android.view.LayoutInflater +import android.view.ViewGroup +import me.gilo.wc.R +import me.gilo.wc.adapter.viewholder.CartViewHolder +import me.gilo.wc.adapter.viewholder.CategoryViewHolder +import me.gilo.wc.models.CartLineItem +import me.gilo.woodroid.models.CartItem +import me.gilo.woodroid.models.Category + +class CartAdapter(private val cartLineItems: List) : RecyclerView.Adapter() { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CartViewHolder { + return CartViewHolder( + parent.context, + LayoutInflater.from(parent.context).inflate(R.layout.single_cart_item, parent, false) + ) + } + + override fun onBindViewHolder(holder: CartViewHolder, position: Int) { + holder.renderView(cartLineItems[position]) + } + + + override fun getItemCount(): Int { + return if (cartLineItems.isEmpty()) 0 else cartLineItems.size + } +} diff --git a/app/src/main/java/me/gilo/wc/adapter/CategoryAdapter.java b/app/src/main/java/me/gilo/wc/adapter/CategoryAdapter.java deleted file mode 100644 index 8b99234..0000000 --- a/app/src/main/java/me/gilo/wc/adapter/CategoryAdapter.java +++ /dev/null @@ -1,34 +0,0 @@ -package me.gilo.wc.adapter; - -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.ViewGroup; -import me.gilo.wc.R; -import me.gilo.wc.adapter.viewholder.CategoryViewHolder; -import me.gilo.woodroid.models.Category; - -import java.util.List; - -public class CategoryAdapter extends RecyclerView.Adapter { - private List categories; - - public CategoryAdapter(List categories) { - this.categories = categories; - } - - @Override - public CategoryViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - return new CategoryViewHolder(parent.getContext(), LayoutInflater.from(parent.getContext()).inflate(R.layout.single_category_item, parent, false)); - } - - @Override - public void onBindViewHolder(CategoryViewHolder holder, int position) { - holder.renderView(categories.get(position)); - } - - - @Override - public int getItemCount() { - return categories.size() == 0 ? 0 : categories.size(); - } -} diff --git a/app/src/main/java/me/gilo/wc/adapter/CategoryAdapter.kt b/app/src/main/java/me/gilo/wc/adapter/CategoryAdapter.kt new file mode 100644 index 0000000..22152d0 --- /dev/null +++ b/app/src/main/java/me/gilo/wc/adapter/CategoryAdapter.kt @@ -0,0 +1,27 @@ +package me.gilo.wc.adapter + +import android.support.v7.widget.RecyclerView +import android.view.LayoutInflater +import android.view.ViewGroup +import me.gilo.wc.R +import me.gilo.wc.adapter.viewholder.CategoryViewHolder +import me.gilo.woodroid.models.Category + +class CategoryAdapter(private val categories: List) : RecyclerView.Adapter() { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CategoryViewHolder { + return CategoryViewHolder( + parent.context, + LayoutInflater.from(parent.context).inflate(R.layout.single_category_item, parent, false) + ) + } + + override fun onBindViewHolder(holder: CategoryViewHolder, position: Int) { + holder.renderView(categories[position]) + } + + + override fun getItemCount(): Int { + return if (categories.isEmpty()) 0 else categories.size + } +} diff --git a/app/src/main/java/me/gilo/wc/adapter/CouponAdapter.java b/app/src/main/java/me/gilo/wc/adapter/CouponAdapter.java deleted file mode 100644 index 33e3f5f..0000000 --- a/app/src/main/java/me/gilo/wc/adapter/CouponAdapter.java +++ /dev/null @@ -1,34 +0,0 @@ -package me.gilo.wc.adapter; - -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.ViewGroup; -import me.gilo.wc.R; -import me.gilo.wc.adapter.viewholder.CouponViewHolder; -import me.gilo.woodroid.models.Coupon; - -import java.util.List; - -public class CouponAdapter extends RecyclerView.Adapter { - private List coupons; - - public CouponAdapter(List coupons) { - this.coupons = coupons; - } - - @Override - public CouponViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - return new CouponViewHolder(parent.getContext(), LayoutInflater.from(parent.getContext()).inflate(R.layout.single_coupon_item, parent, false)); - } - - @Override - public void onBindViewHolder(CouponViewHolder holder, int position) { - holder.renderView(coupons.get(position)); - } - - - @Override - public int getItemCount() { - return coupons.size() == 0 ? 0 : coupons.size(); - } -} diff --git a/app/src/main/java/me/gilo/wc/adapter/CouponAdapter.kt b/app/src/main/java/me/gilo/wc/adapter/CouponAdapter.kt new file mode 100644 index 0000000..1004a28 --- /dev/null +++ b/app/src/main/java/me/gilo/wc/adapter/CouponAdapter.kt @@ -0,0 +1,27 @@ +package me.gilo.wc.adapter + +import android.support.v7.widget.RecyclerView +import android.view.LayoutInflater +import android.view.ViewGroup +import me.gilo.wc.R +import me.gilo.wc.adapter.viewholder.CouponViewHolder +import me.gilo.woodroid.models.Coupon + +class CouponAdapter(private val coupons: List) : RecyclerView.Adapter() { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CouponViewHolder { + return CouponViewHolder( + parent.context, + LayoutInflater.from(parent.context).inflate(R.layout.single_coupon_item, parent, false) + ) + } + + override fun onBindViewHolder(holder: CouponViewHolder, position: Int) { + holder.renderView(coupons[position]) + } + + + override fun getItemCount(): Int { + return if (coupons.size == 0) 0 else coupons.size + } +} diff --git a/app/src/main/java/me/gilo/wc/adapter/HomeProductAdapter.java b/app/src/main/java/me/gilo/wc/adapter/HomeProductAdapter.java deleted file mode 100644 index 233463f..0000000 --- a/app/src/main/java/me/gilo/wc/adapter/HomeProductAdapter.java +++ /dev/null @@ -1,34 +0,0 @@ -package me.gilo.wc.adapter; - -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.ViewGroup; -import me.gilo.wc.R; -import me.gilo.wc.adapter.viewholder.ProductViewHolder; -import me.gilo.woodroid.models.Product; - -import java.util.List; - -public class HomeProductAdapter extends RecyclerView.Adapter { - private List products; - - public HomeProductAdapter(List products) { - this.products = products; - } - - @Override - public ProductViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - return new ProductViewHolder(parent.getContext(), LayoutInflater.from(parent.getContext()).inflate(R.layout.single_home_product_item, parent, false)); - } - - @Override - public void onBindViewHolder(ProductViewHolder holder, int position) { - holder.renderView(products.get(position)); - } - - - @Override - public int getItemCount() { - return products.size() == 0 ? 0 : products.size(); - } -} diff --git a/app/src/main/java/me/gilo/wc/adapter/HomeProductAdapter.kt b/app/src/main/java/me/gilo/wc/adapter/HomeProductAdapter.kt new file mode 100644 index 0000000..eeea87d --- /dev/null +++ b/app/src/main/java/me/gilo/wc/adapter/HomeProductAdapter.kt @@ -0,0 +1,27 @@ +package me.gilo.wc.adapter + +import android.support.v7.widget.RecyclerView +import android.view.LayoutInflater +import android.view.ViewGroup +import me.gilo.wc.R +import me.gilo.wc.adapter.viewholder.ProductViewHolder +import me.gilo.woodroid.models.Product + +class HomeProductAdapter(private val products: List) : RecyclerView.Adapter() { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ProductViewHolder { + return ProductViewHolder( + parent.context, + LayoutInflater.from(parent.context).inflate(R.layout.single_home_product_item, parent, false) + ) + } + + override fun onBindViewHolder(holder: ProductViewHolder, position: Int) { + holder.renderView(products[position]) + } + + + override fun getItemCount(): Int { + return if (products.isEmpty()) 0 else products.size + } +} diff --git a/app/src/main/java/me/gilo/wc/adapter/ListAdapter.java b/app/src/main/java/me/gilo/wc/adapter/ListAdapter.java deleted file mode 100644 index d2c72de..0000000 --- a/app/src/main/java/me/gilo/wc/adapter/ListAdapter.java +++ /dev/null @@ -1,34 +0,0 @@ -package me.gilo.wc.adapter; - -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.ViewGroup; -import me.gilo.wc.R; -import me.gilo.wc.adapter.viewholder.ProductViewHolder; -import me.gilo.woodroid.models.Product; - -import java.util.List; - -public class ListAdapter extends RecyclerView.Adapter { - private List products; - - public ListAdapter(List products) { - this.products = products; - } - - @Override - public ProductViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - return new ProductViewHolder(parent.getContext(), LayoutInflater.from(parent.getContext()).inflate(R.layout.single_product_item, parent, false)); - } - - @Override - public void onBindViewHolder(ProductViewHolder holder, int position) { - holder.renderView(products.get(position)); - } - - - @Override - public int getItemCount() { - return products.size() == 0 ? 0 : products.size(); - } -} diff --git a/app/src/main/java/me/gilo/wc/adapter/ListAdapter.kt b/app/src/main/java/me/gilo/wc/adapter/ListAdapter.kt new file mode 100644 index 0000000..1047194 --- /dev/null +++ b/app/src/main/java/me/gilo/wc/adapter/ListAdapter.kt @@ -0,0 +1,27 @@ +package me.gilo.wc.adapter + +import android.support.v7.widget.RecyclerView +import android.view.LayoutInflater +import android.view.ViewGroup +import me.gilo.wc.R +import me.gilo.wc.adapter.viewholder.ProductViewHolder +import me.gilo.woodroid.models.Product + +class ListAdapter(private val products: List) : RecyclerView.Adapter() { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ProductViewHolder { + return ProductViewHolder( + parent.context, + LayoutInflater.from(parent.context).inflate(R.layout.single_product_item, parent, false) + ) + } + + override fun onBindViewHolder(holder: ProductViewHolder, position: Int) { + holder.renderView(products[position]) + } + + + override fun getItemCount(): Int { + return if (products.isEmpty()) 0 else products.size + } +} diff --git a/app/src/main/java/me/gilo/wc/adapter/MenuAdapter.java b/app/src/main/java/me/gilo/wc/adapter/MenuAdapter.java deleted file mode 100644 index 34349db..0000000 --- a/app/src/main/java/me/gilo/wc/adapter/MenuAdapter.java +++ /dev/null @@ -1,36 +0,0 @@ -package me.gilo.wc.adapter; - -import android.app.Activity; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.ViewGroup; -import me.gilo.wc.R; -import me.gilo.wc.adapter.viewholder.MenuViewHolder; - -import java.util.HashMap; -import java.util.List; - -public class MenuAdapter extends RecyclerView.Adapter { - private List titles; - - public MenuAdapter( List titles) { - this.titles = titles; - } - - @Override - public MenuViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - return new MenuViewHolder(parent.getContext(), LayoutInflater.from(parent.getContext()).inflate(R.layout.single_menu_item, parent, false)); - } - - @Override - public void onBindViewHolder(MenuViewHolder holder, int position) { - holder.renderView(titles.get(position)); - } - - - @Override - public int getItemCount() { - return titles.size() == 0 ? 0 : titles.size(); - } -} diff --git a/app/src/main/java/me/gilo/wc/adapter/MenuAdapter.kt b/app/src/main/java/me/gilo/wc/adapter/MenuAdapter.kt new file mode 100644 index 0000000..50f077b --- /dev/null +++ b/app/src/main/java/me/gilo/wc/adapter/MenuAdapter.kt @@ -0,0 +1,30 @@ +package me.gilo.wc.adapter + +import android.app.Activity +import android.support.v7.app.AppCompatActivity +import android.support.v7.widget.RecyclerView +import android.view.LayoutInflater +import android.view.ViewGroup +import me.gilo.wc.R +import me.gilo.wc.adapter.viewholder.MenuViewHolder + +import java.util.HashMap + +class MenuAdapter(private val titles: List) : RecyclerView.Adapter() { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MenuViewHolder { + return MenuViewHolder( + parent.context, + LayoutInflater.from(parent.context).inflate(R.layout.single_menu_item, parent, false) + ) + } + + override fun onBindViewHolder(holder: MenuViewHolder, position: Int) { + holder.renderView(titles[position]) + } + + + override fun getItemCount(): Int { + return if (titles.isEmpty()) 0 else titles.size + } +} diff --git a/app/src/main/java/me/gilo/wc/adapter/OrderAdapter.java b/app/src/main/java/me/gilo/wc/adapter/OrderAdapter.java deleted file mode 100644 index 0c9cd8e..0000000 --- a/app/src/main/java/me/gilo/wc/adapter/OrderAdapter.java +++ /dev/null @@ -1,36 +0,0 @@ -package me.gilo.wc.adapter; - -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.ViewGroup; -import me.gilo.wc.R; -import me.gilo.wc.adapter.viewholder.CategoryViewHolder; -import me.gilo.wc.adapter.viewholder.OrderViewHolder; -import me.gilo.woodroid.models.Category; -import me.gilo.woodroid.models.Order; - -import java.util.List; - -public class OrderAdapter extends RecyclerView.Adapter { - private List orders; - - public OrderAdapter(List orders) { - this.orders = orders; - } - - @Override - public OrderViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - return new OrderViewHolder(parent.getContext(), LayoutInflater.from(parent.getContext()).inflate(R.layout.single_order_item, parent, false)); - } - - @Override - public void onBindViewHolder(OrderViewHolder holder, int position) { - holder.renderView(orders.get(position)); - } - - - @Override - public int getItemCount() { - return orders.size() == 0 ? 0 : orders.size(); - } -} diff --git a/app/src/main/java/me/gilo/wc/adapter/OrderAdapter.kt b/app/src/main/java/me/gilo/wc/adapter/OrderAdapter.kt new file mode 100644 index 0000000..e041665 --- /dev/null +++ b/app/src/main/java/me/gilo/wc/adapter/OrderAdapter.kt @@ -0,0 +1,29 @@ +package me.gilo.wc.adapter + +import android.support.v7.widget.RecyclerView +import android.view.LayoutInflater +import android.view.ViewGroup +import me.gilo.wc.R +import me.gilo.wc.adapter.viewholder.CategoryViewHolder +import me.gilo.wc.adapter.viewholder.OrderViewHolder +import me.gilo.woodroid.models.Category +import me.gilo.woodroid.models.Order + +class OrderAdapter(private val orders: List) : RecyclerView.Adapter() { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): OrderViewHolder { + return OrderViewHolder( + parent.context, + LayoutInflater.from(parent.context).inflate(R.layout.single_order_item, parent, false) + ) + } + + override fun onBindViewHolder(holder: OrderViewHolder, position: Int) { + holder.renderView(orders[position]) + } + + + override fun getItemCount(): Int { + return if (orders.isEmpty()) 0 else orders.size + } +} diff --git a/app/src/main/java/me/gilo/wc/adapter/ProductAdapter.java b/app/src/main/java/me/gilo/wc/adapter/ProductAdapter.java deleted file mode 100644 index e2567a9..0000000 --- a/app/src/main/java/me/gilo/wc/adapter/ProductAdapter.java +++ /dev/null @@ -1,35 +0,0 @@ -package me.gilo.wc.adapter; - -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.ViewGroup; -import me.gilo.wc.R; -import me.gilo.wc.adapter.viewholder.MenuViewHolder; -import me.gilo.wc.adapter.viewholder.ProductViewHolder; -import me.gilo.woodroid.models.Product; - -import java.util.List; - -public class ProductAdapter extends RecyclerView.Adapter { - private List products; - - public ProductAdapter(List products) { - this.products = products; - } - - @Override - public ProductViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - return new ProductViewHolder(parent.getContext(), LayoutInflater.from(parent.getContext()).inflate(R.layout.single_product_item, parent, false)); - } - - @Override - public void onBindViewHolder(ProductViewHolder holder, int position) { - holder.renderView(products.get(position)); - } - - - @Override - public int getItemCount() { - return products.size() == 0 ? 0 : products.size(); - } -} diff --git a/app/src/main/java/me/gilo/wc/adapter/ProductAdapter.kt b/app/src/main/java/me/gilo/wc/adapter/ProductAdapter.kt new file mode 100644 index 0000000..20b0887 --- /dev/null +++ b/app/src/main/java/me/gilo/wc/adapter/ProductAdapter.kt @@ -0,0 +1,28 @@ +package me.gilo.wc.adapter + +import android.support.v7.widget.RecyclerView +import android.view.LayoutInflater +import android.view.ViewGroup +import me.gilo.wc.R +import me.gilo.wc.adapter.viewholder.MenuViewHolder +import me.gilo.wc.adapter.viewholder.ProductViewHolder +import me.gilo.woodroid.models.Product + +class ProductAdapter(private val products: List) : RecyclerView.Adapter() { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ProductViewHolder { + return ProductViewHolder( + parent.context, + LayoutInflater.from(parent.context).inflate(R.layout.single_product_item, parent, false) + ) + } + + override fun onBindViewHolder(holder: ProductViewHolder, position: Int) { + holder.renderView(products[position]) + } + + + override fun getItemCount(): Int { + return if (products.isEmpty()) 0 else products.size + } +} diff --git a/app/src/main/java/me/gilo/wc/adapter/ProductReviewAdapter.java b/app/src/main/java/me/gilo/wc/adapter/ProductReviewAdapter.java deleted file mode 100644 index 68a0abd..0000000 --- a/app/src/main/java/me/gilo/wc/adapter/ProductReviewAdapter.java +++ /dev/null @@ -1,36 +0,0 @@ -package me.gilo.wc.adapter; - -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.ViewGroup; -import me.gilo.wc.R; -import me.gilo.wc.adapter.viewholder.ProductReviewViewHolder; -import me.gilo.wc.adapter.viewholder.ProductViewHolder; -import me.gilo.woodroid.models.Product; -import me.gilo.woodroid.models.ProductReview; - -import java.util.List; - -public class ProductReviewAdapter extends RecyclerView.Adapter { - private List reviews; - - public ProductReviewAdapter(List reviews) { - this.reviews = reviews; - } - - @Override - public ProductReviewViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - return new ProductReviewViewHolder(parent.getContext(), LayoutInflater.from(parent.getContext()).inflate(R.layout.single_product_review, parent, false)); - } - - @Override - public void onBindViewHolder(ProductReviewViewHolder holder, int position) { - holder.renderView(reviews.get(position)); - } - - - @Override - public int getItemCount() { - return reviews.size() == 0 ? 0 : reviews.size(); - } -} diff --git a/app/src/main/java/me/gilo/wc/adapter/ProductReviewAdapter.kt b/app/src/main/java/me/gilo/wc/adapter/ProductReviewAdapter.kt new file mode 100644 index 0000000..f76fcd9 --- /dev/null +++ b/app/src/main/java/me/gilo/wc/adapter/ProductReviewAdapter.kt @@ -0,0 +1,29 @@ +package me.gilo.wc.adapter + +import android.support.v7.widget.RecyclerView +import android.view.LayoutInflater +import android.view.ViewGroup +import me.gilo.wc.R +import me.gilo.wc.adapter.viewholder.ProductReviewViewHolder +import me.gilo.wc.adapter.viewholder.ProductViewHolder +import me.gilo.woodroid.models.Product +import me.gilo.woodroid.models.ProductReview + +class ProductReviewAdapter(private val reviews: List) : RecyclerView.Adapter() { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ProductReviewViewHolder { + return ProductReviewViewHolder( + parent.context, + LayoutInflater.from(parent.context).inflate(R.layout.single_product_review, parent, false) + ) + } + + override fun onBindViewHolder(holder: ProductReviewViewHolder, position: Int) { + holder.renderView(reviews[position]) + } + + + override fun getItemCount(): Int { + return if (reviews.isEmpty()) 0 else reviews.size + } +} diff --git a/app/src/main/java/me/gilo/wc/common/CompletionGenericLiveData.java b/app/src/main/java/me/gilo/wc/common/CompletionGenericLiveData.java deleted file mode 100644 index b88a466..0000000 --- a/app/src/main/java/me/gilo/wc/common/CompletionGenericLiveData.java +++ /dev/null @@ -1,25 +0,0 @@ -package me.gilo.wc.common; - -import android.arch.lifecycle.LiveData; -import android.support.annotation.NonNull; -import com.google.android.gms.tasks.OnCompleteListener; -import com.google.android.gms.tasks.Task; - - -public final class CompletionGenericLiveData extends LiveData> implements OnCompleteListener { - - - public CompletionGenericLiveData() { - setValue(new Resource<>(Status.LOADING)); - } - - @Override - public final void onComplete(@NonNull Task task) { - if (task.isSuccessful()) { - setValue(new Resource(task.getResult())); - } else { - setValue(new Resource<>(task.getException())); - } - } -} - diff --git a/app/src/main/java/me/gilo/wc/common/CompletionGenericLiveData.kt b/app/src/main/java/me/gilo/wc/common/CompletionGenericLiveData.kt new file mode 100644 index 0000000..0857976 --- /dev/null +++ b/app/src/main/java/me/gilo/wc/common/CompletionGenericLiveData.kt @@ -0,0 +1,21 @@ +package me.gilo.wc.common + +import android.arch.lifecycle.LiveData +import com.google.android.gms.tasks.OnCompleteListener +import com.google.android.gms.tasks.Task + + +class CompletionGenericLiveData : LiveData>(), OnCompleteListener { + init { + value = Resource(Status.LOADING) + } + + override fun onComplete(task: Task) { + if (task.isSuccessful) { + setValue(Resource(task.result!!)) + } else { + setValue(Resource(task.exception!!)) + } + } +} + diff --git a/app/src/main/java/me/gilo/wc/di/ActivitiesModule.java b/app/src/main/java/me/gilo/wc/di/ActivitiesModule.java deleted file mode 100644 index b91ca48..0000000 --- a/app/src/main/java/me/gilo/wc/di/ActivitiesModule.java +++ /dev/null @@ -1,66 +0,0 @@ -package me.gilo.wc.di; - -import dagger.Module; -import dagger.android.ContributesAndroidInjector; -import me.gilo.raison.ui.user.onboarding.SignInActivity; -import me.gilo.raison.ui.user.onboarding.SignUpActivity; -import me.gilo.wc.MainActivity; -import me.gilo.wc.ui.WooDroidActivity; -import me.gilo.wc.ui.customer.BasicCustomerDetailsActivity; -import me.gilo.wc.ui.customer.BillingAddressActivity; -import me.gilo.wc.ui.customer.ProfileActivity; -import me.gilo.wc.ui.customer.ShippingAddressActivity; -import me.gilo.wc.ui.home.HomeActivity; -import me.gilo.wc.ui.onboarding.AnonymousSignInActivity; -import me.gilo.wc.ui.order.MyOrdersActivity; -import me.gilo.wc.ui.order.OrderActivity; -import me.gilo.wc.ui.product.CartActivity; -import me.gilo.wc.ui.product.ProductActivity; -import me.gilo.wc.ui.product.ShopActivity; - -@Module -abstract class ActivitiesModule { - - @ContributesAndroidInjector - abstract MainActivity contributesMainActivity(); - - @ContributesAndroidInjector - abstract ShopActivity contributesShopActivity(); - - @ContributesAndroidInjector - abstract ProductActivity contributesProductActivity(); - - @ContributesAndroidInjector - abstract HomeActivity contributesHomeActivity(); - - @ContributesAndroidInjector - abstract SignInActivity contributesSignInActivity(); - - @ContributesAndroidInjector - abstract SignUpActivity contributesSignUpActivity(); - - @ContributesAndroidInjector - abstract BasicCustomerDetailsActivity contributesBasicCustomerDetailsActivity(); - - @ContributesAndroidInjector - abstract BillingAddressActivity contributesBillingAddressActivity(); - - @ContributesAndroidInjector - abstract ShippingAddressActivity contributesShippingAddressActivity(); - - @ContributesAndroidInjector - abstract CartActivity contributesCartActivity(); - - @ContributesAndroidInjector - abstract ProfileActivity contributesProfileActivity(); - - @ContributesAndroidInjector - abstract AnonymousSignInActivity contributesAnonymousSignInActivity(); - - @ContributesAndroidInjector - abstract MyOrdersActivity contributesMyOrdersActivity(); - - @ContributesAndroidInjector - abstract OrderActivity contributesOrderActivity(); - -} diff --git a/app/src/main/java/me/gilo/wc/di/ActivitiesModule.kt b/app/src/main/java/me/gilo/wc/di/ActivitiesModule.kt new file mode 100644 index 0000000..749e344 --- /dev/null +++ b/app/src/main/java/me/gilo/wc/di/ActivitiesModule.kt @@ -0,0 +1,66 @@ +package me.gilo.wc.di + +import dagger.Module +import dagger.android.ContributesAndroidInjector +import me.gilo.raison.ui.user.onboarding.SignInActivity +import me.gilo.raison.ui.user.onboarding.SignUpActivity +import me.gilo.wc.MainActivity +import me.gilo.wc.ui.WooDroidActivity +import me.gilo.wc.ui.customer.BasicCustomerDetailsActivity +import me.gilo.wc.ui.customer.BillingAddressActivity +import me.gilo.wc.ui.customer.ProfileActivity +import me.gilo.wc.ui.customer.ShippingAddressActivity +import me.gilo.wc.ui.home.HomeActivity +import me.gilo.wc.ui.onboarding.AnonymousSignInActivity +import me.gilo.wc.ui.order.MyOrdersActivity +import me.gilo.wc.ui.order.OrderActivity +import me.gilo.wc.ui.product.CartActivity +import me.gilo.wc.ui.product.ProductActivity +import me.gilo.wc.ui.product.ShopActivity + +@Module +internal abstract class ActivitiesModule { + + @ContributesAndroidInjector + internal abstract fun contributesMainActivity(): MainActivity + + @ContributesAndroidInjector + internal abstract fun contributesShopActivity(): ShopActivity + + @ContributesAndroidInjector + internal abstract fun contributesProductActivity(): ProductActivity + + @ContributesAndroidInjector + internal abstract fun contributesHomeActivity(): HomeActivity + + @ContributesAndroidInjector + internal abstract fun contributesSignInActivity(): SignInActivity + + @ContributesAndroidInjector + internal abstract fun contributesSignUpActivity(): SignUpActivity + + @ContributesAndroidInjector + internal abstract fun contributesBasicCustomerDetailsActivity(): BasicCustomerDetailsActivity + + @ContributesAndroidInjector + internal abstract fun contributesBillingAddressActivity(): BillingAddressActivity + + @ContributesAndroidInjector + internal abstract fun contributesShippingAddressActivity(): ShippingAddressActivity + + @ContributesAndroidInjector + internal abstract fun contributesCartActivity(): CartActivity + + @ContributesAndroidInjector + internal abstract fun contributesProfileActivity(): ProfileActivity + + @ContributesAndroidInjector + internal abstract fun contributesAnonymousSignInActivity(): AnonymousSignInActivity + + @ContributesAndroidInjector + internal abstract fun contributesMyOrdersActivity(): MyOrdersActivity + + @ContributesAndroidInjector + internal abstract fun contributesOrderActivity(): OrderActivity + +} diff --git a/app/src/main/java/me/gilo/wc/di/AppComponent.java b/app/src/main/java/me/gilo/wc/di/AppComponent.java deleted file mode 100644 index dfe2104..0000000 --- a/app/src/main/java/me/gilo/wc/di/AppComponent.java +++ /dev/null @@ -1,25 +0,0 @@ -package me.gilo.wc.di; - - -import dagger.Component; -import dagger.android.AndroidInjector; -import dagger.android.DaggerApplication; -import dagger.android.support.AndroidSupportInjectionModule; -import me.gilo.wc.WcApp; - -import javax.inject.Singleton; - - -@Singleton -@Component(modules = { - AndroidSupportInjectionModule.class, - ViewModelModule.class, - FirebaseModule.class, - ActivitiesModule.class, - AppModule.class -}) -interface AppComponent extends AndroidInjector { - - void inject(WcApp app); - -} diff --git a/app/src/main/java/me/gilo/wc/di/AppComponent.kt b/app/src/main/java/me/gilo/wc/di/AppComponent.kt new file mode 100644 index 0000000..271ebd4 --- /dev/null +++ b/app/src/main/java/me/gilo/wc/di/AppComponent.kt @@ -0,0 +1,19 @@ +package me.gilo.wc.di + + +import dagger.Component +import dagger.android.AndroidInjector +import dagger.android.DaggerApplication +import dagger.android.support.AndroidSupportInjectionModule +import me.gilo.wc.WcApp + +import javax.inject.Singleton + + +@Singleton +@Component(modules = [AndroidSupportInjectionModule::class, ViewModelModule::class, FirebaseModule::class, ActivitiesModule::class, AppModule::class]) +internal interface AppComponent : AndroidInjector { + + fun inject(app: WcApp) + +} diff --git a/app/src/main/java/me/gilo/wc/di/AppModule.java b/app/src/main/java/me/gilo/wc/di/AppModule.java deleted file mode 100644 index e30c104..0000000 --- a/app/src/main/java/me/gilo/wc/di/AppModule.java +++ /dev/null @@ -1,39 +0,0 @@ -package me.gilo.wc.di; - -import dagger.Module; -import dagger.Provides; -import me.gilo.wc.Config; -import me.gilo.wc.WcApp; -import me.gilo.woodroid.Woocommerce; - -import javax.inject.Singleton; - -@Module -public class AppModule { - - WcApp app; - - void AppModule(WcApp application) { - app = application; - } - - @Provides - @Singleton - WcApp providesApplication() { - return app; - } - - @Provides - @Singleton - Woocommerce providesWoocommerce() { - Woocommerce woocommerce = Woocommerce.Builder() - .setSiteUrl(Config.siteUrl) - .setApiVersion(Woocommerce.API_V3) - .setConsumerKey(Config.consumerKey) - .setConsumerSecret(Config.consumerSecret) - .build(); - - return woocommerce; - } - -} diff --git a/app/src/main/java/me/gilo/wc/di/AppModule.kt b/app/src/main/java/me/gilo/wc/di/AppModule.kt new file mode 100644 index 0000000..e519053 --- /dev/null +++ b/app/src/main/java/me/gilo/wc/di/AppModule.kt @@ -0,0 +1,38 @@ +package me.gilo.wc.di + +import dagger.Module +import dagger.Provides +import me.gilo.wc.Config +import me.gilo.wc.WcApp +import me.gilo.woodroid.Woocommerce + +import javax.inject.Singleton + +@Module +class AppModule { + + internal var app: WcApp? = null + + internal fun AppModule(application: WcApp) { + app = application + } + + @Provides + @Singleton + internal fun providesApplication(): WcApp { + return app!! + } + + @Provides + @Singleton + internal fun providesWoocommerce(): Woocommerce { + + return Woocommerce.Builder() + .setSiteUrl(Config.siteUrl) + .setApiVersion(Woocommerce.API_V3) + .setConsumerKey(Config.consumerKey) + .setConsumerSecret(Config.consumerSecret) + .build() + } + +} diff --git a/app/src/main/java/me/gilo/wc/di/FirebaseModule.java b/app/src/main/java/me/gilo/wc/di/FirebaseModule.java deleted file mode 100644 index affa931..0000000 --- a/app/src/main/java/me/gilo/wc/di/FirebaseModule.java +++ /dev/null @@ -1,46 +0,0 @@ -package me.gilo.wc.di; - -import com.google.firebase.firestore.CollectionReference; -import com.google.firebase.firestore.FirebaseFirestore; -import com.google.firebase.storage.FirebaseStorage; -import com.google.firebase.storage.StorageReference; -import dagger.Module; -import dagger.Provides; - -import javax.inject.Named; -import javax.inject.Singleton; - - -@Module -class FirebaseModule { - - @Singleton - @Provides - FirebaseFirestore providesFirestore() { - FirebaseFirestore db = FirebaseFirestore.getInstance(); - return db; - } - - @Singleton - @Provides - @Named("storage") - StorageReference providesStorage() { - return FirebaseStorage.getInstance().getReference(); - } - - @Singleton - @Provides - @Named("users") - CollectionReference providesUsers() { - return getFirestoreInstance().collection("users"); - } - - FirebaseFirestore getFirestoreInstance(){ - FirebaseFirestore db = FirebaseFirestore.getInstance(); - - return db; - } - - - -} diff --git a/app/src/main/java/me/gilo/wc/di/FirebaseModule.kt b/app/src/main/java/me/gilo/wc/di/FirebaseModule.kt new file mode 100644 index 0000000..e4037f3 --- /dev/null +++ b/app/src/main/java/me/gilo/wc/di/FirebaseModule.kt @@ -0,0 +1,41 @@ +package me.gilo.wc.di + +import com.google.firebase.firestore.CollectionReference +import com.google.firebase.firestore.FirebaseFirestore +import com.google.firebase.storage.FirebaseStorage +import com.google.firebase.storage.StorageReference +import dagger.Module +import dagger.Provides + +import javax.inject.Named +import javax.inject.Singleton + + +@Module +internal class FirebaseModule { + + private val firestoreInstance: FirebaseFirestore + get() = FirebaseFirestore.getInstance() + + @Singleton + @Provides + fun providesFirestore(): FirebaseFirestore { + return FirebaseFirestore.getInstance() + } + + @Singleton + @Provides + @Named("storage") + fun providesStorage(): StorageReference { + return FirebaseStorage.getInstance().reference + } + + @Singleton + @Provides + @Named("users") + fun providesUsers(): CollectionReference { + return firestoreInstance.collection("users") + } + + +} diff --git a/app/src/main/java/me/gilo/wc/di/ViewModelModule.java b/app/src/main/java/me/gilo/wc/di/ViewModelModule.java deleted file mode 100644 index 32ec0be..0000000 --- a/app/src/main/java/me/gilo/wc/di/ViewModelModule.java +++ /dev/null @@ -1,62 +0,0 @@ -package me.gilo.wc.di; - -import android.arch.lifecycle.ViewModel; -import android.arch.lifecycle.ViewModelProvider; -import com.google.firebase.firestore.CollectionReference; -import dagger.Binds; -import dagger.Module; -import dagger.Provides; -import dagger.multibindings.IntoMap; -import me.gilo.wc.ui.order.MyOrdersActivity; -import me.gilo.wc.utils.ViewModelFactory; -import me.gilo.wc.viewmodels.*; - -import javax.inject.Named; -import javax.inject.Singleton; - - -@SuppressWarnings("WeakerAccess") -@Module -public abstract class ViewModelModule { - - - @Binds - @IntoMap - @ViewModelKey(UserViewModel.class) - abstract ViewModel bindUserViewModel(UserViewModel viewModel); - - @Binds - @IntoMap - @ViewModelKey(ProductViewModel.class) - abstract ViewModel bindProductViewModel(ProductViewModel viewModel); - - @Binds - @IntoMap - @ViewModelKey(CategoryViewModel.class) - abstract ViewModel bindCategoryViewModel(CategoryViewModel viewModel); - - @Binds - @IntoMap - @ViewModelKey(CustomerViewModel.class) - abstract ViewModel bindCustomerViewModel(CustomerViewModel viewModel); - - @Binds - @IntoMap - @ViewModelKey(CartViewModel.class) - abstract ViewModel bindCartViewModel(CartViewModel viewModel); - - @Binds - @IntoMap - @ViewModelKey(OrderViewModel.class) - abstract ViewModel bindOrderViewModel(OrderViewModel viewModel); - - @Binds - @IntoMap - @ViewModelKey(ReviewViewModel.class) - abstract ViewModel bindReviewViewModel(ReviewViewModel viewModel); - - @Binds - abstract ViewModelProvider.Factory bindViewModelFactory(ViewModelFactory factory); - - -} diff --git a/app/src/main/java/me/gilo/wc/di/ViewModelModule.kt b/app/src/main/java/me/gilo/wc/di/ViewModelModule.kt new file mode 100644 index 0000000..4377015 --- /dev/null +++ b/app/src/main/java/me/gilo/wc/di/ViewModelModule.kt @@ -0,0 +1,61 @@ +package me.gilo.wc.di + +import android.arch.lifecycle.ViewModel +import android.arch.lifecycle.ViewModelProvider +import com.google.firebase.firestore.CollectionReference +import dagger.Binds +import dagger.Module +import dagger.Provides +import dagger.multibindings.IntoMap +import me.gilo.wc.ui.order.MyOrdersActivity +import me.gilo.wc.utils.ViewModelFactory +import me.gilo.wc.viewmodels.* + +import javax.inject.Named +import javax.inject.Singleton + + +@Module +abstract class ViewModelModule { + + + @Binds + @IntoMap + @ViewModelKey(UserViewModel::class) + internal abstract fun bindUserViewModel(viewModel: UserViewModel): ViewModel + + @Binds + @IntoMap + @ViewModelKey(ProductViewModel::class) + internal abstract fun bindProductViewModel(viewModel: ProductViewModel): ViewModel + + @Binds + @IntoMap + @ViewModelKey(CategoryViewModel::class) + internal abstract fun bindCategoryViewModel(viewModel: CategoryViewModel): ViewModel + + @Binds + @IntoMap + @ViewModelKey(CustomerViewModel::class) + internal abstract fun bindCustomerViewModel(viewModel: CustomerViewModel): ViewModel + + @Binds + @IntoMap + @ViewModelKey(CartViewModel::class) + internal abstract fun bindCartViewModel(viewModel: CartViewModel): ViewModel + + @Binds + @IntoMap + @ViewModelKey(OrderViewModel::class) + internal abstract fun bindOrderViewModel(viewModel: OrderViewModel): ViewModel + + @Binds + @IntoMap + @ViewModelKey(ReviewViewModel::class) + internal abstract fun bindReviewViewModel(viewModel: ReviewViewModel): ViewModel + + @Binds + internal abstract fun bindViewModelFactory(factory: ViewModelFactory): ViewModelProvider.Factory + + +} diff --git a/app/src/main/java/me/gilo/wc/repo/CartRepository.java b/app/src/main/java/me/gilo/wc/repo/CartRepository.java deleted file mode 100644 index 439fa77..0000000 --- a/app/src/main/java/me/gilo/wc/repo/CartRepository.java +++ /dev/null @@ -1,113 +0,0 @@ -package me.gilo.wc.repo; - - -import android.arch.lifecycle.Observer; -import android.content.Context; -import android.graphics.Bitmap; -import android.net.Uri; -import android.support.annotation.NonNull; -import android.util.Log; -import com.google.android.gms.tasks.OnCompleteListener; -import com.google.android.gms.tasks.OnSuccessListener; -import com.google.android.gms.tasks.Task; -import com.google.firebase.auth.FirebaseAuth; -import com.google.firebase.firestore.*; -import com.google.firebase.storage.StorageReference; -import com.google.firebase.storage.UploadTask; -import me.gilo.wc.common.CompletionGenericLiveData; -import me.gilo.wc.common.QueryLiveData; -import me.gilo.wc.common.WooLiveData; -import me.gilo.wc.models.CartLineItem; -import me.gilo.wc.utils.AppUtils; -import me.gilo.woodroid.Woocommerce; -import me.gilo.woodroid.models.LineItem; -import me.gilo.woodroid.models.Product; - -import javax.inject.Inject; -import java.io.ByteArrayOutputStream; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -public class CartRepository { - - @Inject - Woocommerce woocommerce; - - private final CollectionReference cart; - - @Inject - public CartRepository() { - this.cart = FirebaseFirestore.getInstance() - .collection("users") - .document(FirebaseAuth.getInstance().getCurrentUser().getUid()) - .collection("cart"); - - } - - public QueryLiveData cart() { - return new QueryLiveData<>(cart, CartLineItem.class); - } - - public CompletionGenericLiveData deleteItem(CartLineItem cartLineItem) { - final CompletionGenericLiveData completion = new CompletionGenericLiveData(); - cart.document(cartLineItem.getId()).delete().addOnCompleteListener(completion); - - return completion; - } - - public CompletionGenericLiveData setQuantity(CartLineItem cartLineItem, int quantity) { - final CompletionGenericLiveData completion = new CompletionGenericLiveData(); - cartLineItem.setQuantity(quantity); - - cart.document(cartLineItem.getId()).set(cartLineItem).addOnCompleteListener(completion); - - return completion; - } - - public CompletionGenericLiveData deleteItems() { - final CompletionGenericLiveData completion = new CompletionGenericLiveData(); - deleteCartItems().addOnCompleteListener(completion); - return completion; - } - - - private Task deleteCartItems() { - return cart.getFirestore().runTransaction(transaction -> { - cart.get().addOnCompleteListener(task -> { - if (task.isSuccessful()) { - for (QueryDocumentSnapshot document : task.getResult()) { - cart.document(document.getId()).delete(); - } - - } else { - } - }); - - return null; - }); - } - - - public CompletionGenericLiveData addToCart(Product product) { - final CompletionGenericLiveData completion = new CompletionGenericLiveData(); - - CartLineItem lineItem = new CartLineItem(); - lineItem.setProductId(product.getId()); - lineItem.setProduct(product); - lineItem.setQuantity(1); - - cart.add(lineItem).addOnCompleteListener(completion); - - return completion; - - } - - public WooLiveData> cart(Context context) { - final WooLiveData> callBack = new WooLiveData(); - woocommerce.CartRepository(context).cart().enqueue(callBack); - - return callBack; - } - -} diff --git a/app/src/main/java/me/gilo/wc/repo/CartRepository.kt b/app/src/main/java/me/gilo/wc/repo/CartRepository.kt new file mode 100644 index 0000000..49f1973 --- /dev/null +++ b/app/src/main/java/me/gilo/wc/repo/CartRepository.kt @@ -0,0 +1,96 @@ +package me.gilo.wc.repo + + +import android.content.Context +import com.google.android.gms.tasks.Task +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.wc.common.CompletionGenericLiveData +import me.gilo.wc.common.QueryLiveData +import me.gilo.wc.common.WooLiveData +import me.gilo.wc.models.CartLineItem +import me.gilo.woodroid.Woocommerce +import me.gilo.woodroid.models.LineItem +import me.gilo.woodroid.models.Product +import javax.inject.Inject + +open class CartRepository @Inject +constructor() { + + @Inject + lateinit var woocommerce: Woocommerce + + + private val cart: CollectionReference = FirebaseFirestore.getInstance() + .collection("users") + .document(FirebaseAuth.getInstance().currentUser!!.uid) + .collection("cart") + + fun cart(): QueryLiveData { + return QueryLiveData(cart, CartLineItem::class.java) + } + + fun deleteItem(cartLineItem: CartLineItem): CompletionGenericLiveData { + val completion = CompletionGenericLiveData() + cart.document(cartLineItem.getId()).delete().addOnCompleteListener(completion) + + return completion + } + + fun setQuantity(cartLineItem: CartLineItem, quantity: Int): CompletionGenericLiveData { + val completion = CompletionGenericLiveData() + cartLineItem.setQuantity(quantity) + + cart.document(cartLineItem.getId()).set(cartLineItem).addOnCompleteListener(completion) + + return completion + } + + fun deleteItems(): CompletionGenericLiveData { + val completion = CompletionGenericLiveData() + deleteCartItems().addOnCompleteListener(completion) + return completion + } + + + private fun deleteCartItems(): Task { + return cart.firestore.runTransaction { + cart.get().addOnCompleteListener { task -> + if (task.isSuccessful) { + for (document in task.result!!) { + cart.document(document.id).delete() + } + + } else { + } + } + + null + } + } + + + fun addToCart(product: Product): CompletionGenericLiveData { + val completion = CompletionGenericLiveData() + + val lineItem = CartLineItem() + lineItem.setProductId(product.id) + lineItem.product = product + lineItem.setQuantity(1) + + cart.add(lineItem).addOnCompleteListener(completion) + + return completion + + } + + fun cart(context: Context): WooLiveData> { + val callBack = WooLiveData>() + woocommerce!!.CartRepository(context).cart().enqueue(callBack) + + return callBack + } + +} diff --git a/app/src/main/java/me/gilo/wc/repo/CategoryRepository.java b/app/src/main/java/me/gilo/wc/repo/CategoryRepository.java deleted file mode 100644 index b598cce..0000000 --- a/app/src/main/java/me/gilo/wc/repo/CategoryRepository.java +++ /dev/null @@ -1,73 +0,0 @@ -package me.gilo.wc.repo; - - -import me.gilo.wc.common.WooLiveData; -import me.gilo.woodroid.Woocommerce; -import me.gilo.woodroid.models.Category; -import me.gilo.woodroid.models.filters.ProductCategoryFilter; - -import javax.inject.Inject; -import java.util.List; - -public class CategoryRepository { - - @Inject - Woocommerce woocommerce; - - @Inject - public CategoryRepository() { - } - - - public WooLiveData create(Category category) { - final WooLiveData callBack = new WooLiveData(); - - woocommerce.CategoryRepository().create(category).enqueue(callBack); - return callBack; - } - - - public WooLiveData category(int id) { - final WooLiveData callBack = new WooLiveData(); - - woocommerce.CategoryRepository().category(id).enqueue(callBack); - return callBack; - } - - public WooLiveData> categories() { - final WooLiveData> callBack = new WooLiveData(); - - woocommerce.CategoryRepository().categories().enqueue(callBack); - return callBack; - } - - public WooLiveData> categories(ProductCategoryFilter productCategoryFilter) { - final WooLiveData> callBack = new WooLiveData(); - - woocommerce.CategoryRepository().categories(productCategoryFilter).enqueue(callBack); - return callBack; - } - - public WooLiveData update(int id, Category category) { - final WooLiveData callBack = new WooLiveData(); - - woocommerce.CategoryRepository().update(id, category).enqueue(callBack); - return callBack; - } - - public WooLiveData delete(int id) { - final WooLiveData callBack = new WooLiveData(); - - woocommerce.CategoryRepository().delete(id).enqueue(callBack); - return callBack; - } - - public WooLiveData delete(int id, boolean force) { - final WooLiveData callBack = new WooLiveData(); - - woocommerce.CategoryRepository().delete(id, force).enqueue(callBack); - return callBack; - } - - -} diff --git a/app/src/main/java/me/gilo/wc/repo/CategoryRepository.kt b/app/src/main/java/me/gilo/wc/repo/CategoryRepository.kt new file mode 100644 index 0000000..d557fc4 --- /dev/null +++ b/app/src/main/java/me/gilo/wc/repo/CategoryRepository.kt @@ -0,0 +1,69 @@ +package me.gilo.wc.repo + + +import me.gilo.wc.common.WooLiveData +import me.gilo.woodroid.Woocommerce +import me.gilo.woodroid.models.Category +import me.gilo.woodroid.models.filters.ProductCategoryFilter + +import javax.inject.Inject + +class CategoryRepository @Inject +constructor() { + + @Inject + lateinit var woocommerce: Woocommerce + + + fun create(category: Category): WooLiveData { + val callBack = WooLiveData() + + woocommerce!!.CategoryRepository().create(category).enqueue(callBack) + return callBack + } + + + fun category(id: Int): WooLiveData { + val callBack = WooLiveData() + + woocommerce!!.CategoryRepository().category(id).enqueue(callBack) + return callBack + } + + fun categories(): WooLiveData> { + val callBack = WooLiveData>() + + woocommerce!!.CategoryRepository().categories().enqueue(callBack) + return callBack + } + + fun categories(productCategoryFilter: ProductCategoryFilter): WooLiveData> { + val callBack = WooLiveData>() + + woocommerce!!.CategoryRepository().categories(productCategoryFilter).enqueue(callBack) + return callBack + } + + fun update(id: Int, category: Category): WooLiveData { + val callBack = WooLiveData() + + woocommerce!!.CategoryRepository().update(id, category).enqueue(callBack) + return callBack + } + + fun delete(id: Int): WooLiveData { + val callBack = WooLiveData() + + woocommerce!!.CategoryRepository().delete(id).enqueue(callBack) + return callBack + } + + fun delete(id: Int, force: Boolean): WooLiveData { + val callBack = WooLiveData() + + woocommerce!!.CategoryRepository().delete(id, force).enqueue(callBack) + return callBack + } + + +} diff --git a/app/src/main/java/me/gilo/wc/repo/CustomerRepository.java b/app/src/main/java/me/gilo/wc/repo/CustomerRepository.java deleted file mode 100644 index f183cb1..0000000 --- a/app/src/main/java/me/gilo/wc/repo/CustomerRepository.java +++ /dev/null @@ -1,83 +0,0 @@ -package me.gilo.wc.repo; - - -import com.google.firebase.auth.FirebaseAuth; -import me.gilo.wc.common.WooLiveData; -import me.gilo.woodroid.Woocommerce; -import me.gilo.woodroid.models.Customer; -import me.gilo.woodroid.models.Customer; -import me.gilo.woodroid.models.filters.CustomerFilter; - -import javax.inject.Inject; -import java.util.List; - -public class CustomerRepository { - - @Inject - Woocommerce woocommerce; - - - @Inject - public CustomerRepository() { - - } - - public WooLiveData create(Customer customer) { - final WooLiveData callBack = new WooLiveData(); - woocommerce.CustomerRepository().create(customer).enqueue(callBack); - return callBack; - } - - public WooLiveData> currentCustomer() { - final WooLiveData> callBack = new WooLiveData(); - CustomerFilter customerFilter = new CustomerFilter(); - customerFilter.setEmail(FirebaseAuth.getInstance().getCurrentUser().getEmail()); - - woocommerce.CustomerRepository().customers(customerFilter).enqueue(callBack); - return callBack; - } - - - public WooLiveData customer(int id) { - final WooLiveData callBack = new WooLiveData(); - woocommerce.CustomerRepository().customer(id).enqueue(callBack); - return callBack; - } - - public WooLiveData> customers() { - final WooLiveData> callBack = new WooLiveData(); - - woocommerce.CustomerRepository().customers().enqueue(callBack); - - return callBack; - } - - public WooLiveData> customers(CustomerFilter customerFilter) { - final WooLiveData> callBack = new WooLiveData(); - woocommerce.CustomerRepository().customers(customerFilter).enqueue(callBack); - return callBack; - } - - public WooLiveData update(int id, Customer customer) { - final WooLiveData callBack = new WooLiveData(); - woocommerce.CustomerRepository().update(id, customer).enqueue(callBack); - - return callBack; - } - - public WooLiveData delete(int id) { - final WooLiveData callBack = new WooLiveData(); - woocommerce.CustomerRepository().delete(id).enqueue(callBack); - - return callBack; - } - - public WooLiveData delete(int id, boolean force) { - final WooLiveData callBack = new WooLiveData(); - woocommerce.CustomerRepository().delete(id, force).enqueue(callBack); - - return callBack; - } - - -} diff --git a/app/src/main/java/me/gilo/wc/repo/CustomerRepository.kt b/app/src/main/java/me/gilo/wc/repo/CustomerRepository.kt new file mode 100644 index 0000000..578ccb8 --- /dev/null +++ b/app/src/main/java/me/gilo/wc/repo/CustomerRepository.kt @@ -0,0 +1,76 @@ +package me.gilo.wc.repo + + +import com.google.firebase.auth.FirebaseAuth +import me.gilo.wc.common.WooLiveData +import me.gilo.woodroid.Woocommerce +import me.gilo.woodroid.models.Customer +import me.gilo.woodroid.models.filters.CustomerFilter + +import javax.inject.Inject + +class CustomerRepository @Inject +constructor() { + + @Inject + lateinit var woocommerce: Woocommerce + + fun create(customer: Customer): WooLiveData { + val callBack = WooLiveData() + woocommerce!!.CustomerRepository().create(customer).enqueue(callBack) + return callBack + } + + fun currentCustomer(): WooLiveData> { + val callBack = WooLiveData>() + val customerFilter = CustomerFilter() + customerFilter.email = FirebaseAuth.getInstance().currentUser!!.email + + woocommerce!!.CustomerRepository().customers(customerFilter).enqueue(callBack) + return callBack + } + + + fun customer(id: Int): WooLiveData { + val callBack = WooLiveData() + woocommerce!!.CustomerRepository().customer(id).enqueue(callBack) + return callBack + } + + fun customers(): WooLiveData> { + val callBack = WooLiveData>() + + woocommerce!!.CustomerRepository().customers().enqueue(callBack) + + return callBack + } + + fun customers(customerFilter: CustomerFilter): WooLiveData> { + val callBack = WooLiveData>() + woocommerce!!.CustomerRepository().customers(customerFilter).enqueue(callBack) + return callBack + } + + fun update(id: Int, customer: Customer): WooLiveData { + val callBack = WooLiveData() + woocommerce!!.CustomerRepository().update(id, customer).enqueue(callBack) + + return callBack + } + + fun delete(id: Int): WooLiveData { + val callBack = WooLiveData() + woocommerce!!.CustomerRepository().delete(id).enqueue(callBack) + + return callBack + } + + fun delete(id: Int, force: Boolean): WooLiveData { + val callBack = WooLiveData() + woocommerce!!.CustomerRepository().delete(id, force).enqueue(callBack) + + return callBack + } + + +} diff --git a/app/src/main/java/me/gilo/wc/repo/FirebaseRepository.java b/app/src/main/java/me/gilo/wc/repo/FirebaseRepository.java deleted file mode 100644 index b99e7ec..0000000 --- a/app/src/main/java/me/gilo/wc/repo/FirebaseRepository.java +++ /dev/null @@ -1,111 +0,0 @@ -package me.gilo.wc.repo; - -import android.support.annotation.NonNull; -import android.util.Log; -import com.google.android.gms.tasks.Continuation; -import com.google.android.gms.tasks.OnFailureListener; -import com.google.android.gms.tasks.Task; -import com.google.firebase.firestore.CollectionReference; -import com.google.firebase.firestore.DocumentReference; -import com.google.firebase.firestore.DocumentSnapshot; -import com.google.firebase.firestore.FirebaseFirestore; -import me.gilo.wc.models.Identifiable; -import me.gilo.wc.models.Repository; - - -/** - * Manages data access for Firebase - */ -public class FirebaseRepository> implements Repository { - - private static final String TAG = "FirebaseRepository"; - - private final Class entityClass; - - private final CollectionReference collectionReference; - private final String collectionName; - - - public FirebaseRepository(Class entityClass, String collectionName) { - this.collectionName = collectionName; - this.entityClass = entityClass; - - FirebaseFirestore db = FirebaseFirestore.getInstance(); - this.collectionReference = db.collection(this.collectionName); - } - - @Override - public Task exists(final String documentName) { - DocumentReference documentReference = collectionReference.document(documentName); - Log.i(TAG, "Checking existence of '" + documentName + "' in '" + collectionName + "'."); - - return documentReference.get().continueWith(new Continuation() { - @Override - public Boolean then(@NonNull Task task) { - Log.d(TAG,"Checking if '" + documentName + "' exists in '" + collectionName +"'."); - return task.getResult().exists(); - } - }); - } - - @Override - public Task get(String id) { - final String documentName = id; - DocumentReference documentReference = collectionReference.document(documentName); - Log.i(TAG, "Getting '" + documentName + "' in '" + collectionName + "'."); - - return documentReference.get().continueWith(new Continuation() { - @Override - public TEntity then(@NonNull Task task) throws Exception { - DocumentSnapshot documentSnapshot = task.getResult(); - if (documentSnapshot.exists()) { - return documentSnapshot.toObject(entityClass); - } else { - Log.d(TAG, "Document '" + documentName + "' does not exist in '" + collectionName + "'."); - return entityClass.newInstance(); - } - } - }); - } - - @Override - public Task create(TEntity entity) { - final String documentName = entity.getEntityKey(); - DocumentReference documentReference = collectionReference.document(documentName); - Log.i(TAG, "Creating '" + documentName + "' in '" + collectionName + "'."); - return documentReference.set(entity).addOnFailureListener(new OnFailureListener() { - @Override - public void onFailure(@NonNull Exception e) { - Log.d(TAG, "There was an error creating '" + documentName + "' in '" + collectionName + "'!", e); - } - }); - } - - @Override - public Task update(TEntity entity) { - final String documentName = entity.getEntityKey(); - DocumentReference documentReference = collectionReference.document(documentName); - Log.i(TAG, "Updating '" + documentName + "' in '" + collectionName + "'."); - - return documentReference.set(entity).addOnFailureListener(new OnFailureListener() { - @Override - public void onFailure(@NonNull Exception e) { - Log.d(TAG, "There was an error updating '" + documentName + "' in '" + collectionName + "'.", e); - } - }); - } - - @Override - public Task delete(final String documentName) { - DocumentReference documentReference = collectionReference.document(documentName); - Log.i(TAG, "Deleting '" + documentName + "' in '" + collectionName + "'."); - - return documentReference.delete().addOnFailureListener(new OnFailureListener() { - @Override - public void onFailure(@NonNull Exception e) { - Log.d(TAG, "There was an error deleting '" + documentName + "' in '" + collectionName + "'.", e); - } - }); - } - -} \ No newline at end of file diff --git a/app/src/main/java/me/gilo/wc/repo/FirebaseRepository.kt b/app/src/main/java/me/gilo/wc/repo/FirebaseRepository.kt new file mode 100644 index 0000000..f53ea16 --- /dev/null +++ b/app/src/main/java/me/gilo/wc/repo/FirebaseRepository.kt @@ -0,0 +1,102 @@ +package me.gilo.wc.repo + +import android.util.Log +import com.google.android.gms.tasks.Continuation +import com.google.android.gms.tasks.OnFailureListener +import com.google.android.gms.tasks.Task +import com.google.firebase.firestore.CollectionReference +import com.google.firebase.firestore.DocumentReference +import com.google.firebase.firestore.DocumentSnapshot +import com.google.firebase.firestore.FirebaseFirestore +import me.gilo.wc.models.Identifiable +import me.gilo.wc.models.Repository + + +/** + * Manages data access for Firebase + */ +open class FirebaseRepository>( + private val entityClass: Class, + private val collectionName: String +) : Repository { + + private val collectionReference: CollectionReference + + + init { + + val db = FirebaseFirestore.getInstance() + this.collectionReference = db.collection(this.collectionName) + } + + override fun exists(documentName: String): Task { + val documentReference = collectionReference.document(documentName) + Log.i(TAG, "Checking existence of '$documentName' in '$collectionName'.") + + return documentReference.get().continueWith { task -> + Log.d(TAG, "Checking if '$documentName' exists in '$collectionName'.") + task.result!!.exists() + } + } + + override fun get(id: String): Task { + val documentReference = collectionReference.document(id) + Log.i(TAG, "Getting '$id' in '$collectionName'.") + + return documentReference.get().continueWith { task -> + val documentSnapshot = task.result + if (documentSnapshot!!.exists()) { + documentSnapshot.toObject(entityClass) + } else { + Log.d(TAG, "Document '$id' does not exist in '$collectionName'.") + entityClass.newInstance() + } + } + } + + override fun create(entity: TEntity): Task { + val documentName = entity.entityKey + val documentReference = collectionReference.document(documentName) + Log.i(TAG, "Creating '$documentName' in '$collectionName'.") + return documentReference.set(entity).addOnFailureListener { e -> + Log.d( + TAG, + "There was an error creating '$documentName' in '$collectionName'!", + e + ) + } + } + + override fun update(entity: TEntity): Task { + val documentName = entity.entityKey + val documentReference = collectionReference.document(documentName) + Log.i(TAG, "Updating '$documentName' in '$collectionName'.") + + return documentReference.set(entity).addOnFailureListener { e -> + Log.d( + TAG, + "There was an error updating '$documentName' in '$collectionName'.", + e + ) + } + } + + override fun delete(documentName: String): Task { + val documentReference = collectionReference.document(documentName) + Log.i(TAG, "Deleting '$documentName' in '$collectionName'.") + + return documentReference.delete().addOnFailureListener { e -> + Log.d( + TAG, + "There was an error deleting '$documentName' in '$collectionName'.", + e + ) + } + } + + companion object { + + private val TAG = "FirebaseRepository" + } + +} \ No newline at end of file diff --git a/app/src/main/java/me/gilo/wc/ui/BaseActivity.kt b/app/src/main/java/me/gilo/wc/ui/BaseActivity.kt index ead34f6..1cb0912 100644 --- a/app/src/main/java/me/gilo/wc/ui/BaseActivity.kt +++ b/app/src/main/java/me/gilo/wc/ui/BaseActivity.kt @@ -3,6 +3,7 @@ package me.gilo.wc.ui import android.content.Context import android.support.v7.app.AppCompatActivity import io.github.inflationx.viewpump.ViewPumpContextWrapper +import me.gilo.wc.Config import me.gilo.wc.ui.state.ProgressDialogFragment import me.gilo.woodroid.Woocommerce @@ -11,10 +12,10 @@ open class BaseActivity : AppCompatActivity() { private lateinit var progressDialog : ProgressDialogFragment val woocommerce = Woocommerce.Builder() - .setSiteUrl("http://157.230.131.179") + .setSiteUrl(Config.siteUrl) .setApiVersion(Woocommerce.API_V3) - .setConsumerKey("ck_26c61abd7eeff238d87dc56585bf26cb2d1a1ec3") - .setConsumerSecret("cs_062e8e3a7ae0ce08fdebc0c39f8f834d5e87598e") + .setConsumerKey(Config.consumerKey) + .setConsumerSecret(Config.consumerSecret) .build() diff --git a/app/src/main/java/me/gilo/wc/ui/WooDroidActivity.kt b/app/src/main/java/me/gilo/wc/ui/WooDroidActivity.kt index 0a27c2b..e34e221 100644 --- a/app/src/main/java/me/gilo/wc/ui/WooDroidActivity.kt +++ b/app/src/main/java/me/gilo/wc/ui/WooDroidActivity.kt @@ -40,7 +40,6 @@ abstract class WooDroidActivity : BaseActivity() { startActivity(Intent(baseContext, SignInActivity::class.java)) finish() } - cart() } diff --git a/app/src/main/java/me/gilo/wc/ui/onboarding/AnonymousSignInActivity.kt b/app/src/main/java/me/gilo/wc/ui/onboarding/AnonymousSignInActivity.kt index 34cea0e..a14ea7a 100644 --- a/app/src/main/java/me/gilo/wc/ui/onboarding/AnonymousSignInActivity.kt +++ b/app/src/main/java/me/gilo/wc/ui/onboarding/AnonymousSignInActivity.kt @@ -4,28 +4,18 @@ import android.arch.lifecycle.Observer import android.content.Context import android.content.Intent import android.os.Bundle -import android.support.design.widget.Snackbar -import android.support.v7.app.AppCompatActivity import android.widget.Toast import io.github.inflationx.viewpump.ViewPumpContextWrapper import me.gilo.wc.R - -import kotlinx.android.synthetic.main.activity_anonymous_sign_in.* -import kotlinx.android.synthetic.main.content_sign_in.* -import me.gilo.raison.ui.user.onboarding.SignUpActivity -import me.gilo.wc.common.BaseActivity import me.gilo.wc.common.Status import me.gilo.wc.ui.WooDroidActivity import me.gilo.wc.ui.home.HomeActivity -import me.gilo.wc.ui.state.ProgressDialogFragment import me.gilo.wc.viewmodels.UserViewModel -import java.util.regex.Matcher -import java.util.regex.Pattern class AnonymousSignInActivity : WooDroidActivity() { - override lateinit var viewModel : UserViewModel + override lateinit var viewModel: UserViewModel override fun attachBaseContext(newBase: Context) { super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase)) @@ -41,30 +31,29 @@ class AnonymousSignInActivity : WooDroidActivity() { } private fun anonymousSignIn() { - viewModel.anonymousSignIn().observe(this, Observer { - response-> - when (response!!.status()){ - Status.LOADING ->{ - showLoading("Setting you up with an account", "This will only take a short while") - } + viewModel.anonymousSignIn().observe(this, Observer { response -> + when (response!!.status()) { + Status.LOADING -> { + showLoading("Setting you up with an account", "This will only take a short while") + } - Status.SUCCESS ->{ - stopShowingLoading() - startActivity(Intent(baseContext, HomeActivity::class.java)) - - } - - Status.ERROR ->{ - stopShowingLoading() - Toast.makeText(baseContext, "Something went wrong", Toast.LENGTH_LONG).show() - } - - Status.EMPTY ->{ - stopShowingLoading() - } + Status.SUCCESS -> { + stopShowingLoading() + startActivity(Intent(baseContext, HomeActivity::class.java)) } - }) + + Status.ERROR -> { + stopShowingLoading() + Toast.makeText(baseContext, "Something went wrong", Toast.LENGTH_LONG).show() + } + + Status.EMPTY -> { + stopShowingLoading() + } + + } + }) } } \ No newline at end of file diff --git a/build.gradle b/build.gradle index b2a4bfb..83d4ef5 100644 --- a/build.gradle +++ b/build.gradle @@ -1,16 +1,17 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.3.11' + ext.kotlin_version = '1.3.31' + ext.kotlin_version = '1.3.31' repositories { google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.5.0-alpha10' + classpath 'com.android.tools.build:gradle:3.4.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath 'com.google.gms:google-services:4.0.1' + classpath 'com.google.gms:google-services:4.2.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/woodroid/build.gradle b/woodroid/build.gradle index 1efcb03..19640ed 100644 --- a/woodroid/build.gradle +++ b/woodroid/build.gradle @@ -1,4 +1,6 @@ apply plugin: 'com.android.library' +apply plugin: 'kotlin-android-extensions' +apply plugin: 'kotlin-android' android { compileSdkVersion 28 @@ -51,6 +53,10 @@ dependencies { implementation 'com.fasterxml.jackson.core:jackson-databind:2.9.8' implementation 'com.squareup.okhttp3:okhttp-urlconnection:3.0.0-RC1' + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" } +repositories { + mavenCentral() +} diff --git a/woodroid/src/main/java/me/gilo/woodroid/Woocommerce.java b/woodroid/src/main/java/me/gilo/woodroid/Woocommerce.java index 51e0a90..0b93ba9 100644 --- a/woodroid/src/main/java/me/gilo/woodroid/Woocommerce.java +++ b/woodroid/src/main/java/me/gilo/woodroid/Woocommerce.java @@ -17,24 +17,24 @@ public class Woocommerce { public static final ApiVersion API_V2 = ApiVersion.API_VERSION2; public static final ApiVersion API_V3 = ApiVersion.API_VERSION3; - final OrderNoteRepository orderNoteRepository; - final RefundRepository refundRepository; - final AttributeRepository attributeRepository; - final AttributeTermRepository attributeTermRepository; - final CategoryRepository categoryRepository; - final ShippingClassRepository shippingClassRepository; - final TagRepository tagRepository; - final VariationRepository variationRepository; - final CouponRepository couponRepository; - final CustomerRepository customerRepository; - final OrderRepository orderRepository; - final ProductRepository productRepository; - final ReviewRepository reviewRepository; - final ReportsRepository reportsRepository; - final CartRepository cartRepository; - final PaymentGatewayRepository paymentGatewayRepository; - final SettingsRepository settingsRepository; - final ShippingMethodRepository shippingMethodRepository; + private final OrderNoteRepository orderNoteRepository; + private final RefundRepository refundRepository; + private final AttributeRepository attributeRepository; + private final AttributeTermRepository attributeTermRepository; + private final CategoryRepository categoryRepository; + private final ShippingClassRepository shippingClassRepository; + private final TagRepository tagRepository; + private final VariationRepository variationRepository; + private final CouponRepository couponRepository; + private final CustomerRepository customerRepository; + private final OrderRepository orderRepository; + private final ProductRepository productRepository; + private final ReviewRepository reviewRepository; + private final ReportsRepository reportsRepository; + private final CartRepository cartRepository; + private final PaymentGatewayRepository paymentGatewayRepository; + private final SettingsRepository settingsRepository; + private final ShippingMethodRepository shippingMethodRepository; public static Builder Builder(){ return new Builder(); diff --git a/woodroid/src/main/java/me/gilo/woodroid/models/filters/ListFilter.java b/woodroid/src/main/java/me/gilo/woodroid/models/filters/ListFilter.java index 95c79ca..d1111de 100644 --- a/woodroid/src/main/java/me/gilo/woodroid/models/filters/ListFilter.java +++ b/woodroid/src/main/java/me/gilo/woodroid/models/filters/ListFilter.java @@ -76,11 +76,11 @@ public class ListFilter { } public void setAfter(Date date) { - setAfter(Converter.getDateString(date)); + setAfter(Converter.INSTANCE.getDateString(date)); } public void setBefore(Date date) { - setBefore(Converter.getDateString(date)); + setBefore(Converter.INSTANCE.getDateString(date)); } public void setBefore(String before) { diff --git a/woodroid/src/main/java/me/gilo/woodroid/repo/CartRepository.java b/woodroid/src/main/java/me/gilo/woodroid/repo/CartRepository.java deleted file mode 100644 index 5defb95..0000000 --- a/woodroid/src/main/java/me/gilo/woodroid/repo/CartRepository.java +++ /dev/null @@ -1,105 +0,0 @@ -package me.gilo.woodroid.repo; - -import android.content.Context; -import me.gilo.woodroid.data.api.CartAPI; -import me.gilo.woodroid.data.cookie.AddCookiesInterceptor; -import me.gilo.woodroid.data.cookie.ReceivedCookiesInterceptor; -import me.gilo.woodroid.models.LineItem; -import me.gilo.woodroid.models.filters.CartFilter; -import okhttp3.OkHttpClient; -import okhttp3.logging.HttpLoggingInterceptor; -import retrofit2.Retrofit; -import retrofit2.Call; -import retrofit2.converter.gson.GsonConverterFactory; - -import java.util.Map; -import java.util.concurrent.TimeUnit; - -public class CartRepository{ - - CartAPI apiService; - Retrofit retrofit; - - String baseUrl; - - public CartRepository(String baseUrl, String consumerKey, String consumerSecret) { - HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(); - loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); - - - OkHttpClient client = new OkHttpClient.Builder() - .addInterceptor(loggingInterceptor) - .readTimeout(30, TimeUnit.SECONDS) - .writeTimeout(30, TimeUnit.SECONDS) - .connectTimeout(15, TimeUnit.SECONDS) - .build(); - - retrofit = new Retrofit.Builder() - .baseUrl(baseUrl) - .addConverterFactory(GsonConverterFactory.create()) - .client(client) - .build(); - - this.baseUrl = baseUrl; - - apiService = retrofit.create(CartAPI.class); - } - - public void turnOnCookies(Context context){ - HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(); - loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); - - OkHttpClient client = new OkHttpClient.Builder() - .addInterceptor(new AddCookiesInterceptor(context)) - .addInterceptor(new ReceivedCookiesInterceptor(context)) - .addInterceptor(loggingInterceptor) - .readTimeout(30, TimeUnit.SECONDS) - .writeTimeout(30, TimeUnit.SECONDS) - .connectTimeout(15, TimeUnit.SECONDS) - .build(); - - retrofit = new Retrofit.Builder() - .baseUrl(baseUrl) - .addConverterFactory(GsonConverterFactory.create()) - .client(client) - .build(); - - apiService = retrofit.create(CartAPI.class); - } - - public Call clear() { - return apiService.clear(); - } - - - public Call count(int id) { - return apiService.count(); - } - - public Call> cart() { - return apiService.list(); - } - - public Call> addToCart(LineItem lineItem) { - return apiService.addToCart(lineItem); - } - - public Call delete(String cardId) { - CartFilter cartFilter = new CartFilter(cardId); - return apiService.delete(cartFilter); - } - - public Call restore(String cardId) { - CartFilter cartFilter = new CartFilter(cardId); - return apiService.restore(cartFilter); - } - - public Call update(String cardId, int quantity) { - CartFilter cartFilter = new CartFilter(cardId); - cartFilter.setQuantity(quantity); - - return apiService.update(cartFilter); - } - - -} diff --git a/woodroid/src/main/java/me/gilo/woodroid/repo/CartRepository.kt b/woodroid/src/main/java/me/gilo/woodroid/repo/CartRepository.kt new file mode 100644 index 0000000..7695736 --- /dev/null +++ b/woodroid/src/main/java/me/gilo/woodroid/repo/CartRepository.kt @@ -0,0 +1,99 @@ +package me.gilo.woodroid.repo + +import android.content.Context +import me.gilo.woodroid.data.api.CartAPI +import me.gilo.woodroid.data.cookie.AddCookiesInterceptor +import me.gilo.woodroid.data.cookie.ReceivedCookiesInterceptor +import me.gilo.woodroid.models.LineItem +import me.gilo.woodroid.models.filters.CartFilter +import okhttp3.OkHttpClient +import okhttp3.logging.HttpLoggingInterceptor +import retrofit2.Retrofit +import retrofit2.Call +import retrofit2.converter.gson.GsonConverterFactory +import java.util.concurrent.TimeUnit + +class CartRepository(internal var baseUrl: String, consumerKey: String, consumerSecret: String) { + + internal var apiService: CartAPI + internal var retrofit: Retrofit + + init { + val loggingInterceptor = HttpLoggingInterceptor() + loggingInterceptor.level = HttpLoggingInterceptor.Level.BODY + + + val client = OkHttpClient.Builder() + .addInterceptor(loggingInterceptor) + .readTimeout(30, TimeUnit.SECONDS) + .writeTimeout(30, TimeUnit.SECONDS) + .connectTimeout(15, TimeUnit.SECONDS) + .build() + + retrofit = Retrofit.Builder() + .baseUrl(baseUrl) + .addConverterFactory(GsonConverterFactory.create()) + .client(client) + .build() + + apiService = retrofit.create(CartAPI::class.java) + } + + fun turnOnCookies(context: Context) { + val loggingInterceptor = HttpLoggingInterceptor() + loggingInterceptor.level = HttpLoggingInterceptor.Level.BODY + + val client = OkHttpClient.Builder() + .addInterceptor(AddCookiesInterceptor(context)) + .addInterceptor(ReceivedCookiesInterceptor(context)) + .addInterceptor(loggingInterceptor) + .readTimeout(30, TimeUnit.SECONDS) + .writeTimeout(30, TimeUnit.SECONDS) + .connectTimeout(15, TimeUnit.SECONDS) + .build() + + retrofit = Retrofit.Builder() + .baseUrl(baseUrl) + .addConverterFactory(GsonConverterFactory.create()) + .client(client) + .build() + + apiService = retrofit.create(CartAPI::class.java) + } + + fun clear(): Call { + return apiService.clear() + } + + + fun count(id: Int): Call { + return apiService.count() + } + + fun cart(): Call> { + return apiService.list() + } + + fun addToCart(lineItem: LineItem): Call> { + return apiService.addToCart(lineItem) + } + + fun delete(cardId: String): Call { + val cartFilter = CartFilter(cardId) + return apiService.delete(cartFilter) + } + + fun restore(cardId: String): Call { + val cartFilter = CartFilter(cardId) + return apiService.restore(cartFilter) + } + + fun update(cardId: String, quantity: Int): Call { + val cartFilter = CartFilter(cardId) + cartFilter.quantity = quantity + + return apiService.update(cartFilter) + } + + +} diff --git a/woodroid/src/main/java/me/gilo/woodroid/utils/Converter.java b/woodroid/src/main/java/me/gilo/woodroid/utils/Converter.java deleted file mode 100644 index d0e8710..0000000 --- a/woodroid/src/main/java/me/gilo/woodroid/utils/Converter.java +++ /dev/null @@ -1,12 +0,0 @@ -package me.gilo.woodroid.utils; - -import java.text.SimpleDateFormat; -import java.util.Date; - -public class Converter { - - public static String getDateString(Date date){ - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); - return sdf.format(date); - } -} diff --git a/woodroid/src/main/java/me/gilo/woodroid/utils/Converter.kt b/woodroid/src/main/java/me/gilo/woodroid/utils/Converter.kt new file mode 100644 index 0000000..0ba3d28 --- /dev/null +++ b/woodroid/src/main/java/me/gilo/woodroid/utils/Converter.kt @@ -0,0 +1,13 @@ +package me.gilo.woodroid.utils + +import java.text.SimpleDateFormat +import java.util.Date +import java.util.Locale + +object Converter { + + fun getDateString(date: Date): String { + val sdf = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX", Locale.getDefault()) + return sdf.format(date) + } +}