From 07227ca9bb66a1d6ac3635429ac2643e11529b3b Mon Sep 17 00:00:00 2001 From: moon <56061215+MgKyawLay@users.noreply.github.com> Date: Tue, 31 Mar 2026 12:44:11 +0630 Subject: [PATCH] duel currency in pre-auth --- .../DashboardPreAuthBottomSheet.java | 25 ++++++---- .../DashboardPreAuthCancelBottomSheet.java | 33 ++++++++----- .../ui/dashboard/DashboardTransFragment.java | 40 ++++++++-------- .../kbz/util/CurrencySelectionHelper.java | 46 ++++++++++++++----- 4 files changed, 95 insertions(+), 49 deletions(-) diff --git a/app/src/main/java/com/utsmm/kbz/ui/dashboard/DashboardPreAuthBottomSheet.java b/app/src/main/java/com/utsmm/kbz/ui/dashboard/DashboardPreAuthBottomSheet.java index 9141c61..558fbf4 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/dashboard/DashboardPreAuthBottomSheet.java +++ b/app/src/main/java/com/utsmm/kbz/ui/dashboard/DashboardPreAuthBottomSheet.java @@ -9,12 +9,14 @@ import com.utsmm.kbz.MainViewModel; import com.utsmm.kbz.R; import com.utsmm.kbz.config.Constants; import com.utsmm.kbz.ui.core_viewmodel.SharedViewModel; +import com.utsmm.kbz.util.CurrencySelectionHelper; public class DashboardPreAuthBottomSheet extends DataBindingBottomSheetFragment { private MainViewModel mainViewModel; private SharedViewModel sharedViewModel; + private CurrencySelectionHelper currencySelectionHelper; private static final int hostId = Constants.NAV_HOST_ID; private int routeId; @@ -24,6 +26,7 @@ public class DashboardPreAuthBottomSheet extends DataBindingBottomSheetFragment protected void initViewModel() { mainViewModel = getFragmentScopeViewModel(MainViewModel.class); sharedViewModel = getFragmentScopeViewModel(SharedViewModel.class); + currencySelectionHelper = new CurrencySelectionHelper(this, sharedViewModel); } @Override @@ -52,10 +55,11 @@ public class DashboardPreAuthBottomSheet extends DataBindingBottomSheetFragment } else if (checkTid()) { showDeclineDialog("Please Download Config!"); } else { - sharedViewModel.transactionsType.setValue(TransactionsType.PRE_AUTH_SALE); - - routeId = R.id.action_dashboardPreAuthBottomSheet_to_inputAmountFragment; - safeRouteTo(currentId,routeId,hostId); + showCurrencyChooserForCardFlow(() -> { + sharedViewModel.transactionsType.setValue(TransactionsType.PRE_AUTH_SALE); + routeId = R.id.action_dashboardPreAuthBottomSheet_to_inputAmountFragment; + safeRouteTo(currentId, routeId, hostId); + }); } } @@ -65,10 +69,11 @@ public class DashboardPreAuthBottomSheet extends DataBindingBottomSheetFragment } else if (checkTid()) { showDeclineDialog("Please Download Config!"); } else { - sharedViewModel.transactionsType.setValue(TransactionsType.PRE_AUTH_COMPLETE); - - routeId = R.id.action_dashboardPreAuthBottomSheet_to_inputPasswordFragment; - safeRouteTo(currentId,routeId,hostId); + showCurrencyChooserForCardFlow(() -> { + sharedViewModel.transactionsType.setValue(TransactionsType.PRE_AUTH_COMPLETE); + routeId = R.id.action_dashboardPreAuthBottomSheet_to_inputPasswordFragment; + safeRouteTo(currentId, routeId, hostId); + }); } } @@ -86,4 +91,8 @@ public class DashboardPreAuthBottomSheet extends DataBindingBottomSheetFragment } } } + + private void showCurrencyChooserForCardFlow(Runnable onSelected) { + currencySelectionHelper.showCardCurrencyChooser(onSelected); + } } diff --git a/app/src/main/java/com/utsmm/kbz/ui/dashboard/DashboardPreAuthCancelBottomSheet.java b/app/src/main/java/com/utsmm/kbz/ui/dashboard/DashboardPreAuthCancelBottomSheet.java index 87f0a65..bce7996 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/dashboard/DashboardPreAuthCancelBottomSheet.java +++ b/app/src/main/java/com/utsmm/kbz/ui/dashboard/DashboardPreAuthCancelBottomSheet.java @@ -10,6 +10,7 @@ import com.utsmm.kbz.MainViewModel; import com.utsmm.kbz.R; import com.utsmm.kbz.config.Constants; import com.utsmm.kbz.ui.core_viewmodel.SharedViewModel; +import com.utsmm.kbz.util.CurrencySelectionHelper; public class DashboardPreAuthCancelBottomSheet extends DataBindingBottomSheetFragment { @@ -17,6 +18,7 @@ public class DashboardPreAuthCancelBottomSheet extends DataBindingBottomSheetFra private MainViewModel mainViewModel; private SharedViewModel sharedViewModel; + private CurrencySelectionHelper currencySelectionHelper; private int currentId = R.id.dashboardPreAuthCancelBottomSheet; private int routeId; @@ -26,6 +28,7 @@ public class DashboardPreAuthCancelBottomSheet extends DataBindingBottomSheetFra protected void initViewModel() { mainViewModel = getFragmentScopeViewModel(MainViewModel.class); sharedViewModel = getFragmentScopeViewModel(SharedViewModel.class); + currencySelectionHelper = new CurrencySelectionHelper(this, sharedViewModel); } @Override @@ -61,12 +64,13 @@ public class DashboardPreAuthCancelBottomSheet extends DataBindingBottomSheetFra } else if (checkTid()) { showDeclineDialog("Please Download Config!"); } else { - sharedViewModel.transactionsType.setValue(TransactionsType.PRE_AUTH_VOID); - sharedViewModel.setTransMenu(TransMenu.PRE_AUTH_FULL_VOID); - sharedViewModel.amount.postValue(null); - - routeId = R.id.action_dashboardPreAuthCancelBottomSheet_to_inputPasswordFragment; - safeRouteTo(currentId,routeId,hostId); + showCurrencyChooserForCardFlow(() -> { + sharedViewModel.transactionsType.setValue(TransactionsType.PRE_AUTH_VOID); + sharedViewModel.setTransMenu(TransMenu.PRE_AUTH_FULL_VOID); + sharedViewModel.amount.postValue(null); + routeId = R.id.action_dashboardPreAuthCancelBottomSheet_to_inputPasswordFragment; + safeRouteTo(currentId, routeId, hostId); + }); } } @@ -82,14 +86,19 @@ public class DashboardPreAuthCancelBottomSheet extends DataBindingBottomSheetFra } else if (checkTid()) { showDeclineDialog("Please Download Config!"); } else { - sharedViewModel.transactionsType.setValue(TransactionsType.PRE_AUTH_VOID); - sharedViewModel.setTransMenu(TransMenu.PRE_AUTH_PARTIAL_VOID); - sharedViewModel.amount.postValue(null); - - routeId = R.id.action_dashboardPreAuthCancelBottomSheet_to_inputPasswordFragment; - safeRouteTo(currentId,routeId,hostId); + showCurrencyChooserForCardFlow(() -> { + sharedViewModel.transactionsType.setValue(TransactionsType.PRE_AUTH_VOID); + sharedViewModel.setTransMenu(TransMenu.PRE_AUTH_PARTIAL_VOID); + sharedViewModel.amount.postValue(null); + routeId = R.id.action_dashboardPreAuthCancelBottomSheet_to_inputPasswordFragment; + safeRouteTo(currentId, routeId, hostId); + }); } } } + private void showCurrencyChooserForCardFlow(Runnable onSelected) { + currencySelectionHelper.showCardCurrencyChooser(onSelected); + } + } diff --git a/app/src/main/java/com/utsmm/kbz/ui/dashboard/DashboardTransFragment.java b/app/src/main/java/com/utsmm/kbz/ui/dashboard/DashboardTransFragment.java index c8eb127..30be713 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/dashboard/DashboardTransFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/dashboard/DashboardTransFragment.java @@ -192,14 +192,12 @@ public class DashboardTransFragment extends DataBindingFragment { } else if (checkTid()) { showDeclineDialog("Please Download Config!"); } else { - showCurrencyChooserForCardFlow(() -> { - sharedViewModel.setTransactionsType(TransactionsType.VOID); + sharedViewModel.setTransactionsType(TransactionsType.VOID); // sharedViewModel.transMenu.postValue(TransMenu.TRANSACTIONS); - sharedViewModel.setTransMenu(TransMenu.TRANSACTIONS); + sharedViewModel.setTransMenu(TransMenu.TRANSACTIONS); - routeId = R.id.action_dashboardTransFragment_to_inputPasswordFragment; - safeRouteTo(currentId,routeId,hostId); - }); + routeId = R.id.action_dashboardTransFragment_to_inputPasswordFragment; + safeRouteTo(currentId,routeId,hostId); } } @@ -214,9 +212,11 @@ public class DashboardTransFragment extends DataBindingFragment { } public void onClickRefund() { - sharedViewModel.setTransactionsType(TransactionsType.REFUND); - routeId = R.id.action_dashboardTransFragment_to_inputPasswordFragment; - safeRouteTo(currentId,routeId,hostId); + showCurrencyChooserForCardFlow(() -> { + sharedViewModel.setTransactionsType(TransactionsType.REFUND); + routeId = R.id.action_dashboardTransFragment_to_inputPasswordFragment; + safeRouteTo(currentId, routeId, hostId); + }); } public void onClickPreAuth () { @@ -235,19 +235,23 @@ public class DashboardTransFragment extends DataBindingFragment { } public void onClickPreAuthCancel () { - sharedViewModel.setTransactionsType(TransactionsType.PRE_AUTH_VOID); - sharedViewModel.setTransMenu(TransMenu.PRE_AUTH_FULL_VOID); - sharedViewModel.amount.postValue("0"); // null to 0 -// sharedViewModel.amount.postValue(null); - routeId = R.id.action_dashboardTransFragment_to_inputPasswordFragment; - safeRouteTo(currentId,routeId,hostId); + showCurrencyChooserForCardFlow(() -> { + sharedViewModel.setTransactionsType(TransactionsType.PRE_AUTH_VOID); + sharedViewModel.setTransMenu(TransMenu.PRE_AUTH_FULL_VOID); + sharedViewModel.amount.postValue("0"); // null to 0 +// sharedViewModel.amount.postValue(null); + routeId = R.id.action_dashboardTransFragment_to_inputPasswordFragment; + safeRouteTo(currentId, routeId, hostId); + }); } public void onClickPreAuthComp () { - sharedViewModel.setTransactionsType(TransactionsType.PRE_AUTH_COMPLETE); - routeId = R.id.action_dashboardTransFragment_to_inputPasswordFragment; - safeRouteTo(currentId,routeId,hostId); + showCurrencyChooserForCardFlow(() -> { + sharedViewModel.setTransactionsType(TransactionsType.PRE_AUTH_COMPLETE); + routeId = R.id.action_dashboardTransFragment_to_inputPasswordFragment; + safeRouteTo(currentId, routeId, hostId); + }); } diff --git a/app/src/main/java/com/utsmm/kbz/util/CurrencySelectionHelper.java b/app/src/main/java/com/utsmm/kbz/util/CurrencySelectionHelper.java index b8dd67f..f93197b 100644 --- a/app/src/main/java/com/utsmm/kbz/util/CurrencySelectionHelper.java +++ b/app/src/main/java/com/utsmm/kbz/util/CurrencySelectionHelper.java @@ -22,9 +22,16 @@ import java.util.List; public class CurrencySelectionHelper { + private static boolean globalPrimaryHostCached = false; + private static String globalPrimaryHostName = ""; + private static String globalPrimaryTid = ""; + private static String globalPrimaryMid = ""; + private static String globalPrimaryIp = ""; + private static String globalPrimarySecIp = ""; + private static CurrencyType globalPrimaryCurrency = CurrencyType.MMK; + private final Fragment fragment; private final SharedViewModel sharedViewModel; - private boolean primaryHostCached = false; private String primaryHostName = ""; private String primaryTid = ""; private String primaryMid = ""; @@ -115,18 +122,35 @@ public class CurrencySelectionHelper { } private void cachePrimaryCardHostIfNeeded() { - if (primaryHostCached) { - return; + SystemParamsOperation sp = SystemParamsOperation.getInstance(); + String currentHostName = sp.getHostName(); + String secondaryHostName = sp.getThirdHostName(); + boolean currentIsSecondary = !TextUtils.isEmpty(secondaryHostName) + && secondaryHostName.equals(currentHostName); + + if (!currentIsSecondary) { + globalPrimaryHostName = currentHostName; + globalPrimaryTid = sp.getTerminalId(); + globalPrimaryMid = sp.getMerchantId(); + globalPrimaryIp = sp.getIpAddress(); + globalPrimarySecIp = sp.getSecIpAddress(); + CurrencyType activeCurrency = sp.getCurrencyType(); + globalPrimaryCurrency = activeCurrency == null ? CurrencyType.MMK : activeCurrency; + globalPrimaryHostCached = true; } - primaryHostName = SystemParamsOperation.getInstance().getHostName(); - primaryTid = SystemParamsOperation.getInstance().getTerminalId(); - primaryMid = SystemParamsOperation.getInstance().getMerchantId(); - primaryIp = SystemParamsOperation.getInstance().getIpAddress(); - primarySecIp = SystemParamsOperation.getInstance().getSecIpAddress(); - CurrencyType activeCurrency = SystemParamsOperation.getInstance().getCurrencyType(); - primaryCurrency = activeCurrency == null ? CurrencyType.MMK : activeCurrency; - primaryHostCached = true; + if (!globalPrimaryHostCached) { + CurrencyType activeCurrency = sp.getCurrencyType(); + globalPrimaryCurrency = activeCurrency == null ? CurrencyType.MMK : activeCurrency; + globalPrimaryHostCached = true; + } + + primaryHostName = globalPrimaryHostName; + primaryTid = globalPrimaryTid; + primaryMid = globalPrimaryMid; + primaryIp = globalPrimaryIp; + primarySecIp = globalPrimarySecIp; + primaryCurrency = globalPrimaryCurrency; } private CurrencyType toCurrencyType(String value) {