X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Fprofiles%2FProfileDetailFragment.java;h=3560831e71945c81bfa12853787693036d119aea;hb=5868b80356285f944f39d5c7485b7378998ce1b2;hp=2e964d1c0977ab864f486b7bf836f97b492e4c45;hpb=c9ccae28951a225ee55a107741250c1a1249aeb3;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/profiles/ProfileDetailFragment.java b/app/src/main/java/net/ktnx/mobileledger/ui/profiles/ProfileDetailFragment.java index 2e964d1c..3560831e 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/profiles/ProfileDetailFragment.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/profiles/ProfileDetailFragment.java @@ -49,6 +49,7 @@ import net.ktnx.mobileledger.ui.HueRingDialog; import net.ktnx.mobileledger.ui.activity.ProfileDetailActivity; import net.ktnx.mobileledger.utils.Colors; +import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import java.net.MalformedURLException; @@ -69,6 +70,8 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue * represents. */ public static final String ARG_ITEM_ID = "item_id"; + @NonNls + private static final String HTTPS_URL_START = "https://"; /** * The dummy content this fragment is presenting. @@ -112,8 +115,7 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue mProfile.removeFromDB(); ArrayList oldList = Data.profiles.getValue(); if (oldList == null) throw new AssertionError(); - ArrayList newList = - (ArrayList) oldList.clone(); + ArrayList newList = new ArrayList<>(oldList); newList.remove(mProfile); Data.profiles.setValue(newList); if (mProfile.equals(Data.profile.getValue())) { @@ -201,8 +203,7 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue mProfile.storeInDB(); final ArrayList profiles = Data.profiles.getValue(); if (profiles == null) throw new AssertionError(); - ArrayList newList = - (ArrayList) profiles.clone(); + ArrayList newList = new ArrayList<>(profiles); newList.add(mProfile); Data.profiles.setValue(newList); MobileLedgerProfile.storeProfilesOrder(); @@ -246,22 +247,6 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue rootView.findViewById(R.id.preferred_accounts_accounts_filter_layout); insecureWarningText = rootView.findViewById(R.id.insecure_scheme_text); - url.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - @Override - public void afterTextChanged(Editable s) { - checkValidity(); - checkInsecureSchemeWithAuth(); - } - }); - useAuthentication.setOnCheckedChangeListener((buttonView, isChecked) -> { debug("profiles", isChecked ? "auth enabled " : "auth disabled"); authParams.setVisibility(isChecked ? View.VISIBLE : View.GONE); @@ -292,7 +277,7 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue } else { profileName.setText(""); - url.setText("https://"); + url.setText(HTTPS_URL_START); postingPermitted.setChecked(true); useAuthentication.setChecked(false); authParams.setVisibility(View.GONE); @@ -302,6 +287,23 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue profileThemeId = -1; } + checkInsecureSchemeWithAuth(); + + url.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + + } + @Override + public void afterTextChanged(Editable s) { + checkInsecureSchemeWithAuth(); + } + }); + final int hue = (profileThemeId == -1) ? Colors.DEFAULT_HUE_DEG : profileThemeId; final int profileColor = Colors.getPrimaryColorForHue(hue); @@ -316,6 +318,31 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue }); return rootView; } + private boolean checkUrlValidity() { + boolean valid = true; + + String val = String.valueOf(url.getText()).trim(); + if (val.isEmpty()) { + valid = false; + urlLayout.setError(getResources().getText(R.string.err_profile_url_empty)); + } + try { + URL url = new URL(val); + String host = url.getHost(); + if (host == null || host.isEmpty()) throw new MalformedURLException("Missing host"); + String protocol = url.getProtocol().toUpperCase(); + if (!protocol.equals("HTTP") && !protocol.equals("HTTPS")) { + valid = false; + urlLayout.setError(getResources().getText(R.string.err_invalid_url)); + } + } + catch (MalformedURLException e) { + valid = false; + urlLayout.setError(getResources().getText(R.string.err_invalid_url)); + } + + return valid; + } private void checkInsecureSchemeWithAuth() { boolean showWarning = false; @@ -353,25 +380,8 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue profileNameLayout.setError(getResources().getText(R.string.err_profile_name_empty)); } - val = String.valueOf(url.getText()).trim(); - if (val.isEmpty()) { - valid = false; - urlLayout.setError(getResources().getText(R.string.err_profile_url_empty)); - } - try { - URL url = new URL(val); - String host = url.getHost(); - if (host == null || host.isEmpty()) throw new MalformedURLException("Missing host"); - String protocol = url.getProtocol().toUpperCase(); - if (!protocol.equals("HTTP") && !protocol.equals("HTTPS")) { - valid = false; - urlLayout.setError(getResources().getText(R.string.err_invalid_url)); - } - } - catch (MalformedURLException e) { - valid = false; - urlLayout.setError(getResources().getText(R.string.err_invalid_url)); - } + if (!checkUrlValidity()) valid = false; + if (useAuthentication.isChecked()) { val = String.valueOf(userName.getText()); if (val.trim().isEmpty()) {