WIP - Added my orders page
This commit is contained in:
parent
3b08a0541c
commit
ceda450bb8
@ -16,7 +16,7 @@ class OrderViewHolder(val context: Context, itemView: View) :
|
||||
|
||||
fun renderView(order: Order) {
|
||||
val tvTitle = itemView.findViewById<TextView>(R.id.tvTitle)
|
||||
tvTitle.text = order.orderNumber
|
||||
tvTitle.text = "#" + order.orderNumber
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -12,6 +12,7 @@ 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.product.CartActivity;
|
||||
import me.gilo.wc.ui.product.ProductActivity;
|
||||
import me.gilo.wc.ui.product.ShopActivity;
|
||||
@ -55,4 +56,7 @@ abstract class ActivitiesModule {
|
||||
@ContributesAndroidInjector
|
||||
abstract AnonymousSignInActivity contributesAnonymousSignInActivity();
|
||||
|
||||
@ContributesAndroidInjector
|
||||
abstract MyOrdersActivity contributesMyOrdersActivity();
|
||||
|
||||
}
|
||||
|
||||
@ -7,6 +7,7 @@ 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.*;
|
||||
|
||||
@ -44,7 +45,10 @@ public abstract class ViewModelModule {
|
||||
@ViewModelKey(CartViewModel.class)
|
||||
abstract ViewModel bindCartViewModel(CartViewModel viewModel);
|
||||
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@ViewModelKey(OrderViewModel.class)
|
||||
abstract ViewModel bindOrderViewModel(OrderViewModel viewModel);
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
|
||||
@ -11,6 +11,7 @@ import kotlinx.android.synthetic.main.fragment_profile.*
|
||||
import me.gilo.raison.ui.user.onboarding.SignUpActivity
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.ui.customer.ProfileActivity
|
||||
import me.gilo.wc.ui.order.MyOrdersActivity
|
||||
import me.gilo.wc.viewmodels.ProductViewModel
|
||||
import me.gilo.wc.viewmodels.UserViewModel
|
||||
|
||||
@ -53,6 +54,10 @@ class ProfileFragment : Fragment() {
|
||||
startActivity(Intent(activity, SignUpActivity::class.java))
|
||||
}
|
||||
|
||||
llMyOrders.setOnClickListener{
|
||||
startActivity(Intent(activity, MyOrdersActivity::class.java))
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -1,19 +1,100 @@
|
||||
package me.gilo.wc.ui.order
|
||||
|
||||
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 me.gilo.wc.R
|
||||
|
||||
import android.support.v7.widget.LinearLayoutManager
|
||||
import android.view.View
|
||||
import io.github.inflationx.viewpump.ViewPumpContextWrapper
|
||||
import kotlinx.android.synthetic.main.activity_my_orders.*
|
||||
import kotlinx.android.synthetic.main.content_my_orders.*
|
||||
import kotlinx.android.synthetic.main.state_empty.*
|
||||
import me.gilo.wc.R
|
||||
import me.gilo.wc.adapter.OrderAdapter
|
||||
import me.gilo.wc.common.Status
|
||||
import me.gilo.wc.ui.WooDroidActivity
|
||||
import me.gilo.wc.ui.home.HomeActivity
|
||||
import me.gilo.wc.viewmodels.OrderViewModel
|
||||
import me.gilo.woodroid.models.Order
|
||||
|
||||
class MyOrdersActivity : AppCompatActivity() {
|
||||
class MyOrdersActivity : WooDroidActivity<OrderViewModel>() {
|
||||
|
||||
|
||||
override lateinit var viewModel: OrderViewModel
|
||||
var orders: ArrayList<Order> = ArrayList()
|
||||
|
||||
lateinit var adapter: OrderAdapter
|
||||
|
||||
override fun attachBaseContext(newBase: Context) {
|
||||
super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase))
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_my_orders)
|
||||
setSupportActionBar(toolbar)
|
||||
|
||||
viewModel = getViewModel(OrderViewModel::class.java)
|
||||
title = "My Orders"
|
||||
|
||||
val layoutManager = LinearLayoutManager(baseContext, LinearLayoutManager.VERTICAL, false)
|
||||
rvOrders.layoutManager = layoutManager
|
||||
rvOrders.isNestedScrollingEnabled = false
|
||||
|
||||
orders = ArrayList()
|
||||
|
||||
adapter = OrderAdapter(orders)
|
||||
rvOrders.adapter = adapter
|
||||
|
||||
orders()
|
||||
|
||||
llEmptyState_layout.visibility = View.GONE
|
||||
|
||||
}
|
||||
|
||||
private fun showEmpty(title : String, description : String) {
|
||||
tvEmptyState_title.text = title
|
||||
tvEmptyState_description.text = description
|
||||
|
||||
llEmptyState_layout.visibility = View.VISIBLE
|
||||
|
||||
bEmptyState_action.setOnClickListener{
|
||||
startActivity(Intent(baseContext, HomeActivity::class.java))
|
||||
}
|
||||
}
|
||||
|
||||
private fun orders() {
|
||||
viewModel.orders().observe(this, android.arch.lifecycle.Observer { response ->
|
||||
when (response!!.status()) {
|
||||
Status.LOADING -> {
|
||||
showLoading()
|
||||
}
|
||||
|
||||
Status.SUCCESS -> {
|
||||
orders.clear()
|
||||
stopShowingLoading()
|
||||
|
||||
for (order in response.data()) {
|
||||
orders.add(order)
|
||||
|
||||
}
|
||||
|
||||
adapter.notifyDataSetChanged()
|
||||
|
||||
}
|
||||
|
||||
Status.ERROR -> {
|
||||
stopShowingLoading()
|
||||
}
|
||||
|
||||
Status.EMPTY -> {
|
||||
stopShowingLoading()
|
||||
|
||||
showEmpty("No orders", "Seems like you haven't ordered anything yet!")
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
57
app/src/main/java/me/gilo/wc/viewmodels/OrderViewModel.java
Normal file
57
app/src/main/java/me/gilo/wc/viewmodels/OrderViewModel.java
Normal file
@ -0,0 +1,57 @@
|
||||
package me.gilo.wc.viewmodels;
|
||||
|
||||
import android.arch.lifecycle.ViewModel;
|
||||
import me.gilo.wc.common.WooLiveData;
|
||||
import me.gilo.wc.repo.OrderRepository;
|
||||
import me.gilo.wc.repo.ReviewRepository;
|
||||
import me.gilo.woodroid.models.Order;
|
||||
import me.gilo.woodroid.models.ProductReview;
|
||||
import me.gilo.woodroid.models.filters.OrderFilter;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public final class OrderViewModel extends ViewModel {
|
||||
private final OrderRepository orderRepository;
|
||||
|
||||
@Inject
|
||||
OrderViewModel(OrderRepository orderRepository) {
|
||||
this.orderRepository = orderRepository;
|
||||
}
|
||||
|
||||
public WooLiveData<Order> addToCart(int productId) {
|
||||
return orderRepository.addToCart(productId);
|
||||
}
|
||||
|
||||
public WooLiveData<Order> create(Order order) {
|
||||
return orderRepository.create(order);
|
||||
}
|
||||
|
||||
|
||||
public WooLiveData<Order> order(int id) {
|
||||
|
||||
return orderRepository.order(id);
|
||||
}
|
||||
|
||||
public WooLiveData<List<Order>> orders() {
|
||||
return orderRepository.orders();
|
||||
}
|
||||
|
||||
public WooLiveData<List<Order>> orders(OrderFilter orderFilter) {
|
||||
return orderRepository.orders(orderFilter);
|
||||
}
|
||||
|
||||
public WooLiveData<Order> update(int id, Order order) {
|
||||
return orderRepository.update(id, order);
|
||||
}
|
||||
|
||||
public WooLiveData<Order> delete(int id) {
|
||||
return orderRepository.delete(id);
|
||||
}
|
||||
|
||||
public WooLiveData<Order> delete(int id, boolean force) {
|
||||
return orderRepository.delete(id, force);
|
||||
}
|
||||
|
||||
}
|
||||
@ -23,12 +23,48 @@
|
||||
|
||||
<include layout="@layout/content_my_orders"/>
|
||||
|
||||
<android.support.design.widget.FloatingActionButton
|
||||
android:id="@+id/fab"
|
||||
android:layout_width="wrap_content"
|
||||
<include layout="@layout/state_empty"/>
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_margin="@dimen/fab_margin"
|
||||
app:srcCompat="@android:drawable/ic_dialog_email"/>
|
||||
android:background="@color/colorPrimary"
|
||||
android:orientation="horizontal"
|
||||
android:paddingTop="4dp"
|
||||
android:paddingBottom="4dp"
|
||||
android:paddingRight="16dp"
|
||||
android:layout_margin="16dp"
|
||||
android:gravity="center"
|
||||
android:layout_gravity="bottom"
|
||||
android:elevation="2dp"
|
||||
android:id="@+id/flSave"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/bNext"
|
||||
fontPath="@string/font_regular"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:background="@color/colorPrimary"
|
||||
android:text="Done"
|
||||
android:padding="12dp"
|
||||
android:gravity="center"
|
||||
android:textAllCaps="false"
|
||||
android:textColor="#ffffff"
|
||||
android:textSize="16sp"
|
||||
tools:ignore="MissingPrefix"/>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="32dp"
|
||||
android:layout_height="32dp"
|
||||
android:src="@drawable/ic_action_navigation_arrow_back_inverted"
|
||||
android:tint="#ffffff"
|
||||
android:layout_gravity="right|center"
|
||||
android:rotation="180"
|
||||
/>
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
@ -1,12 +1,43 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.constraint.ConstraintLayout
|
||||
<android.support.v4.widget.NestedScrollView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/bg"
|
||||
android:orientation="vertical"
|
||||
tools:ignore="MissingPrefix"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||
tools:showIn="@layout/activity_my_orders"
|
||||
tools:context=".ui.order.MyOrdersActivity">
|
||||
>
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/bg"
|
||||
android:orientation="vertical"
|
||||
android:paddingBottom="80dp"
|
||||
>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
>
|
||||
|
||||
<android.support.v7.widget.RecyclerView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="16dp"
|
||||
android:id="@+id/rvOrders"
|
||||
android:elevation="2dp"
|
||||
android:background="@drawable/rect_white"
|
||||
>
|
||||
|
||||
</android.support.v7.widget.RecyclerView>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
</android.support.v4.widget.NestedScrollView>
|
||||
@ -124,6 +124,7 @@
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/llMyOrders"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
|
||||
@ -13,7 +13,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="16dp"
|
||||
android:gravity="left"
|
||||
android:textColor="@color/text_black_4"
|
||||
android:text="Hey"
|
||||
android:textColor="@color/colorPrimary"
|
||||
android:textSize="16sp"/>
|
||||
|
||||
<View
|
||||
|
||||
@ -8,7 +8,7 @@ import java.util.List;
|
||||
|
||||
public class Order {
|
||||
public int id;
|
||||
@SerializedName("order_number")
|
||||
@SerializedName("number")
|
||||
public String orderNumber;
|
||||
@SerializedName("created_at")
|
||||
public String createdAt;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user