diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9298c27..641759d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,21 @@
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
+
+
+
+
+
+
create(Customer customer) {
+ final WooLiveData callBack = new WooLiveData();
+ woocommerce.CustomerRepository().create(customer).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/ui/WooDroidActivity.kt b/app/src/main/java/me/gilo/wc/ui/WooDroidActivity.kt
new file mode 100644
index 0000000..445e157
--- /dev/null
+++ b/app/src/main/java/me/gilo/wc/ui/WooDroidActivity.kt
@@ -0,0 +1,41 @@
+package me.gilo.wc.ui
+
+import android.arch.lifecycle.ViewModel
+import android.content.Context
+import android.os.Bundle
+import android.support.design.widget.Snackbar
+import android.support.v7.app.AppCompatActivity
+import io.github.inflationx.viewpump.ViewPumpContextWrapper
+import me.gilo.wc.R
+
+import kotlinx.android.synthetic.main.activity_basic_customer_details.*
+import me.gilo.raison.ui.user.onboarding.SignInActivity
+import me.gilo.wc.common.BaseActivity
+import me.gilo.wc.ui.state.ProgressDialogFragment
+import me.gilo.wc.viewmodels.CustomerViewModel
+import me.gilo.wc.viewmodels.UserViewModel
+import java.util.regex.Matcher
+import java.util.regex.Pattern
+
+abstract class WooDroidActivity : BaseActivity() {
+
+
+ abstract var viewModel : T
+ private lateinit var progressDialog: ProgressDialogFragment
+
+ override fun attachBaseContext(newBase: Context) {
+ super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase))
+ }
+
+ private fun showLoading(title: String, message: String) {
+ val manager = supportFragmentManager
+ progressDialog = ProgressDialogFragment.newInstance(title, message)
+ progressDialog.isCancelable = false
+ progressDialog.show(manager, "progress")
+ }
+
+ private fun stopShowingLoading() {
+ progressDialog.dismiss()
+ }
+
+}
diff --git a/app/src/main/java/me/gilo/wc/ui/customer/BasicCustomerDetailsActivity.kt b/app/src/main/java/me/gilo/wc/ui/customer/BasicCustomerDetailsActivity.kt
new file mode 100644
index 0000000..890b942
--- /dev/null
+++ b/app/src/main/java/me/gilo/wc/ui/customer/BasicCustomerDetailsActivity.kt
@@ -0,0 +1,38 @@
+package me.gilo.wc.ui.customer
+
+import android.content.Context
+import android.os.Bundle
+import android.support.design.widget.Snackbar
+import android.support.v7.app.AppCompatActivity
+import io.github.inflationx.viewpump.ViewPumpContextWrapper
+import me.gilo.wc.R
+
+import kotlinx.android.synthetic.main.activity_basic_customer_details.*
+import me.gilo.raison.ui.user.onboarding.SignInActivity
+import me.gilo.wc.common.BaseActivity
+import me.gilo.wc.ui.WooDroidActivity
+import me.gilo.wc.ui.state.ProgressDialogFragment
+import me.gilo.wc.viewmodels.CustomerViewModel
+import me.gilo.wc.viewmodels.UserViewModel
+import java.util.regex.Matcher
+import java.util.regex.Pattern
+
+class BasicCustomerDetailsActivity : WooDroidActivity() {
+
+
+ override lateinit var viewModel : CustomerViewModel
+
+ override fun attachBaseContext(newBase: Context) {
+ super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase))
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_basic_customer_details)
+
+ viewModel = getViewModel(CustomerViewModel::class.java)
+ title = "Basic Details"
+
+ }
+
+}
diff --git a/app/src/main/java/me/gilo/wc/ui/customer/BillingAddressActivity.kt b/app/src/main/java/me/gilo/wc/ui/customer/BillingAddressActivity.kt
new file mode 100644
index 0000000..91386d4
--- /dev/null
+++ b/app/src/main/java/me/gilo/wc/ui/customer/BillingAddressActivity.kt
@@ -0,0 +1,28 @@
+package me.gilo.wc.ui.customer
+
+import android.content.Context
+import android.os.Bundle
+import io.github.inflationx.viewpump.ViewPumpContextWrapper
+import kotlinx.android.synthetic.main.activity_billing_address.*
+import me.gilo.wc.R
+import me.gilo.wc.ui.WooDroidActivity
+import me.gilo.wc.viewmodels.CustomerViewModel
+
+class BillingAddressActivity : WooDroidActivity() {
+
+ override lateinit var viewModel : CustomerViewModel
+
+ override fun attachBaseContext(newBase: Context) {
+ super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase))
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_billing_address)
+
+ viewModel = getViewModel(CustomerViewModel::class.java)
+ title = "Billing Address"
+
+ }
+
+}
diff --git a/app/src/main/java/me/gilo/wc/ui/customer/ShippingAddressActivity.kt b/app/src/main/java/me/gilo/wc/ui/customer/ShippingAddressActivity.kt
new file mode 100644
index 0000000..bb97de8
--- /dev/null
+++ b/app/src/main/java/me/gilo/wc/ui/customer/ShippingAddressActivity.kt
@@ -0,0 +1,28 @@
+package me.gilo.wc.ui.customer
+
+import android.content.Context
+import android.os.Bundle
+import io.github.inflationx.viewpump.ViewPumpContextWrapper
+import kotlinx.android.synthetic.main.activity_shipping_address.*
+import me.gilo.wc.R
+import me.gilo.wc.ui.WooDroidActivity
+import me.gilo.wc.viewmodels.CustomerViewModel
+
+class ShippingAddressActivity : WooDroidActivity() {
+
+ override lateinit var viewModel : CustomerViewModel
+
+ override fun attachBaseContext(newBase: Context) {
+ super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase))
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_shipping_address)
+
+ viewModel = getViewModel(CustomerViewModel::class.java)
+ title = "Shipping Address"
+
+ }
+
+}
diff --git a/app/src/main/java/me/gilo/wc/viewmodels/CustomerViewModel.java b/app/src/main/java/me/gilo/wc/viewmodels/CustomerViewModel.java
new file mode 100644
index 0000000..ac82fa1
--- /dev/null
+++ b/app/src/main/java/me/gilo/wc/viewmodels/CustomerViewModel.java
@@ -0,0 +1,51 @@
+package me.gilo.wc.viewmodels;
+
+import android.arch.lifecycle.ViewModel;
+import me.gilo.wc.common.WooLiveData;
+import me.gilo.wc.repo.CustomerRepository;
+import me.gilo.woodroid.models.Customer;
+import me.gilo.woodroid.models.filters.CustomerFilter;
+
+import javax.inject.Inject;
+import java.util.List;
+
+
+public final class CustomerViewModel extends ViewModel {
+ private final CustomerRepository customerRepository;
+
+ @Inject
+ CustomerViewModel(CustomerRepository customerRepository) {
+ this.customerRepository = customerRepository;
+
+ }
+
+ public WooLiveData create(Customer customer) {
+ return customerRepository.create(customer);
+ }
+
+
+ public WooLiveData customer(int id) {
+ return customerRepository.customer(id);
+ }
+
+ public WooLiveData> customers() {
+ return customerRepository.customers();
+ }
+
+ public WooLiveData> customers(CustomerFilter customerFilter) {
+ return customerRepository.customers(customerFilter);
+ }
+
+ public WooLiveData update(int id, Customer customer) {
+ return customerRepository.update(id, customer);
+ }
+
+ public WooLiveData delete(int id) {
+ return customerRepository.delete(id);
+ }
+
+ public WooLiveData delete(int id, boolean force) {
+ return customerRepository.delete(id, force);
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_basic_customer_details.xml b/app/src/main/res/layout/activity_basic_customer_details.xml
new file mode 100644
index 0000000..3f9e183
--- /dev/null
+++ b/app/src/main/res/layout/activity_basic_customer_details.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_billing_address.xml b/app/src/main/res/layout/activity_billing_address.xml
new file mode 100644
index 0000000..1aa46d1
--- /dev/null
+++ b/app/src/main/res/layout/activity_billing_address.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_shipping_address.xml b/app/src/main/res/layout/activity_shipping_address.xml
new file mode 100644
index 0000000..d620732
--- /dev/null
+++ b/app/src/main/res/layout/activity_shipping_address.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/content_basic_customer_details.xml b/app/src/main/res/layout/content_basic_customer_details.xml
new file mode 100644
index 0000000..277b2b7
--- /dev/null
+++ b/app/src/main/res/layout/content_basic_customer_details.xml
@@ -0,0 +1,12 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/content_billing_address.xml b/app/src/main/res/layout/content_billing_address.xml
new file mode 100644
index 0000000..f3046e2
--- /dev/null
+++ b/app/src/main/res/layout/content_billing_address.xml
@@ -0,0 +1,12 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/content_shipping_address.xml b/app/src/main/res/layout/content_shipping_address.xml
new file mode 100644
index 0000000..e1dbbf2
--- /dev/null
+++ b/app/src/main/res/layout/content_shipping_address.xml
@@ -0,0 +1,12 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 07fede1..46bc7f1 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -33,5 +33,8 @@
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\'s standard dummy text ever since the 1500s
MyOrdersActivity
UserDetailsActivity
+ BasicCustomerDetailsActivity
+ BillingAddressActivity
+ ShippingAddressActivity