From 17e7bd9f1cdb95ed2981ae1e6566f815979d97a4 Mon Sep 17 00:00:00 2001 From: Boriss Melikjan Date: Mon, 30 Jun 2025 19:23:19 +0300 Subject: [PATCH 1/2] MOPPAND-1603: Fix for ConductorNavigator getActivity() NPE crash. --- .../android/signature/update/nfc/NFCView.java | 32 +++++++++++-------- .../conductor/ConductorNavigator.java | 3 ++ 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/ee/ria/DigiDoc/android/signature/update/nfc/NFCView.java b/app/src/main/java/ee/ria/DigiDoc/android/signature/update/nfc/NFCView.java index 28920a7fd..2de19ea81 100644 --- a/app/src/main/java/ee/ria/DigiDoc/android/signature/update/nfc/NFCView.java +++ b/app/src/main/java/ee/ria/DigiDoc/android/signature/update/nfc/NFCView.java @@ -61,7 +61,7 @@ public class NFCView extends LinearLayout implements SignatureAddView { + android.app.Activity activity = navigator.activity(); + if (activity != null) { + nfcCanNotificationDialog = new NotificationDialog(navigator.activity(), + R.string.signature_update_nfc_can_info, R.id.nfcCanNotificationDialog); - handleNFCSupportLayout(); + } - if (AccessibilityUtils.isTalkBackEnabled()) { - AccessibilityUtils.setSingleCharactersContentDescription(canView, getResources().getString(R.string.signature_update_nfc_can)); - AccessibilityUtils.setSingleCharactersContentDescription(pinView, getResources().getString(R.string.signature_update_nfc_pin2)); - AccessibilityUtils.setEditTextCursorToEnd(canView); - AccessibilityUtils.setEditTextCursorToEnd(pinView); - AccessibilityUtils.setTextViewContentDescription(context, true, null, canLabel.getText().toString(), canView); - AccessibilityUtils.setTextViewContentDescription(context, true, null, pinLabel.getText().toString(), pinView); - } - checkInputsValidity(); + handleNFCSupportLayout(); + + if (AccessibilityUtils.isTalkBackEnabled()) { + AccessibilityUtils.setSingleCharactersContentDescription(canView, getResources().getString(R.string.signature_update_nfc_can)); + AccessibilityUtils.setSingleCharactersContentDescription(pinView, getResources().getString(R.string.signature_update_nfc_pin2)); + AccessibilityUtils.setEditTextCursorToEnd(canView); + AccessibilityUtils.setEditTextCursorToEnd(pinView); + AccessibilityUtils.setTextViewContentDescription(context, true, null, canLabel.getText().toString(), canView); + AccessibilityUtils.setTextViewContentDescription(context, true, null, pinLabel.getText().toString(), pinView); + } + checkInputsValidity(); + }); } public NFCView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { diff --git a/app/src/main/java/ee/ria/DigiDoc/android/utils/navigator/conductor/ConductorNavigator.java b/app/src/main/java/ee/ria/DigiDoc/android/utils/navigator/conductor/ConductorNavigator.java index e1efe4965..7ddea67ca 100644 --- a/app/src/main/java/ee/ria/DigiDoc/android/utils/navigator/conductor/ConductorNavigator.java +++ b/app/src/main/java/ee/ria/DigiDoc/android/utils/navigator/conductor/ConductorNavigator.java @@ -163,6 +163,9 @@ public void removeBackButtonClickListener(BackButtonClickListener listener) { @Override public Activity activity() { + if (router == null) { + throw new IllegalStateException("Router is null"); + } Activity activity = router.getActivity(); if (activity == null) { throw new IllegalStateException("Activity is null"); From ec0a8cf9f5b4b3e1ac8e9431041fa0ea23b2c2d4 Mon Sep 17 00:00:00 2001 From: Boriss Melikjan Date: Tue, 1 Jul 2025 16:41:15 +0300 Subject: [PATCH 2/2] MOPPAND-1603: Code review suggestions. --- .../android/signature/update/nfc/NFCView.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/ee/ria/DigiDoc/android/signature/update/nfc/NFCView.java b/app/src/main/java/ee/ria/DigiDoc/android/signature/update/nfc/NFCView.java index 2de19ea81..e92289eaf 100644 --- a/app/src/main/java/ee/ria/DigiDoc/android/signature/update/nfc/NFCView.java +++ b/app/src/main/java/ee/ria/DigiDoc/android/signature/update/nfc/NFCView.java @@ -85,7 +85,7 @@ public NFCView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, post(() -> { android.app.Activity activity = navigator.activity(); if (activity != null) { - nfcCanNotificationDialog = new NotificationDialog(navigator.activity(), + nfcCanNotificationDialog = new NotificationDialog(activity, R.string.signature_update_nfc_can_info, R.id.nfcCanNotificationDialog); } @@ -129,16 +129,18 @@ public boolean positiveButtonEnabled() { @Override protected void onVisibilityChanged(@NonNull View changedView, int visibility) { super.onVisibilityChanged(changedView, visibility); - - if (navigator.activity() instanceof Activity) { - boolean shouldShowCanMessage = ((Activity) navigator.activity()) + android.app.Activity activity = navigator.activity(); + if (activity instanceof Activity) { + boolean shouldShowCanMessage = ((Activity) activity) .getSettingsDataStore() .getShowCanMessage(); if (shouldShowCanMessage && visibility == VISIBLE && isNFCSupported()) { postDelayed(nfcCanNotificationDialog::show, 1000); } else { - nfcCanNotificationDialog.dismiss(); + if (nfcCanNotificationDialog != null) { + nfcCanNotificationDialog.dismiss(); + } } } @@ -156,7 +158,9 @@ public void reset(SignatureUpdateViewModel viewModel) { message.clearFocus(); canView.clearFocus(); pinView.clearFocus(); - nfcCanNotificationDialog.dismiss(); + if (nfcCanNotificationDialog != null) { + nfcCanNotificationDialog.dismiss(); + } } @Override @@ -257,7 +261,8 @@ protected void onDetachedFromWindow() { } private boolean isNFCSupported() { - NfcManager manager = (NfcManager) navigator.activity().getSystemService(Context.NFC_SERVICE); + android.app.Activity activity = navigator.activity(); + NfcManager manager = (NfcManager) activity.getSystemService(Context.NFC_SERVICE); NfcAdapter adapter = manager.getDefaultAdapter(); if (adapter == null || !adapter.isEnabled()) { Timber.log(Log.ERROR, "NFC is not supported on this device");