diff --git a/commonui/src/main/res/drawable/ic_edit.xml b/commonui/src/main/res/drawable/ic_edit.xml
new file mode 100644
index 000000000..bf16bd5cc
--- /dev/null
+++ b/commonui/src/main/res/drawable/ic_edit.xml
@@ -0,0 +1,12 @@
+
+
+
diff --git a/commonui/src/main/res/drawable/ic_trash.xml b/commonui/src/main/res/drawable/ic_trash.xml
index 5fdcd6dfe..caa047ad8 100644
--- a/commonui/src/main/res/drawable/ic_trash.xml
+++ b/commonui/src/main/res/drawable/ic_trash.xml
@@ -1,20 +1,12 @@
-
-
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+
diff --git a/commonui/src/main/res/values/strings.xml b/commonui/src/main/res/values/strings.xml
index d1ece3372..c350f1971 100644
--- a/commonui/src/main/res/values/strings.xml
+++ b/commonui/src/main/res/values/strings.xml
@@ -33,6 +33,7 @@
Authentication Error
Cancel
+ Edit
Remove
Are you sure?
diff --git a/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/EditTransferMethodTest.java b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/EditTransferMethodTest.java
new file mode 100644
index 000000000..e1144cdbf
--- /dev/null
+++ b/transfermethodui/src/androidTest/java/com/hyperwallet/android/ui/transfermethod/EditTransferMethodTest.java
@@ -0,0 +1,257 @@
+package com.hyperwallet.android.ui.transfermethod;
+
+import android.app.Instrumentation;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.view.MenuItem;
+import android.widget.ImageButton;
+import android.widget.TextView;
+
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.espresso.IdlingRegistry;
+import androidx.test.espresso.Root;
+import androidx.test.espresso.assertion.ViewAssertions;
+import androidx.test.espresso.matcher.ViewMatchers;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.rule.ActivityTestRule;
+
+import com.hyperwallet.android.model.StatusTransition;
+import com.hyperwallet.android.ui.R;
+import com.hyperwallet.android.ui.common.repository.EspressoIdlingResource;
+import com.hyperwallet.android.ui.common.view.error.DefaultErrorDialogFragment;
+import com.hyperwallet.android.ui.testutils.rule.HyperwalletExternalResourceManager;
+import com.hyperwallet.android.ui.testutils.rule.HyperwalletMockWebServer;
+import com.hyperwallet.android.ui.testutils.util.RecyclerViewCountAssertion;
+import com.hyperwallet.android.ui.transfermethod.repository.TransferMethodRepositoryFactory;
+import com.hyperwallet.android.ui.transfermethod.rule.HyperwalletInsightMockRule;
+import com.hyperwallet.android.ui.transfermethod.view.AddTransferMethodActivity;
+import com.hyperwallet.android.ui.transfermethod.view.ListTransferMethodActivity;
+
+import org.hamcrest.Matchers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.IOException;
+import java.util.concurrent.CountDownLatch;
+
+import static androidx.test.espresso.Espresso.onView;
+import static androidx.test.espresso.action.ViewActions.click;
+import static androidx.test.espresso.action.ViewActions.replaceText;
+import static androidx.test.espresso.action.ViewActions.typeText;
+import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist;
+import static androidx.test.espresso.assertion.ViewAssertions.matches;
+import static androidx.test.espresso.matcher.RootMatchers.isDialog;
+import static androidx.test.espresso.matcher.ViewMatchers.hasDescendant;
+import static androidx.test.espresso.matcher.ViewMatchers.hasSibling;
+import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility;
+import static androidx.test.espresso.matcher.ViewMatchers.withId;
+import static androidx.test.espresso.matcher.ViewMatchers.withParent;
+import static androidx.test.espresso.matcher.ViewMatchers.withText;
+import static com.hyperwallet.android.model.StatusTransition.StatusDefinition.DE_ACTIVATED;
+import static com.hyperwallet.android.ui.common.view.error.DefaultErrorDialogFragment.RESULT_ERROR;
+import static com.hyperwallet.android.ui.testutils.util.EspressoUtils.atPosition;
+import static com.hyperwallet.android.ui.testutils.util.EspressoUtils.nestedScrollTo;
+import static com.hyperwallet.android.ui.testutils.util.EspressoUtils.withDrawable;
+import static java.net.HttpURLConnection.HTTP_BAD_REQUEST;
+import static java.net.HttpURLConnection.HTTP_OK;
+import static java.util.concurrent.TimeUnit.SECONDS;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.allOf;
+import static org.hamcrest.Matchers.instanceOf;
+import static org.hamcrest.Matchers.is;
+
+@RunWith(AndroidJUnit4.class)
+public class EditTransferMethodTest {
+
+ private static final String ACCOUNT_NUMBER = "8017110254";
+ private static final String ROUTING_NUMBER = "211179539";
+
+ @ClassRule
+ public static HyperwalletExternalResourceManager sResourceManager = new HyperwalletExternalResourceManager();
+ @Rule
+ public HyperwalletInsightMockRule mHyperwalletInsightMockRule = new HyperwalletInsightMockRule();
+ @Rule
+ public HyperwalletMockWebServer mMockWebServer = new HyperwalletMockWebServer(8080);
+ @Rule
+ public ActivityTestRule mActivityTestRule =
+ new ActivityTestRule<>(ListTransferMethodActivity.class, true, false);
+
+ @Before
+ public void setup() {
+ mMockWebServer.mockResponse().withHttpResponseCode(HTTP_OK).withBody(sResourceManager
+ .getResourceContent("authentication_token_response.json")).mock();
+ IdlingRegistry.getInstance().register(EspressoIdlingResource.getIdlingResource());
+ }
+
+ @After
+ public void cleanup() {
+ TransferMethodRepositoryFactory.clearInstance();
+ IdlingRegistry.getInstance().unregister(EspressoIdlingResource.getIdlingResource());
+ }
+
+
+ @Test
+ public void testUpdateTransferMethodFragment_verifyUpdateBankAccountTransferMethod() throws InterruptedException {
+ mMockWebServer.mockResponse().withHttpResponseCode(HTTP_OK).withBody(sResourceManager
+ .getResourceContent("transfer_method_list_single_bank_account_response.json")).mock();
+ mMockWebServer.mockResponse().withHttpResponseCode(HTTP_OK).withBody(sResourceManager
+ .getResourceContent("transfer_method_update_bankacount_response.json")).mock();
+
+
+ final CountDownLatch gate = new CountDownLatch(1);
+ final BroadcastReceiver br = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ gate.countDown();
+
+ StatusTransition statusTransition = intent.getParcelableExtra(
+ "hyperwallet-local-broadcast-payload");
+ assertThat("Transition is not valid", statusTransition.getTransition(), is(DE_ACTIVATED));
+ }
+ };
+
+ // run test
+ mActivityTestRule.launchActivity(null);
+ LocalBroadcastManager.getInstance(mActivityTestRule.getActivity().getApplicationContext())
+ .registerReceiver(br, new IntentFilter("ACTION_HYPERWALLET_TRANSFER_METHOD_DEACTIVATED"));
+
+ // assert
+ onView(withId(R.id.toolbar)).check(matches(isDisplayed()));
+ onView(withId(R.id.toolbar))
+ .check(matches(
+ hasDescendant(withText(R.string.mobileTransferMethodsHeader))));
+ onView(withId(R.id.fab)).check(matches(isDisplayed()));
+
+ onView(withId(R.id.list_transfer_method_item)).check(
+ matches(atPosition(0, hasDescendant(withText(R.string.bank_account_font_icon)))));
+ onView(withId(R.id.list_transfer_method_item)).check(
+ matches(atPosition(0, hasDescendant(withText(R.string.bank_account)))));
+ onView(withId(R.id.list_transfer_method_item)).check(
+ matches(atPosition(0, hasDescendant(withText("United States")))));
+ onView(withId(R.id.list_transfer_method_item)).check(
+ matches(atPosition(0, hasDescendant(withText(getEndingIn("1332"))))));
+ onView(withId(R.id.list_transfer_method_item)).check(
+ matches(atPosition(0, hasDescendant(withDrawable(R.drawable.ic_three_dots_16dp)))));
+
+ onView(allOf(instanceOf(ImageButton.class), hasSibling(withText(R.string.bank_account)))).perform(click())
+ .inRoot(Matchers.instanceOf(MenuItem.class));
+ onView(withDrawable(R.drawable.ic_trash)).check(matches(isDisplayed()));
+ onView(withText(R.string.edit)).check(matches(isDisplayed())).perform(click());
+
+ onView(withId(R.id.branchIdLabel)).check(matches(isDisplayed()));
+
+ onView(withId(R.id.branchId)).perform(nestedScrollTo()).check(ViewAssertions.matches(ViewMatchers.isDisplayed()))
+ .check(matches(withText("021000021")));
+
+ onView(ViewMatchers.withId(R.id.branchIdLabel))
+ .check(ViewAssertions.matches(ViewMatchers.isDisplayed()));
+
+ onView(ViewMatchers.withId(R.id.bankAccountId))
+ .perform(nestedScrollTo())
+ .check(ViewAssertions.matches(ViewMatchers.isDisplayed()))
+ .check(matches(withText("****")));
+
+ onView(ViewMatchers.withId(R.id.bankAccountIdLabel))
+ .check(ViewAssertions.matches(ViewMatchers.isDisplayed()));
+
+ // ACCOUNT HOLDER INFO
+ onView(
+ Matchers.allOf(
+ ViewMatchers.withId(R.id.section_header_title),
+ ViewMatchers.withText(R.string.account_holder)
+ )
+ )
+ .perform(nestedScrollTo())
+ .check(ViewAssertions.matches(ViewMatchers.isDisplayed()));
+
+ onView(ViewMatchers.withId(R.id.firstName))
+ .perform(nestedScrollTo())
+ .check(ViewAssertions.matches(ViewMatchers.isDisplayed()))
+ .check(matches(withText("Android Mobile")));
+
+ onView(ViewMatchers.withId(R.id.firstNameLabel))
+ .check(ViewAssertions.matches(ViewMatchers.isDisplayed()));
+
+ onView(ViewMatchers.withId(R.id.middleName))
+ .perform(nestedScrollTo())
+ .check(ViewAssertions.matches(ViewMatchers.isDisplayed()))
+ .check(matches(withText("mobile-qa")));
+
+ onView(ViewMatchers.withId(R.id.middleNameLabel))
+ .check(ViewAssertions.matches(ViewMatchers.isDisplayed()));
+
+ onView(ViewMatchers.withId(R.id.lastName))
+ .perform(nestedScrollTo())
+ .check(ViewAssertions.matches(ViewMatchers.isDisplayed()))
+ .check(matches(withText("UITest")));
+
+ onView(ViewMatchers.withId(R.id.lastNameLabel))
+ .check(ViewAssertions.matches(ViewMatchers.isDisplayed()));
+
+ // ADDRESS
+ onView(
+ Matchers.allOf(
+ ViewMatchers.withId(R.id.section_header_title),
+ ViewMatchers.withText(R.string.address)
+ )
+ ).perform(nestedScrollTo())
+ .check(ViewAssertions.matches(ViewMatchers.isDisplayed()));
+
+ onView(ViewMatchers.withId(R.id.country))
+ .perform(nestedScrollTo())
+ .check(ViewAssertions.matches(ViewMatchers.isDisplayed()))
+ .check(matches(withText("Canada")));
+
+ onView(ViewMatchers.withId(R.id.countryLabel))
+ .check(ViewAssertions.matches(ViewMatchers.isDisplayed()));
+
+ onView(ViewMatchers.withId(R.id.stateProvince))
+ .perform(nestedScrollTo())
+ .check(ViewAssertions.matches(ViewMatchers.isDisplayed()))
+ .check(matches(withText("BC")));
+
+ onView(ViewMatchers.withId(R.id.stateProvinceLabel))
+ .check(ViewAssertions.matches(ViewMatchers.isDisplayed()));
+
+ onView(ViewMatchers.withId(R.id.addressLine1))
+ .perform(nestedScrollTo())
+ .check(ViewAssertions.matches(ViewMatchers.isDisplayed()))
+ .check(matches(withText("475 howe st")));
+
+ onView(ViewMatchers.withId(R.id.addressLine1Label))
+ .check(ViewAssertions.matches(ViewMatchers.isDisplayed()));
+
+ onView(ViewMatchers.withId(R.id.city))
+ .perform(nestedScrollTo())
+ .check(matches(withText("vancouver")))
+ .check(ViewAssertions.matches(ViewMatchers.isDisplayed()));
+
+ onView(ViewMatchers.withId(R.id.cityLabel))
+ .check(ViewAssertions.matches(ViewMatchers.isDisplayed()));
+
+ onView(ViewMatchers.withId(R.id.postalCode))
+ .perform(nestedScrollTo())
+ .check(ViewAssertions.matches(ViewMatchers.isDisplayed()))
+ .check(matches(withText("V6Z1L2")));
+
+ onView(ViewMatchers.withId(R.id.postalCodeLabel))
+ .check(ViewAssertions.matches(ViewMatchers.isDisplayed()));
+
+ }
+
+ private String getEndingIn(String ending) {
+ return String.format(InstrumentationRegistry.getInstrumentation().getTargetContext()
+ .getString(R.string.endingIn), ending);
+ }
+
+}
diff --git a/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/ListTransferMethodActivity.java b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/ListTransferMethodActivity.java
index f81e7a84b..ab11d8e15 100644
--- a/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/ListTransferMethodActivity.java
+++ b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/ListTransferMethodActivity.java
@@ -17,6 +17,7 @@
package com.hyperwallet.android.ui.transfermethod.view;
import static com.hyperwallet.android.ui.common.intent.HyperwalletIntent.SELECT_TRANSFER_METHOD_REQUEST_CODE;
+import static com.hyperwallet.android.ui.common.intent.HyperwalletIntent.UPDATE_TRANSFER_METHOD_REQUEST_CODE;
import static com.hyperwallet.android.ui.transfermethod.view.ListTransferMethodFragment.ARGUMENT_IS_TRANSFER_METHODS_RELOAD_NEEDED;
import android.content.Intent;
@@ -49,7 +50,7 @@ public class ListTransferMethodActivity extends AppCompatActivity implements
ListTransferMethodFragment.OnAddNewTransferMethodSelected,
ListTransferMethodFragment.OnDeactivateTransferMethodNetworkErrorCallback,
ListTransferMethodFragment.OnLoadTransferMethodNetworkErrorCallback,
- ListTransferMethodFragment.OnTransferMethodContextMenuDeletionSelected,
+ ListTransferMethodFragment.OnTransferMethodContextMenuItemSelected,
OnTransferMethodDeactivateCallback, OnNetworkErrorCallback {
public static final String TAG = "transfer-method:list:list-transfer-methods";
@@ -134,6 +135,9 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (fragment != null && fragment.getArguments() != null) {
fragment.getArguments().putBoolean(ARGUMENT_IS_TRANSFER_METHODS_RELOAD_NEEDED, true);
}
+ } else if (requestCode == UPDATE_TRANSFER_METHOD_REQUEST_CODE && resultCode == RESULT_OK) {
+ ActivityUtils.initFragment(this, ListTransferMethodFragment.newInstance(),
+ R.id.list_transfer_method_fragment);
}
}
@@ -177,6 +181,15 @@ public void showConfirmationDialog(@NonNull TransferMethod transferMethod) {
}
}
+ @Override
+ public void invokeTransferMethodEdit(@NonNull TransferMethod transferMethod) {
+ String token = transferMethod.getField(TransferMethod.TransferMethodFields.TOKEN);
+ Intent intent = new Intent(this, UpdateTransferMethodActivity.class);
+ intent.putExtra(UpdateTransferMethodActivity.EXTRA_TRANSFER_METHOD_TOKEN, token);
+ intent.putExtra(UpdateTransferMethodActivity.EXTRA_LOCK_SCREEN_ORIENTATION_TO_PORTRAIT, true);
+ startActivityForResult(intent, UPDATE_TRANSFER_METHOD_REQUEST_CODE);
+ }
+
@Override
public void confirm() {
mRetryCode = RETRY_CONFIRM_DEACTIVATE_TRANSFER_METHOD;
diff --git a/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/ListTransferMethodFragment.java b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/ListTransferMethodFragment.java
index 62290d99b..f5c185311 100644
--- a/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/ListTransferMethodFragment.java
+++ b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/ListTransferMethodFragment.java
@@ -69,7 +69,7 @@ public class ListTransferMethodFragment extends Fragment implements ListTransfer
private View mProgressBar;
private ArrayList mTransferMethodList;
private OnAddNewTransferMethodSelected mOnAddNewTransferMethodSelected;
- private OnTransferMethodContextMenuDeletionSelected mOnTransferMethodContextMenuDeletionSelected;
+ private OnTransferMethodContextMenuItemSelected mOnTransferMethodContextMenuItemSelected;
private OnDeactivateTransferMethodNetworkErrorCallback mOnDeactivateTransferMethodNetworkErrorCallback;
private OnLoadTransferMethodNetworkErrorCallback mOnLoadTransferMethodNetworkErrorCallback;
private boolean mIsTransferMethodsReloadNeeded;
@@ -105,10 +105,10 @@ public void onAttach(Context context) {
}
try {
- mOnTransferMethodContextMenuDeletionSelected = (OnTransferMethodContextMenuDeletionSelected) context;
+ mOnTransferMethodContextMenuItemSelected = (OnTransferMethodContextMenuItemSelected) context;
} catch (ClassCastException e) {
throw new ClassCastException(getActivity().toString() + " must implement "
- + OnTransferMethodContextMenuDeletionSelected.class.getCanonicalName());
+ + OnTransferMethodContextMenuItemSelected.class.getCanonicalName());
}
try {
@@ -144,7 +144,7 @@ public void onViewStateRestored(@Nullable Bundle savedInstanceState) {
mIsTransferMethodsReloadNeeded = true;
}
mListTransferMethodAdapter = new ListTransferMethodAdapter(mTransferMethodList,
- mOnTransferMethodContextMenuDeletionSelected);
+ mOnTransferMethodContextMenuItemSelected);
recyclerView.setAdapter(mListTransferMethodAdapter);
}
@@ -187,7 +187,11 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
public void onResume() {
super.onResume();
mIsTransferMethodsReloadNeeded = getArguments().getBoolean(ARGUMENT_IS_TRANSFER_METHODS_RELOAD_NEEDED, true);
- if (mIsTransferMethodsReloadNeeded) {
+ loadTransferMethodsList(mIsTransferMethodsReloadNeeded);
+ }
+
+ private void loadTransferMethodsList(boolean shouldReload) {
+ if (shouldReload) {
getArguments().putBoolean(ARGUMENT_IS_TRANSFER_METHODS_RELOAD_NEEDED, false);
mPresenter.loadTransferMethods();
} else {
@@ -272,9 +276,11 @@ public void loadTransferMethods() {
mPresenter.loadTransferMethods();
}
- interface OnTransferMethodContextMenuDeletionSelected {
+ interface OnTransferMethodContextMenuItemSelected {
void showConfirmationDialog(@NonNull final TransferMethod transferMethod);
+
+ void invokeTransferMethodEdit(@NonNull final TransferMethod transferMethod);
}
interface OnAddNewTransferMethodSelected {
@@ -294,12 +300,12 @@ interface OnLoadTransferMethodNetworkErrorCallback {
private static class ListTransferMethodAdapter extends RecyclerView.Adapter {
private List mTransferMethodList;
- private OnTransferMethodContextMenuDeletionSelected mOnTransferMethodContextMenuDeletionSelected;
+ private OnTransferMethodContextMenuItemSelected mOnTransferMethodContextMenuItemSelected;
ListTransferMethodAdapter(final List transferMethodList,
- final OnTransferMethodContextMenuDeletionSelected onTransferMethodContextMenuSelection) {
+ final OnTransferMethodContextMenuItemSelected onTransferMethodContextMenuSelection) {
mTransferMethodList = transferMethodList;
- mOnTransferMethodContextMenuDeletionSelected = onTransferMethodContextMenuSelection;
+ mOnTransferMethodContextMenuItemSelected = onTransferMethodContextMenuSelection;
}
@NonNull
@@ -373,18 +379,6 @@ void bind(@NonNull final TransferMethod transferMethod) {
mTransferMethodIdentification.setText(transferMethodIdentification);
}
- // Todo: Remove before code merge. Used for Debugging purpose.
- itemView.setOnClickListener(new OneClickListener() {
- @Override
- public void onOneClick(View v) {
- String token = transferMethod.getField(TransferMethod.TransferMethodFields.TOKEN);
- Intent intent = new Intent(itemView.getContext(), UpdateTransferMethodActivity.class);
- intent.putExtra(UpdateTransferMethodActivity.EXTRA_TRANSFER_METHOD_TOKEN, token);
- intent.putExtra(UpdateTransferMethodActivity.EXTRA_LOCK_SCREEN_ORIENTATION_TO_PORTRAIT, true);
- itemView.getContext().startActivity(intent);
- }
- });
-
mImageButton.setOnClickListener(new View.OnClickListener() {
@Override
@SuppressWarnings("RestrictedApi")
@@ -400,7 +394,10 @@ public void onClick(View v) {
@Override
public boolean onMenuItemClick(MenuItem item) {
if (item.getItemId() == R.id.remove_account_context_option) {
- mOnTransferMethodContextMenuDeletionSelected.showConfirmationDialog(transferMethod);
+ mOnTransferMethodContextMenuItemSelected.showConfirmationDialog(transferMethod);
+ return true;
+ } if (item.getItemId() == R.id.edit_account_context_option) {
+ mOnTransferMethodContextMenuItemSelected.invokeTransferMethodEdit(transferMethod);
return true;
}
return false;
diff --git a/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/UpdateTransferMethodActivity.java b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/UpdateTransferMethodActivity.java
index 6b223c445..7bb47db9c 100644
--- a/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/UpdateTransferMethodActivity.java
+++ b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/UpdateTransferMethodActivity.java
@@ -54,6 +54,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
collapsingToolbar.setCollapsedTitleTextAppearance(titleStyleCollapse);
int titleStyleExpanded = TransferMethodUtils.getAdjustExpandTitleStyle(getTitle().toString());
collapsingToolbar.setExpandedTitleTextAppearance(titleStyleExpanded);
+ getSupportActionBar().setTitle("");
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
diff --git a/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/UpdateTransferMethodFragment.java b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/UpdateTransferMethodFragment.java
index 171a74bda..49ad03ac6 100644
--- a/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/UpdateTransferMethodFragment.java
+++ b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/UpdateTransferMethodFragment.java
@@ -51,6 +51,7 @@
import com.hyperwallet.android.ui.common.insight.HyperwalletInsight;
import com.hyperwallet.android.ui.common.util.ErrorTypes;
import com.hyperwallet.android.ui.common.util.PageGroups;
+import com.hyperwallet.android.ui.common.view.TransferMethodUtils;
import com.hyperwallet.android.ui.transfermethod.TransferMethodLocalBroadcast;
import com.hyperwallet.android.ui.transfermethod.repository.TransferMethodRepositoryFactory;
import com.hyperwallet.android.ui.transfermethod.view.widget.AbstractWidget;
@@ -88,6 +89,7 @@ public class UpdateTransferMethodFragment extends Fragment implements WidgetEven
private TransferMethod mTransferMethod;
private String mTransferMethodToken;
private HashMap mWidgetInputStateHashMap;
+ private boolean isEdited;
/**
* Please do not use this to have instance of UpdateTransferMethodFragment this is reserved for android framework
@@ -158,7 +160,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
mDynamicContainer = view.findViewById(R.id.update_transfer_method_dynamic_container);
mNestedScrollView = view.findViewById(R.id.update_transfer_method_scroll_view);
- mUpdateButtonProgressBar = view.findViewById(R.id.update_transfer_method_progress_bar);
+ mUpdateButtonProgressBar = view.findViewById(R.id.update_transfer_method_button_progress_bar);
mProgressBar = view.findViewById(R.id.update_transfer_method_progress_bar_layout);
mUpdateTransferMethodButton = view.findViewById(R.id.update_transfer_method_button);
@@ -268,12 +270,17 @@ private void triggerUpdate() {
if (view.getTag() instanceof AbstractWidget) {
AbstractWidget widget = (AbstractWidget) view.getTag();
if (widget.isEdited) {
+ isEdited = true;
mTransferMethod.setField(widget.getName(), widget.getValue());
}
}
}
- mPresenter.updateTransferMethod(mTransferMethod);
+ if (isEdited) {
+ mPresenter.updateTransferMethod(mTransferMethod);
+ } else {
+ getActivity().finish();
+ }
}
}
@@ -440,8 +447,8 @@ public void showTransferMethodFields(
TransferMethodConfiguration fields = hyperwalletTransferMethodConfigurationField.getFields();
Locale locale = new Locale.Builder().setRegion(fields.getCountry()).build();
mTransferMethodType = fields.getTransferMethodType();
-// getActivity().getActionBar().setTitle(
-// TransferMethodUtils.getTransferMethodName(getContext(), mTransferMethodType));
+ String transferMethod = TransferMethodUtils.getTransferMethodName(getContext(), mTransferMethodType);
+ ((UpdateTransferMethodActivity) getActivity()).getSupportActionBar().setTitle(transferMethod);
// group
for (FieldGroup group : fields.getFieldGroups()) {
View sectionHeader = LayoutInflater.from(mDynamicContainer.getContext())
diff --git a/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/widget/AbstractWidget.java b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/widget/AbstractWidget.java
index 5d6076f48..0e9cb8311 100644
--- a/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/widget/AbstractWidget.java
+++ b/transfermethodui/src/main/java/com/hyperwallet/android/ui/transfermethod/view/widget/AbstractWidget.java
@@ -167,8 +167,8 @@ public DefaultKeyListener(View focusView, View clearFocusView) {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
+ isEdited = true;
if (event.getAction() == KeyEvent.ACTION_DOWN) {
- isEdited = true;
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_CENTER:
case KeyEvent.KEYCODE_ENTER:
diff --git a/transfermethodui/src/main/res/layout/fragment_update_transfer_method.xml b/transfermethodui/src/main/res/layout/fragment_update_transfer_method.xml
index 568353712..47ee191f6 100644
--- a/transfermethodui/src/main/res/layout/fragment_update_transfer_method.xml
+++ b/transfermethodui/src/main/res/layout/fragment_update_transfer_method.xml
@@ -106,12 +106,12 @@
app:layout_constraintTop_toTopOf="parent" />