diff --git a/app/src/main/java/fr/free/nrw/commons/navtab/MoreBottomSheetFragment.java b/app/src/main/java/fr/free/nrw/commons/navtab/MoreBottomSheetFragment.java index 7de7e15e2f..2fece495ce 100644 --- a/app/src/main/java/fr/free/nrw/commons/navtab/MoreBottomSheetFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/navtab/MoreBottomSheetFragment.java @@ -15,9 +15,6 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.OnClick; import com.google.android.material.bottomsheet.BottomSheetDialogFragment; import fr.free.nrw.commons.AboutActivity; import fr.free.nrw.commons.BuildConfig; @@ -26,11 +23,11 @@ import fr.free.nrw.commons.WelcomeActivity; import fr.free.nrw.commons.actions.PageEditClient; import fr.free.nrw.commons.auth.LoginActivity; +import fr.free.nrw.commons.databinding.FragmentMoreBottomSheetBinding; import fr.free.nrw.commons.di.ApplicationlessInjection; import fr.free.nrw.commons.feedback.FeedbackContentCreator; import fr.free.nrw.commons.feedback.model.Feedback; import fr.free.nrw.commons.feedback.FeedbackDialog; -import fr.free.nrw.commons.feedback.OnFeedbackSubmitCallback; import fr.free.nrw.commons.kvstore.JsonKvStore; import fr.free.nrw.commons.logging.CommonsLogSender; import fr.free.nrw.commons.profile.ProfileActivity; @@ -49,10 +46,8 @@ public class MoreBottomSheetFragment extends BottomSheetDialogFragment { @Inject CommonsLogSender commonsLogSender; - @BindView(R.id.more_profile) - TextView moreProfile; - @BindView((R.id.more_peer_review)) TextView morePeerReview; + private TextView moreProfile; @Inject @Named("default_preferences") JsonKvStore store; @@ -66,20 +61,31 @@ public class MoreBottomSheetFragment extends BottomSheetDialogFragment { public View onCreateView(@NonNull final LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable final Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); - final View view = inflater.inflate(R.layout.fragment_more_bottom_sheet, container, false); - ButterKnife.bind(this, view); + final @NonNull FragmentMoreBottomSheetBinding binding = + FragmentMoreBottomSheetBinding.inflate(inflater, container, false); + moreProfile = binding.moreProfile; + if(store.getBoolean(CommonsApplication.IS_LIMITED_CONNECTION_MODE_ENABLED)){ - morePeerReview.setVisibility(View.GONE); + binding.morePeerReview.setVisibility(View.GONE); } + + binding.moreLogout.setOnClickListener(v -> onLogoutClicked()); + binding.moreFeedback.setOnClickListener(v -> onFeedbackClicked()); + binding.moreAbout.setOnClickListener(v -> onAboutClicked()); + binding.moreTutorial.setOnClickListener(v -> onTutorialClicked()); + binding.moreSettings.setOnClickListener(v -> onSettingsClicked()); + binding.moreProfile.setOnClickListener(v -> onProfileClicked()); + binding.morePeerReview.setOnClickListener(v -> onPeerReviewClicked()); + setUserName(); - return view; + return binding.getRoot(); } @Override public void onAttach(@NonNull final Context context) { super.onAttach(context); ApplicationlessInjection - .getInstance(getActivity().getApplicationContext()) + .getInstance(requireActivity().getApplicationContext()) .getCommonsApplicationComponent() .inject(this); } @@ -102,22 +108,20 @@ private String getUserName(){ } - @OnClick(R.id.more_logout) - public void onLogoutClicked() { - new AlertDialog.Builder(getActivity()) + protected void onLogoutClicked() { + new AlertDialog.Builder(requireActivity()) .setMessage(R.string.logout_verification) .setCancelable(false) .setPositiveButton(R.string.yes, (dialog, which) -> { - BaseLogoutListener logoutListener = new BaseLogoutListener(); - CommonsApplication app = (CommonsApplication) getContext().getApplicationContext(); - app.clearApplicationData(getContext(), logoutListener); + final CommonsApplication app = (CommonsApplication) + requireContext().getApplicationContext(); + app.clearApplicationData(requireContext(), new BaseLogoutListener()); }) .setNegativeButton(R.string.no, (dialog, which) -> dialog.cancel()) .show(); } - @OnClick(R.id.more_feedback) - public void onFeedbackClicked() { + protected void onFeedbackClicked() { showFeedbackDialog(); } @@ -125,19 +129,14 @@ public void onFeedbackClicked() { * Creates and shows a dialog asking feedback from users */ private void showFeedbackDialog() { - new FeedbackDialog(getContext(), new OnFeedbackSubmitCallback() { - @Override - public void onFeedbackSubmit(Feedback feedback) { - uploadFeedback(feedback); - } - }).show(); + new FeedbackDialog(getContext(), this::uploadFeedback).show(); } /** * uploads feedback data on the server */ - void uploadFeedback(Feedback feedback) { - FeedbackContentCreator feedbackContentCreator = new FeedbackContentCreator(getContext(), feedback); + void uploadFeedback(final Feedback feedback) { + final FeedbackContentCreator feedbackContentCreator = new FeedbackContentCreator(getContext(), feedback); Single single = pageEditClient.prependEdit("Commons:Mobile_app/Feedback", feedbackContentCreator.toString(), "Summary") @@ -162,12 +161,10 @@ void uploadFeedback(Feedback feedback) { * This method shows the alert dialog when a user wants to send feedback about the app. */ private void showAlertDialog() { - new AlertDialog.Builder(getActivity()) + new AlertDialog.Builder(requireActivity()) .setMessage(R.string.feedback_sharing_data_alert) .setCancelable(false) - .setPositiveButton(R.string.ok, (dialog, which) -> { - sendFeedback(); - }) + .setPositiveButton(R.string.ok, (dialog, which) -> sendFeedback()) .show(); } @@ -194,32 +191,27 @@ private void sendFeedback() { } } - @OnClick(R.id.more_about) - public void onAboutClicked() { + protected void onAboutClicked() { final Intent intent = new Intent(getActivity(), AboutActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_SINGLE_TOP); - getActivity().startActivity(intent); + requireActivity().startActivity(intent); } - @OnClick(R.id.more_tutorial) - public void onTutorialClicked() { + protected void onTutorialClicked() { WelcomeActivity.startYourself(getActivity()); } - @OnClick(R.id.more_settings) - public void onSettingsClicked() { + protected void onSettingsClicked() { final Intent intent = new Intent(getActivity(), SettingsActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_SINGLE_TOP); - getActivity().startActivity(intent); + requireActivity().startActivity(intent); } - @OnClick(R.id.more_profile) - public void onProfileClicked() { + protected void onProfileClicked() { ProfileActivity.startYourself(getActivity(), getUserName(), false); } - @OnClick(R.id.more_peer_review) - public void onPeerReviewClicked() { + protected void onPeerReviewClicked() { ReviewActivity.startYourself(getActivity(), getString(R.string.title_activity_review)); } @@ -233,7 +225,7 @@ public void onLogoutComplete() { nearbyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); nearbyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(nearbyIntent); - getActivity().finish(); + requireActivity().finish(); } } } diff --git a/app/src/test/kotlin/fr/free/nrw/commons/navtab/MoreBottomSheetFragmentUnitTests.kt b/app/src/test/kotlin/fr/free/nrw/commons/navtab/MoreBottomSheetFragmentUnitTests.kt index ee7c6f57ae..6f863ba354 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/navtab/MoreBottomSheetFragmentUnitTests.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/navtab/MoreBottomSheetFragmentUnitTests.kt @@ -56,9 +56,6 @@ class MoreBottomSheetFragmentUnitTests { @Mock private lateinit var store: JsonKvStore - @Mock - private lateinit var morePeerReview: TextView - @Mock private lateinit var pageEditClient: PageEditClient @@ -76,7 +73,6 @@ class MoreBottomSheetFragmentUnitTests { fragmentTransaction.commitNowAllowingStateLoss() Whitebox.setInternalState(fragment, "store", store) - Whitebox.setInternalState(fragment, "morePeerReview", morePeerReview) Whitebox.setInternalState(fragment, "pageEditClient", pageEditClient) `when`(store.getBoolean(CommonsApplication.IS_LIMITED_CONNECTION_MODE_ENABLED)).thenReturn(