From 667bc07d411514e8f634c9c58622ef73c17dda55 Mon Sep 17 00:00:00 2001 From: Santosh Bhandary Date: Thu, 17 Sep 2020 13:33:12 +0545 Subject: [PATCH] notice list and detail mock added, event handling --- .../kyc/newCustomer/view/KYCV3Activity.java | 1 - .../notice/gateway/NoticeGateway.java | 123 +++++++++++--- .../features/notice/model/NoticeDTO.java | 16 ++ .../presenter/NoticeGatewayInterface.java | 42 +++-- .../notice/presenter/NoticeViewModel.java | 8 +- .../notice/view/NoticeListingFragment.java | 155 ++++++++++-------- .../android/utils/https/ApiEndpoints.java | 2 +- 7 files changed, 227 insertions(+), 120 deletions(-) diff --git a/app/src/main/java/com/swifttech/remit/android/features/kyc/newCustomer/view/KYCV3Activity.java b/app/src/main/java/com/swifttech/remit/android/features/kyc/newCustomer/view/KYCV3Activity.java index 7f4aa1cc..61563567 100644 --- a/app/src/main/java/com/swifttech/remit/android/features/kyc/newCustomer/view/KYCV3Activity.java +++ b/app/src/main/java/com/swifttech/remit/android/features/kyc/newCustomer/view/KYCV3Activity.java @@ -211,7 +211,6 @@ public class KYCV3Activity extends BaseActivity implements KYCV3PresenterInterfa return customerDetailFragment; } - @Override public void onKYCFormSubmittedSuccessfully() { Intent returnIntent = new Intent(); diff --git a/app/src/main/java/com/swifttech/remit/android/features/notice/gateway/NoticeGateway.java b/app/src/main/java/com/swifttech/remit/android/features/notice/gateway/NoticeGateway.java index 30e4fd0f..f46244b1 100644 --- a/app/src/main/java/com/swifttech/remit/android/features/notice/gateway/NoticeGateway.java +++ b/app/src/main/java/com/swifttech/remit/android/features/notice/gateway/NoticeGateway.java @@ -1,27 +1,96 @@ -package com.swifttech.remit.android.features.notice.gateway; - -import com.google.gson.JsonObject; -import com.swifttech.remit.android.base.PrivilegedGateway; -import com.swifttech.remit.android.features.notice.presenter.NoticeGatewayInterface; -import com.swifttech.remit.android.utils.https.HttpClientV2; - -import io.reactivex.Observable; -import okhttp3.ResponseBody; - -public class NoticeGateway extends PrivilegedGateway implements NoticeGatewayInterface { - - @Override - public Observable getNoticeList(String auth, String customerID) { - JsonObject jsonObject=new JsonObject() ; - jsonObject.addProperty("customerId",customerID); - return HttpClientV2.getInstance().getNoticeList(auth,jsonObject); - - } - - @Override - public Observable getNoticeDetail(String auth, String noticeId) { - JsonObject jsonObject=new JsonObject() ; - jsonObject.addProperty("rowId",noticeId); - return HttpClientV2.getInstance().getNoticeDetail(auth,jsonObject); - } -} +package com.swifttech.remit.android.features.notice.gateway; + +import com.google.gson.JsonObject; +import com.swifttech.remit.android.base.PrivilegedGateway; +import com.swifttech.remit.android.features.notice.model.NoticeDTO; +import com.swifttech.remit.android.features.notice.model.NoticeDetailDTO; +import com.swifttech.remit.android.features.notice.presenter.NoticeGatewayInterface; +import com.swifttech.remit.android.features.notice.view.NoticeActivity; +import com.swifttech.remit.android.utils.https.HttpClientV2; + +import java.util.ArrayList; +import java.util.List; + +import io.reactivex.Observable; +import okhttp3.ResponseBody; + +public class NoticeGateway extends PrivilegedGateway implements NoticeGatewayInterface { + + @Override + public Observable getNoticeList(String auth, String customerID) { + JsonObject jsonObject=new JsonObject() ; + jsonObject.addProperty("customerId",customerID); + return HttpClientV2.getInstance().getNoticeList(auth,jsonObject); + + } + + @Override + public Observable getNoticeDetail(String auth, String noticeId) { + JsonObject jsonObject=new JsonObject() ; + jsonObject.addProperty("rowId",noticeId); + return HttpClientV2.getInstance().getNoticeDetail(auth,jsonObject); + } + + @Override + public List mockNoticeList() { + List noticeList=new ArrayList<>(); + + NoticeDTO noticeDTO0=new NoticeDTO(); + noticeDTO0.setRowId("0"); + noticeDTO0.setTitle("Title 1"); + noticeDTO0.setCreateDate("2077/01/01"); + noticeDTO0.setIsRead("0"); + noticeDTO0.setType("1"); + noticeDTO0.setExtra("12"); + noticeList.add(noticeDTO0); + + NoticeDTO noticeDTO1=new NoticeDTO(); + noticeDTO1.setRowId("1"); + noticeDTO1.setTitle("Title 2"); + noticeDTO1.setCreateDate("2077/01/02"); + noticeDTO1.setIsRead("1"); + noticeDTO1.setType("0"); + noticeList.add(noticeDTO1); + + + NoticeDTO noticeDTO2=new NoticeDTO(); + noticeDTO2.setRowId("2"); + noticeDTO2.setTitle("Title 3"); + noticeDTO2.setCreateDate("2077/01/02"); + noticeDTO2.setIsRead("0"); + noticeDTO2.setType("1"); + noticeDTO2.setExtra("13"); + noticeList.add(noticeDTO2); + + + NoticeDTO noticeDTO3=new NoticeDTO(); + noticeDTO3.setRowId("3"); + noticeDTO3.setTitle("Title 4"); + noticeDTO3.setCreateDate("2077/01/03"); + noticeDTO3.setIsRead("1"); + noticeDTO3.setType("1"); + noticeDTO3.setExtra("14"); + noticeList.add(noticeDTO3); + + + NoticeDTO noticeDTO4=new NoticeDTO(); + noticeDTO4.setRowId("4"); + noticeDTO4.setTitle("Title 5"); + noticeDTO4.setCreateDate("2077/01/04"); + noticeDTO4.setIsRead("1"); + noticeDTO4.setType("0"); + noticeList.add(noticeDTO4); + + return noticeList; + } + + @Override + public NoticeDetailDTO mockNoticeDetail() { + NoticeDetailDTO noticeDetailDTO=new NoticeDetailDTO(); + noticeDetailDTO.setTitle("Title 1"); + noticeDetailDTO.setBody("This is Detail body of Title 1"); + noticeDetailDTO.setCreateDate("2077/01/01"); + noticeDetailDTO.setImageURL("https://p18cdn4static.sharpschool.com/UserFiles/Servers/Server_414551/Image/News/District%20News/Title%201.jpg"); + return noticeDetailDTO; + } +} diff --git a/app/src/main/java/com/swifttech/remit/android/features/notice/model/NoticeDTO.java b/app/src/main/java/com/swifttech/remit/android/features/notice/model/NoticeDTO.java index 37699f71..917c3cea 100644 --- a/app/src/main/java/com/swifttech/remit/android/features/notice/model/NoticeDTO.java +++ b/app/src/main/java/com/swifttech/remit/android/features/notice/model/NoticeDTO.java @@ -61,4 +61,20 @@ public class NoticeDTO { public void setIsRead(String isRead) { this.isRead = isRead; } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getExtra() { + return extra; + } + + public void setExtra(String extra) { + this.extra = extra; + } } diff --git a/app/src/main/java/com/swifttech/remit/android/features/notice/presenter/NoticeGatewayInterface.java b/app/src/main/java/com/swifttech/remit/android/features/notice/presenter/NoticeGatewayInterface.java index 84163bf2..decb05ee 100644 --- a/app/src/main/java/com/swifttech/remit/android/features/notice/presenter/NoticeGatewayInterface.java +++ b/app/src/main/java/com/swifttech/remit/android/features/notice/presenter/NoticeGatewayInterface.java @@ -1,17 +1,25 @@ -package com.swifttech.remit.android.features.notice.presenter; - - - -import com.swifttech.remit.android.base.PrivilegedGatewayInterface; - -import io.reactivex.Observable; -import okhttp3.ResponseBody; - -public interface NoticeGatewayInterface extends PrivilegedGatewayInterface { - - Observable getNoticeList(String auth, String customerID); - - Observable getNoticeDetail(String auth, String noticeId); - - -} +package com.swifttech.remit.android.features.notice.presenter; + + + +import com.swifttech.remit.android.base.PrivilegedGatewayInterface; +import com.swifttech.remit.android.features.notice.model.NoticeDTO; +import com.swifttech.remit.android.features.notice.model.NoticeDetailDTO; + +import java.util.List; + +import io.reactivex.Observable; +import okhttp3.ResponseBody; + +public interface NoticeGatewayInterface extends PrivilegedGatewayInterface { + + Observable getNoticeList(String auth, String customerID); + + Observable getNoticeDetail(String auth, String noticeId); + + List mockNoticeList(); + NoticeDetailDTO mockNoticeDetail(); + + + +} diff --git a/app/src/main/java/com/swifttech/remit/android/features/notice/presenter/NoticeViewModel.java b/app/src/main/java/com/swifttech/remit/android/features/notice/presenter/NoticeViewModel.java index 1758baa2..0f12220b 100644 --- a/app/src/main/java/com/swifttech/remit/android/features/notice/presenter/NoticeViewModel.java +++ b/app/src/main/java/com/swifttech/remit/android/features/notice/presenter/NoticeViewModel.java @@ -105,7 +105,9 @@ public class NoticeViewModel extends BaseViewModel implements NoticePresenterInt @Override public void onFailed(String message) { - view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, alertType -> view.exitView()); + view.lazyInitViews(); + sortNoticeList(gateway.mockNoticeList()); +// view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, alertType -> view.exitView()); } @Override @@ -155,7 +157,9 @@ public class NoticeViewModel extends BaseViewModel implements NoticePresenterInt @Override public void onFailed(String message) { - view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, null); + noticeDetailLiveData.setValue(gateway.mockNoticeDetail()); + view.showDetailScreen(); +// view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, null); } @Override diff --git a/app/src/main/java/com/swifttech/remit/android/features/notice/view/NoticeListingFragment.java b/app/src/main/java/com/swifttech/remit/android/features/notice/view/NoticeListingFragment.java index 1c7c8ebc..8465df98 100644 --- a/app/src/main/java/com/swifttech/remit/android/features/notice/view/NoticeListingFragment.java +++ b/app/src/main/java/com/swifttech/remit/android/features/notice/view/NoticeListingFragment.java @@ -1,72 +1,83 @@ -package com.swifttech.remit.android.features.notice.view; - -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import androidx.annotation.Nullable; -import androidx.lifecycle.ViewModelProviders; -import androidx.recyclerview.widget.RecyclerView; - -import com.swifttech.remit.android.R; -import com.swifttech.remit.android.base.BaseFragment; -import com.swifttech.remit.android.common.customwidgets.LineDividerItemDecoration; -import com.swifttech.remit.android.features.notice.adapter.NoticeListingRVAdapter; -import com.swifttech.remit.android.features.notice.model.NoticeDTO; -import com.swifttech.remit.android.features.notice.presenter.NoticeViewModel; - -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class NoticeListingFragment extends BaseFragment implements NoticeListingRVAdapter.NoticeClickListener { - - - @BindView(R.id.noticeRv) - RecyclerView noticeRv; - - NoticeListingRVAdapter noticeListingRVAdapter; - - - @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - return inflater.inflate(R.layout.fragment_notice_listing, container, false); - } - - @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - ButterKnife.bind(this, view); - init(); - performDefaultAction(savedInstanceState); - } - - - private void init() { - - noticeListingRVAdapter=new NoticeListingRVAdapter(this); - noticeRv.setAdapter(noticeListingRVAdapter); - noticeRv.addItemDecoration(new LineDividerItemDecoration(noticeRv.getContext(),LineDividerItemDecoration.VERTICAL_LIST)); - } - - private void performDefaultAction(Bundle savedInstance) { - - NoticeViewModel noticeViewModel = ViewModelProviders.of(getActivity()).get(NoticeViewModel.class); - - noticeViewModel.getNoticeListLiveData().observe(getViewLifecycleOwner(),this::updateNoticeList); - - } - - private void updateNoticeList(List noticeList) - { - noticeListingRVAdapter.setData(noticeList); - } - - - @Override - public void onNoticeClicked(NoticeDTO itemModel) { - ViewModelProviders.of(getActivity()).get(NoticeViewModel.class).fetchNoticeDetail(itemModel); - } -} +package com.swifttech.remit.android.features.notice.view; + +import android.content.Intent; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.Nullable; +import androidx.lifecycle.ViewModelProviders; +import androidx.recyclerview.widget.RecyclerView; + +import com.swifttech.remit.android.R; +import com.swifttech.remit.android.base.BaseFragment; +import com.swifttech.remit.android.common.customwidgets.LineDividerItemDecoration; +import com.swifttech.remit.android.features.notice.adapter.NoticeListingRVAdapter; +import com.swifttech.remit.android.features.notice.model.NoticeDTO; +import com.swifttech.remit.android.features.notice.presenter.NoticeViewModel; +import com.swifttech.remit.android.features.sendmoney.view.SendMoneyV2TransactionCompleteActivity; + +import java.util.List; + +import butterknife.BindView; +import butterknife.ButterKnife; + +public class NoticeListingFragment extends BaseFragment implements NoticeListingRVAdapter.NoticeClickListener { + + + @BindView(R.id.noticeRv) + RecyclerView noticeRv; + + NoticeListingRVAdapter noticeListingRVAdapter; + + + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_notice_listing, container, false); + } + + @Override + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + ButterKnife.bind(this, view); + init(); + performDefaultAction(savedInstanceState); + } + + + private void init() { + + noticeListingRVAdapter=new NoticeListingRVAdapter(this); + noticeRv.setAdapter(noticeListingRVAdapter); + noticeRv.addItemDecoration(new LineDividerItemDecoration(noticeRv.getContext(),LineDividerItemDecoration.VERTICAL_LIST)); + } + + private void performDefaultAction(Bundle savedInstance) { + + NoticeViewModel noticeViewModel = ViewModelProviders.of(getActivity()).get(NoticeViewModel.class); + + noticeViewModel.getNoticeListLiveData().observe(getViewLifecycleOwner(),this::updateNoticeList); + + } + + private void updateNoticeList(List noticeList) + { + noticeListingRVAdapter.setData(noticeList); + } + + + @Override + public void onNoticeClicked(NoticeDTO itemModel) { + if(itemModel.getType().equals("0")){ + ViewModelProviders.of(getActivity()).get(NoticeViewModel.class).fetchNoticeDetail(itemModel); + }else if(itemModel.getType().equals("1")){ + Intent startReceiptActivity = new Intent(getActivity(), SendMoneyV2TransactionCompleteActivity.class); + startReceiptActivity.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + startReceiptActivity.putExtra(SendMoneyV2TransactionCompleteActivity.SEND_MONEY_TID_BUNDLE_KEY, itemModel.getExtra()); + startReceiptActivity.putExtra(SendMoneyV2TransactionCompleteActivity.IS_TRANSACTION_DETAIL_REQUEST_FROM_SEND_MONEY_BUNDLE_KEY, true); + startReceiptActivity.putExtra(SendMoneyV2TransactionCompleteActivity.SHOULD_UPDATE_BALANCE_UPON_RETURN, true); + startActivity(startReceiptActivity); + } + } +} diff --git a/app/src/main/java/com/swifttech/remit/android/utils/https/ApiEndpoints.java b/app/src/main/java/com/swifttech/remit/android/utils/https/ApiEndpoints.java index 43b7b302..1c40bf4c 100644 --- a/app/src/main/java/com/swifttech/remit/android/utils/https/ApiEndpoints.java +++ b/app/src/main/java/com/swifttech/remit/android/utils/https/ApiEndpoints.java @@ -283,7 +283,7 @@ public interface ApiEndpoints { Observable getNoticeList(@Header("Authorization") String token,@Body() JsonObject jsonObject); - @GET(API_URL.GET_NOTICE_DETAIL) + @POST(API_URL.GET_NOTICE_DETAIL) @Headers("Content-Type: application/json") Observable getNoticeDetail(@Header("Authorization") String token,@Body() JsonObject jsonObject);