MyWallet.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. package com.ttiglobal.inttilectgpchat;
  2. import android.annotation.SuppressLint;
  3. import android.content.Intent;
  4. import android.graphics.Color;
  5. import android.graphics.PorterDuff;
  6. import android.graphics.drawable.Drawable;
  7. import android.os.Bundle;
  8. import android.os.Handler;
  9. import android.os.Message;
  10. import androidx.appcompat.app.AppCompatActivity;
  11. import androidx.recyclerview.widget.LinearLayoutManager;
  12. import androidx.recyclerview.widget.RecyclerView;
  13. import androidx.appcompat.widget.Toolbar;
  14. import android.view.MenuItem;
  15. import android.view.View;
  16. import android.widget.Button;
  17. import android.widget.ImageView;
  18. import android.widget.ProgressBar;
  19. import android.widget.TextView;
  20. import android.widget.Toast;
  21. import com.google.firebase.analytics.FirebaseAnalytics;
  22. import com.google.gson.Gson;
  23. import com.ttiglobal.inttilectgpchat.adapter.OrderHistoryAdapter;
  24. import com.ttiglobal.inttilectgpchat.autofit.AutofitTextView;
  25. import com.ttiglobal.inttilectgpchat.droppy.DroppyClickCallbackInterface;
  26. import com.ttiglobal.inttilectgpchat.droppy.DroppyMenuItem;
  27. import com.ttiglobal.inttilectgpchat.droppy.DroppyMenuPopup;
  28. import com.ttiglobal.inttilectgpchat.droppy.EasyDialog;
  29. import com.ttiglobal.inttilectgpchat.util.ApiService;
  30. import com.ttiglobal.inttilectgpchat.util.GlobalData;
  31. import com.ttiglobal.inttilectgpchat.util.MainApplication;
  32. import com.ttiglobal.inttilectgpchat.util.TransparentProgressDialog;
  33. import com.ttiglobal.inttilectgpchat.util.UtilService;
  34. import com.ttiglobal.inttilectgpchat.wrappers.ErrorResponse;
  35. import com.ttiglobal.inttilectgpchat.wrappers.OrderHistoryResponse;
  36. import com.tylersuehr.esr.EmptyStateRecyclerView;
  37. import com.tylersuehr.esr.TextStateDisplay;
  38. import java.util.Objects;
  39. import jp.wasabeef.recyclerview.animators.SlideInLeftAnimator;
  40. import retrofit2.Call;
  41. import retrofit2.Callback;
  42. import retrofit2.Response;
  43. public class MyWallet extends AppCompatActivity {
  44. TextView title, earnedPoints;
  45. Button purchaseNow;
  46. TransparentProgressDialog progressDialog;
  47. AutofitTextView points, unApprovedPoints;
  48. EmptyStateRecyclerView purchasedList;
  49. LinearLayoutManager linearLayoutManager;
  50. ProgressBar progressBar;
  51. ApiService restService;
  52. public OrderHistoryResponse dataOrderHistory = new OrderHistoryResponse();
  53. int TOTAL_RECORD = 0;
  54. int PAGE = 0;
  55. int LIMIT = 10;
  56. public static Handler.Callback callbackOrderHistory;
  57. public static String strCurrentAmount = "";
  58. ImageView rightMenu;
  59. EasyDialog easyDialog;
  60. DroppyMenuPopup droppyMenu;
  61. @Override
  62. protected void onCreate(Bundle savedInstanceState) {
  63. super.onCreate(savedInstanceState);
  64. setContentView(R.layout.activity_wallet_history);
  65. rightMenu = findViewById(R.id.rightMenu);
  66. restService = ((MainApplication) getApplication()).getClient();
  67. title = findViewById(R.id.title);
  68. points = findViewById(R.id.points);
  69. unApprovedPoints = findViewById(R.id.unApprovedPoints);
  70. FirebaseAnalytics firebaseAnalytics = FirebaseAnalytics.getInstance(this);
  71. Bundle bundle = new Bundle();
  72. /* bundle.putString(FirebaseAnalytics.Param.ITEM_ID, "1");
  73. bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, "MyWalletActivity");
  74. firebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle);*/
  75. // GlobalData.user.getData().setMpin("");
  76. purchaseNow = findViewById(R.id.btn_purchase);
  77. purchasedList = findViewById(R.id.redeemProductList);
  78. purchasedList.setHasFixedSize(true);
  79. purchasedList.setItemAnimator(new SlideInLeftAnimator());
  80. linearLayoutManager = new LinearLayoutManager(MyWallet.this);
  81. purchasedList.setLayoutManager(linearLayoutManager);
  82. purchasedList.addOnScrollListener(recyclerViewOnScrollListener);
  83. callbackOrderHistory = new Handler.Callback() {
  84. @Override
  85. public boolean handleMessage(Message msg) {
  86. getOrderHistory();
  87. return false;
  88. }
  89. };
  90. purchasedList.post(new Runnable() {
  91. @Override
  92. public void run() {
  93. getOrderHistory();
  94. }
  95. });
  96. purchasedList.setStateDisplay(EmptyStateRecyclerView.STATE_EMPTY,
  97. new TextStateDisplay(this, "No data available", ""));
  98. purchaseNow.setOnClickListener(new View.OnClickListener() {
  99. @Override
  100. public void onClick(View v) {
  101. startActivity(new Intent(MyWallet.this, RedeemProductListActivity.class));
  102. }
  103. });
  104. progressBar = findViewById(R.id.progressBar);
  105. Toolbar toolbar = findViewById(R.id.toolbar);
  106. setSupportActionBar(toolbar);
  107. toolbar.setContentInsetStartWithNavigation(0);
  108. toolbar.setTitle("");
  109. Objects.requireNonNull(getSupportActionBar()).setTitle("");
  110. getSupportActionBar().setDisplayHomeAsUpEnabled(true);
  111. getSupportActionBar().setDisplayShowHomeEnabled(true);
  112. @SuppressLint("PrivateResource")
  113. Drawable backArrow = getResources().getDrawable(R.drawable.abc_ic_ab_back_material);
  114. backArrow.setColorFilter(getResources().getColor(R.color.btn_bg_color), PorterDuff.Mode.SRC_ATOP);
  115. getSupportActionBar().setHomeAsUpIndicator(backArrow);
  116. initDroppyMenu();
  117. rightMenu.setOnClickListener(new View.OnClickListener() {
  118. @Override
  119. public void onClick(View v) {
  120. easyDialog = new EasyDialog(MyWallet.this, droppyMenu)
  121. .setLayout(droppyMenu.show())
  122. .setGravity(EasyDialog.GRAVITY_BOTTOM)
  123. .setBackgroundColor(Color.TRANSPARENT, Color.WHITE)
  124. .setLocationByAttachedView(rightMenu)
  125. .setAnimationTranslationShow(EasyDialog.DIRECTION_X, 350,
  126. GlobalData.width, 0)
  127. .setAnimationTranslationDismiss(EasyDialog.DIRECTION_X, 350, 0,
  128. GlobalData.width).setTouchOutsideDismiss(true)
  129. .setMatchParent(false).setMarginLeftAndRight(0, 15)
  130. .setOutsideColor(Color.parseColor("#80000000")).show();
  131. }
  132. });
  133. }
  134. private void initDroppyMenu() {
  135. DroppyMenuPopup.Builder droppyBuilder = new DroppyMenuPopup.Builder(
  136. MyWallet.this, rightMenu);
  137. droppyBuilder.addMenuItem(new DroppyMenuItem("Change Pin", R.mipmap.icon_change_password))
  138. .triggerOnAnchorClick(false);
  139. droppyBuilder.setOnClick(new DroppyClickCallbackInterface() {
  140. @Override
  141. public void call(View v, int id) {
  142. easyDialog.dismiss();
  143. switch (id) {
  144. case 0:
  145. new Handler().postDelayed(new Runnable() {
  146. @Override
  147. public void run() {
  148. Intent i = new Intent(MyWallet.this, OtpActivity.class);
  149. i.putExtra("type", "change");
  150. startActivity(i);
  151. }
  152. }, 300);
  153. break;
  154. }
  155. }
  156. });
  157. droppyMenu = droppyBuilder.build();
  158. }
  159. protected void onResume() {
  160. super.onResume();
  161. if (GlobalData.canLogout) {
  162. finish();
  163. }
  164. }
  165. private RecyclerView.OnScrollListener recyclerViewOnScrollListener = new RecyclerView.OnScrollListener() {
  166. @Override
  167. public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
  168. super.onScrollStateChanged(recyclerView, newState);
  169. }
  170. @Override
  171. public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
  172. super.onScrolled(recyclerView, dx, dy);
  173. int visibleItemCount = linearLayoutManager.getChildCount();
  174. int totalItemCount = linearLayoutManager.getItemCount();
  175. int firstVisibleItemPosition = linearLayoutManager.findFirstVisibleItemPosition();
  176. if (progressBar.getVisibility() != View.VISIBLE) {
  177. if ((visibleItemCount + firstVisibleItemPosition) >= totalItemCount
  178. && firstVisibleItemPosition >= 0
  179. && totalItemCount < TOTAL_RECORD && dataOrderHistory.getData().size() < TOTAL_RECORD) {
  180. PAGE++;
  181. getOrderHistory();
  182. }
  183. }
  184. }
  185. };
  186. private void getOrderHistory() {
  187. if (new UtilService().isNetworkAvailable(this)) {
  188. progressDialog = new TransparentProgressDialog(this);
  189. progressDialog.show();
  190. try {
  191. restService.getOrderHistory(PAGE, LIMIT).enqueue(new Callback<OrderHistoryResponse>() {
  192. @Override
  193. public void onResponse(Call<OrderHistoryResponse> call, Response<OrderHistoryResponse> response) {
  194. dataOrderHistory = response.body();
  195. if (progressDialog != null && progressDialog.isShowing()) {
  196. progressDialog.dismiss();
  197. }
  198. if (dataOrderHistory != null && dataOrderHistory.getStatus() == 200) {
  199. setDataOrderHistory();
  200. } else if (response.body() != null && Objects.requireNonNull(response.body()).getStatus() == 401) {
  201. GlobalData.canLogout = true;
  202. new Handler(HomeActivity.callback).sendEmptyMessage(0);
  203. finish();
  204. } else if (response.body() != null) {
  205. GlobalData.showToast(MyWallet.this, Objects.requireNonNull(response.body()).getMessage(), Toast.LENGTH_SHORT).show();
  206. } else if (response.errorBody() != null) {
  207. Gson gson = new Gson();
  208. ErrorResponse message = gson.fromJson(Objects.requireNonNull(response.errorBody()).charStream(), ErrorResponse.class);
  209. GlobalData.showToast(MyWallet.this, message.getMessage(), Toast.LENGTH_SHORT).show();
  210. if (message.getStatus() == 401) {
  211. GlobalData.canLogout = true;
  212. new Handler(HomeActivity.callback).sendEmptyMessage(0);
  213. finish();
  214. }
  215. }
  216. }
  217. @Override
  218. public void onFailure(Call<OrderHistoryResponse> call, Throwable t) {
  219. if (progressDialog != null && progressDialog.isShowing()) {
  220. progressDialog.dismiss();
  221. }
  222. GlobalData.showToast(MyWallet.this, "Connection Failure, try again!", Toast.LENGTH_SHORT).show();
  223. }
  224. });
  225. } catch (Exception e) {
  226. e.printStackTrace();
  227. }
  228. } else {
  229. GlobalData.showToast(MyWallet.this, "Please check your internet connection", Toast.LENGTH_SHORT).show();
  230. }
  231. }
  232. @Override
  233. public boolean onOptionsItemSelected(MenuItem item) {
  234. if (item.getItemId() == android.R.id.home) {
  235. confirmClose();
  236. }
  237. return super.onOptionsItemSelected(item);
  238. }
  239. private void confirmClose() {
  240. finish();
  241. overridePendingTransition(R.anim.animation_f_enter,
  242. R.anim.animation_f_leave);
  243. }
  244. @Override
  245. public void onBackPressed() {
  246. super.onBackPressed();
  247. this.overridePendingTransition(R.anim.animation_f_enter,
  248. R.anim.animation_f_leave);
  249. }
  250. private void setDataOrderHistory() {
  251. strCurrentAmount = dataOrderHistory.getCurrent_amount();
  252. if (dataOrderHistory != null) {
  253. int totalAmount = 0;
  254. try {
  255. totalAmount = Integer.parseInt(strCurrentAmount);
  256. } catch (NumberFormatException e) {
  257. e.printStackTrace();
  258. }
  259. if (totalAmount > 0) {
  260. purchaseNow.setEnabled(true);
  261. purchaseNow.setAlpha(1f);
  262. }
  263. }
  264. points.setText(dataOrderHistory.getCurrent_amount());
  265. if (dataOrderHistory.getUnapproved_amount() == null)
  266. unApprovedPoints.setText("0");
  267. else
  268. unApprovedPoints.setText("" + dataOrderHistory.getUnapproved_amount());
  269. OrderHistoryAdapter adapter = new OrderHistoryAdapter(this, dataOrderHistory.getData());
  270. purchasedList.setAdapter(adapter);
  271. }
  272. }