From 751cae19707c9970b03edd14008c28b2045028ce Mon Sep 17 00:00:00 2001 From: cyBerta Date: Mon, 30 Oct 2023 18:27:28 +0100 Subject: Remove old Provider setup flow. In order to update to Gradle 8, we finally say goodbye to Butterknife. Since the old setup flow UI depends on it (and other dependencies we want to get rid of) it gets removed. --- .../bitmaskclient/base/fragments/EipFragment.java | 48 +++------------------- 1 file changed, 6 insertions(+), 42 deletions(-) (limited to 'app/src/main/java/se/leap/bitmaskclient/base/fragments') diff --git a/app/src/main/java/se/leap/bitmaskclient/base/fragments/EipFragment.java b/app/src/main/java/se/leap/bitmaskclient/base/fragments/EipFragment.java index 670cdfd8..c500b55b 100644 --- a/app/src/main/java/se/leap/bitmaskclient/base/fragments/EipFragment.java +++ b/app/src/main/java/se/leap/bitmaskclient/base/fragments/EipFragment.java @@ -16,21 +16,16 @@ */ package se.leap.bitmaskclient.base.fragments; -import static se.leap.bitmaskclient.R.string.vpn_certificate_user_message; import static se.leap.bitmaskclient.base.models.Constants.ASK_TO_CANCEL_VPN; import static se.leap.bitmaskclient.base.models.Constants.EIP_ACTION_START; import static se.leap.bitmaskclient.base.models.Constants.EIP_EARLY_ROUTES; import static se.leap.bitmaskclient.base.models.Constants.PROVIDER_KEY; -import static se.leap.bitmaskclient.base.models.Constants.REQUEST_CODE_CONFIGURE_LEAP; -import static se.leap.bitmaskclient.base.models.Constants.REQUEST_CODE_LOG_IN; import static se.leap.bitmaskclient.base.models.Constants.REQUEST_CODE_SWITCH_PROVIDER; -import static se.leap.bitmaskclient.base.utils.ConfigHelper.isDefaultBitmask; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getPreferredCity; import static se.leap.bitmaskclient.eip.EipSetupObserver.reconnectingWithDifferentGateway; import static se.leap.bitmaskclient.eip.GatewaysManager.Load.UNKNOWN; import static se.leap.bitmaskclient.providersetup.ProviderAPI.DOWNLOAD_GEOIP_JSON; import static se.leap.bitmaskclient.providersetup.ProviderAPI.UPDATE_INVALID_VPN_CERTIFICATE; -import static se.leap.bitmaskclient.providersetup.ProviderAPI.USER_MESSAGE; import android.app.Activity; import android.content.Context; @@ -46,6 +41,7 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Toast; import androidx.annotation.ColorRes; import androidx.annotation.DrawableRes; @@ -80,10 +76,7 @@ import se.leap.bitmaskclient.eip.EipCommand; import se.leap.bitmaskclient.eip.EipStatus; import se.leap.bitmaskclient.eip.GatewaysManager; import se.leap.bitmaskclient.providersetup.ProviderAPICommand; -import se.leap.bitmaskclient.providersetup.ProviderListActivity; -import se.leap.bitmaskclient.providersetup.activities.CustomProviderSetupActivity; -import se.leap.bitmaskclient.providersetup.activities.LoginActivity; -import se.leap.bitmaskclient.providersetup.models.LeapSRPSession; +import se.leap.bitmaskclient.providersetup.activities.SetupActivity; import se.leap.bitmaskclient.tor.TorServiceCommand; import se.leap.bitmaskclient.tor.TorStatusObservable; @@ -136,14 +129,7 @@ public class EipFragment extends Fragment implements Observer { } private void handleNoProvider(Activity activity) { - if (isDefaultBitmask()) { - activity.startActivityForResult(new Intent(activity, ProviderListActivity.class), REQUEST_CODE_SWITCH_PROVIDER); - } else { - Log.e(TAG, "no provider given - try to reconfigure custom provider"); - startActivityForResult(new Intent(activity, CustomProviderSetupActivity.class), REQUEST_CODE_CONFIGURE_LEAP); - - } - + activity.startActivityForResult(new Intent(activity, SetupActivity.class), REQUEST_CODE_SWITCH_PROVIDER); } @Override @@ -283,11 +269,10 @@ public class EipFragment extends Fragment implements Observer { if (canStartEIP()) { startEipFromScratch(); - } else if (canLogInToStartEIP()) { - askUserToLogIn(getString(vpn_certificate_user_message)); - } else { - // provider has no VpnCertificate but user is logged in + } else if (provider.allowsAnonymous()){ updateInvalidVpnCertificate(); + } else { + Toast.makeText(getContext(), R.string.config_error_found, Toast.LENGTH_LONG).show(); } } @@ -297,12 +282,6 @@ public class EipFragment extends Fragment implements Observer { return (isAllowedAnon || certificateExists) && !eipStatus.isConnected() && !eipStatus.isConnecting(); } - private boolean canLogInToStartEIP() { - boolean isAllowedRegistered = provider.allowsRegistered(); - boolean isLoggedIn = LeapSRPSession.loggedIn(); - return isAllowedRegistered && !isLoggedIn && !eipStatus.isConnecting() && !eipStatus.isConnected(); - } - private void handleSwitchOff() { if (eipStatus.isVPNRunningWithoutNetwork() || eipStatus.isConnecting() || eipStatus.isUpdatingVpnCert()) { askPendingStartCancellation(); @@ -562,7 +541,6 @@ public class EipFragment extends Fragment implements Observer { // eat me } - stateView.setImageResource(drawableRes); stateView.setTag(drawableRes); if (stateView.getDrawable() instanceof Animatable) { @@ -592,20 +570,6 @@ public class EipFragment extends Fragment implements Observer { ProviderAPICommand.execute(getContext(), UPDATE_INVALID_VPN_CERTIFICATE, provider); } - private void askUserToLogIn(String userMessage) { - Intent intent = new Intent(getContext(), LoginActivity.class); - intent.putExtra(PROVIDER_KEY, provider); - - if(userMessage != null) { - intent.putExtra(USER_MESSAGE, userMessage); - } - - Activity activity = getActivity(); - if (activity != null) { - activity.startActivityForResult(intent, REQUEST_CODE_LOG_IN); - } - } - public void showDonationReminderDialog() { try { FragmentTransaction fragmentTransaction = new FragmentManagerEnhanced( -- cgit v1.2.3 From 48cf66f75e91d7bd017277bc249e6cbec0a4a078 Mon Sep 17 00:00:00 2001 From: cyBerta Date: Mon, 30 Oct 2023 18:38:28 +0100 Subject: Replace Butterknife references with ViewBinding --- .../base/fragments/AboutFragment.java | 43 ++++++------------- .../base/fragments/AlwaysOnDialog.java | 48 +++++---------------- .../base/fragments/DonationReminderDialog.java | 49 +++++----------------- .../base/fragments/TetheringDialog.java | 38 ++++------------- 4 files changed, 41 insertions(+), 137 deletions(-) (limited to 'app/src/main/java/se/leap/bitmaskclient/base/fragments') diff --git a/app/src/main/java/se/leap/bitmaskclient/base/fragments/AboutFragment.java b/app/src/main/java/se/leap/bitmaskclient/base/fragments/AboutFragment.java index e92aa703..275dc1c4 100644 --- a/app/src/main/java/se/leap/bitmaskclient/base/fragments/AboutFragment.java +++ b/app/src/main/java/se/leap/bitmaskclient/base/fragments/AboutFragment.java @@ -1,5 +1,9 @@ package se.leap.bitmaskclient.base.fragments; +import static android.view.View.VISIBLE; +import static se.leap.bitmaskclient.R.string.about_fragment_title; +import static se.leap.bitmaskclient.base.utils.ViewHelper.setActionBarSubtitle; + import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.os.Bundle; @@ -7,42 +11,24 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import androidx.appcompat.widget.AppCompatTextView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.Unbinder; import se.leap.bitmaskclient.BuildConfig; import se.leap.bitmaskclient.R; - -import static android.view.View.VISIBLE; -import static se.leap.bitmaskclient.R.string.about_fragment_title; -import static se.leap.bitmaskclient.base.utils.ViewHelper.setActionBarSubtitle; +import se.leap.bitmaskclient.databinding.FAboutBinding; public class AboutFragment extends Fragment { final public static String TAG = AboutFragment.class.getSimpleName(); final public static int VIEWED = 0; - private Unbinder unbinder; - - @BindView(R.id.version) - AppCompatTextView versionTextView; - - @BindView(R.id.terms_of_service) - AppCompatTextView termsOfService; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.f_about, container, false); - unbinder = ButterKnife.bind(this, view); + FAboutBinding binding = FAboutBinding.inflate(inflater); setActionBarSubtitle(this, about_fragment_title); - return view; - } - @Override - public void onStart() { - super.onStart(); String version; String name = "Bitmask"; try { @@ -54,18 +40,13 @@ public class AboutFragment extends Fragment { version = "error fetching version"; } - versionTextView.setText(getString(R.string.version_info, name, version)); + binding.version.setText(getString(R.string.version_info, name, version)); if (BuildConfig.FLAVOR_branding.equals("custom") && hasTermsOfServiceResource()) { - termsOfService.setText(getString(getTermsOfServiceResource())); - termsOfService.setVisibility(VISIBLE); + binding.termsOfService.setText(getString(getTermsOfServiceResource())); + binding.termsOfService.setVisibility(VISIBLE); } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - unbinder.unbind(); + return binding.getRoot(); } private boolean hasTermsOfServiceResource() { diff --git a/app/src/main/java/se/leap/bitmaskclient/base/fragments/AlwaysOnDialog.java b/app/src/main/java/se/leap/bitmaskclient/base/fragments/AlwaysOnDialog.java index e68ba170..faa9950b 100644 --- a/app/src/main/java/se/leap/bitmaskclient/base/fragments/AlwaysOnDialog.java +++ b/app/src/main/java/se/leap/bitmaskclient/base/fragments/AlwaysOnDialog.java @@ -1,26 +1,20 @@ package se.leap.bitmaskclient.base.fragments; +import static se.leap.bitmaskclient.base.utils.PreferenceHelper.saveShowAlwaysOnDialog; + import android.app.Dialog; import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; -import android.widget.CheckBox; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatDialogFragment; -import androidx.appcompat.widget.AppCompatTextView; -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.Unbinder; import se.leap.bitmaskclient.R; -import se.leap.bitmaskclient.base.views.IconTextView; - -import static se.leap.bitmaskclient.base.utils.PreferenceHelper.saveShowAlwaysOnDialog; +import se.leap.bitmaskclient.databinding.DCheckboxConfirmBinding; /** @@ -33,41 +27,24 @@ public class AlwaysOnDialog extends AppCompatDialogFragment { public final static String TAG = AlwaysOnDialog.class.getName(); - @BindView(R.id.do_not_show_again) - CheckBox doNotShowAgainCheckBox; - - @BindView(R.id.user_message) - IconTextView userMessage; - - @BindView(R.id.block_vpn_user_message) - AppCompatTextView blockVpnUserMessage; - - private Unbinder unbinder; - - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + LayoutInflater inflater = getActivity().getLayoutInflater(); - View view = inflater.inflate(R.layout.d_checkbox_confirm, null); - unbinder = ButterKnife.bind(this, view); + DCheckboxConfirmBinding binding = DCheckboxConfirmBinding.inflate(inflater); - userMessage.setIcon(R.drawable.ic_settings); - userMessage.setText(getString(R.string.always_on_vpn_user_message)); + binding.userMessage.setIcon(R.drawable.ic_settings); + binding.userMessage.setText(getString(R.string.always_on_vpn_user_message)); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - blockVpnUserMessage.setVisibility(View.VISIBLE); + binding.blockVpnUserMessage.setVisibility(View.VISIBLE); } - builder.setView(view) + builder.setView(binding.getRoot()) .setPositiveButton(android.R.string.ok, (dialog, id) -> { - if (doNotShowAgainCheckBox.isChecked()) { + if (binding.doNotShowAgain.isChecked()) { saveShowAlwaysOnDialog(false); } Intent intent = new Intent("android.net.vpn.SETTINGS"); @@ -78,9 +55,4 @@ public class AlwaysOnDialog extends AppCompatDialogFragment { return builder.create(); } - @Override - public void onDestroyView() { - super.onDestroyView(); - unbinder.unbind(); - } } diff --git a/app/src/main/java/se/leap/bitmaskclient/base/fragments/DonationReminderDialog.java b/app/src/main/java/se/leap/bitmaskclient/base/fragments/DonationReminderDialog.java index 08346791..6a0a63c5 100644 --- a/app/src/main/java/se/leap/bitmaskclient/base/fragments/DonationReminderDialog.java +++ b/app/src/main/java/se/leap/bitmaskclient/base/fragments/DonationReminderDialog.java @@ -1,5 +1,10 @@ package se.leap.bitmaskclient.base.fragments; +import static se.leap.bitmaskclient.base.models.Constants.DONATION_REMINDER_DURATION; +import static se.leap.bitmaskclient.base.models.Constants.DONATION_URL; +import static se.leap.bitmaskclient.base.models.Constants.ENABLE_DONATION; +import static se.leap.bitmaskclient.base.models.Constants.ENABLE_DONATION_REMINDER; + import android.app.Dialog; import android.content.ActivityNotFoundException; import android.content.Context; @@ -8,59 +13,32 @@ import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; -import android.view.View; -import android.widget.Button; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatDialogFragment; import java.text.ParseException; -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.Unbinder; -import se.leap.bitmaskclient.R; import se.leap.bitmaskclient.base.utils.DateHelper; import se.leap.bitmaskclient.base.utils.PreferenceHelper; - -import static se.leap.bitmaskclient.base.models.Constants.DONATION_REMINDER_DURATION; -import static se.leap.bitmaskclient.base.models.Constants.DONATION_URL; -import static se.leap.bitmaskclient.base.models.Constants.ENABLE_DONATION; -import static se.leap.bitmaskclient.base.models.Constants.ENABLE_DONATION_REMINDER; -import static se.leap.bitmaskclient.base.models.Constants.FIRST_TIME_USER_DATE; -import static se.leap.bitmaskclient.base.models.Constants.LAST_DONATION_REMINDER_DATE; +import se.leap.bitmaskclient.databinding.DonationReminderDialogBinding; public class DonationReminderDialog extends AppCompatDialogFragment { public final static String TAG = DonationReminderDialog.class.getName(); private static boolean isShown = false; - @BindView(R.id.btnDonate) - Button btnDonate; - - @BindView(R.id.btnLater) - Button btnLater; - - private Unbinder unbinder; - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); LayoutInflater inflater = getActivity().getLayoutInflater(); - View view = inflater.inflate(R.layout.donation_reminder_dialog, null); - unbinder = ButterKnife.bind(this, view); + DonationReminderDialogBinding binding = DonationReminderDialogBinding.inflate(inflater); isShown = true; - builder.setView(view); - btnDonate.setOnClickListener(v -> { + builder.setView(binding.getRoot()); + binding.btnDonate.setOnClickListener(v -> { Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(DONATION_URL)); try { startActivity(browserIntent); @@ -70,7 +48,7 @@ public class DonationReminderDialog extends AppCompatDialogFragment { PreferenceHelper.lastDonationReminderDate(DateHelper.getCurrentDateString()); dismiss(); }); - btnLater.setOnClickListener(v -> { + binding.btnLater.setOnClickListener(v -> { PreferenceHelper.lastDonationReminderDate(DateHelper.getCurrentDateString()); dismiss(); }); @@ -78,12 +56,6 @@ public class DonationReminderDialog extends AppCompatDialogFragment { return builder.create(); } - @Override - public void onDestroyView() { - super.onDestroyView(); - unbinder.unbind(); - } - public static boolean isCallable(Context context) { if (isShown) { return false; @@ -97,7 +69,6 @@ public class DonationReminderDialog extends AppCompatDialogFragment { Log.e(TAG, "context is null!"); return false; } - String firstTimeUserDate = PreferenceHelper.getFirstTimeUserDate(); if (firstTimeUserDate == null) { PreferenceHelper.firstTimeUserDate(DateHelper.getCurrentDateString()); diff --git a/app/src/main/java/se/leap/bitmaskclient/base/fragments/TetheringDialog.java b/app/src/main/java/se/leap/bitmaskclient/base/fragments/TetheringDialog.java index eb9d149f..588daa3f 100644 --- a/app/src/main/java/se/leap/bitmaskclient/base/fragments/TetheringDialog.java +++ b/app/src/main/java/se/leap/bitmaskclient/base/fragments/TetheringDialog.java @@ -19,7 +19,6 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatDialogFragment; -import androidx.appcompat.widget.AppCompatTextView; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -28,13 +27,11 @@ import java.util.Observer; import java.util.regex.Matcher; import java.util.regex.Pattern; -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.Unbinder; import de.blinkt.openvpn.core.VpnStatus; import se.leap.bitmaskclient.R; import se.leap.bitmaskclient.base.utils.PreferenceHelper; import se.leap.bitmaskclient.base.views.IconCheckboxEntry; +import se.leap.bitmaskclient.databinding.DListSelectionBinding; import se.leap.bitmaskclient.firewall.FirewallManager; import se.leap.bitmaskclient.tethering.TetheringObservable; @@ -59,17 +56,8 @@ public class TetheringDialog extends AppCompatDialogFragment implements Observer public final static String TAG = TetheringDialog.class.getName(); - @BindView(R.id.tvTitle) - AppCompatTextView title; - - @BindView(R.id.user_message) - AppCompatTextView userMessage; - - @BindView(R.id.selection_list_view) - RecyclerView selectionListView; DialogListAdapter adapter; private DialogListAdapter.ViewModel[] dataset; - private Unbinder unbinder; public static class DialogListAdapter extends RecyclerView.Adapter { @@ -139,21 +127,19 @@ public class TetheringDialog extends AppCompatDialogFragment implements Observer public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); LayoutInflater inflater = getActivity().getLayoutInflater(); - View view = inflater.inflate(R.layout.d_list_selection, null); - unbinder = ButterKnife.bind(this, view); + DListSelectionBinding binding = DListSelectionBinding.inflate(inflater); - title.setText(R.string.tethering); - userMessage.setMovementMethod(LinkMovementMethod.getInstance()); - userMessage.setLinkTextColor(getContext().getResources().getColor(R.color.colorPrimary)); - userMessage.setText(createUserMessage()); + binding.tvTitle.setText(R.string.tethering); + binding.userMessage.setMovementMethod(LinkMovementMethod.getInstance()); + binding.userMessage.setLinkTextColor(getContext().getResources().getColor(R.color.colorPrimary)); + binding.userMessage.setText(createUserMessage()); initDataset(); adapter = new DialogListAdapter(dataset, this::onItemClick); - selectionListView.setAdapter(adapter); - selectionListView.setLayoutManager(new LinearLayoutManager(getActivity())); - + binding.selectionListView.setAdapter(adapter); + binding.selectionListView.setLayoutManager(new LinearLayoutManager(getActivity())); - builder.setView(view) + builder.setView(binding.getRoot()) .setPositiveButton(android.R.string.ok, (dialog, id) -> { PreferenceHelper.allowWifiTethering(dataset[0].checked); PreferenceHelper.allowUsbTethering(dataset[1].checked); @@ -190,12 +176,6 @@ public class TetheringDialog extends AppCompatDialogFragment implements Observer TetheringObservable.getInstance().deleteObserver(this); } - @Override - public void onDestroyView() { - super.onDestroyView(); - unbinder.unbind(); - } - public void onItemClick(DialogListAdapter.ViewModel item) { } -- cgit v1.2.3