From c94f6071073d02d6907ee5f5d58443be92856ced Mon Sep 17 00:00:00 2001 From: Shashank Kumar <126143257+shashankiitbhu@users.noreply.github.com> Date: Wed, 13 Mar 2024 07:46:55 +0530 Subject: [PATCH] Migrated Contributions Package From Butterknife to ViewBinding (#5593) * Butterknife to ViewBinding * code fix to pass all tests * test fix * test fix * test fix * test fix * Update ContributionsFragmentUnitTests.kt * code cleanup and tests improved * tests fixed * adjustments and code cleanup * adjustments and code cleanup --- .../contributions/ContributionViewHolder.java | 144 ++++++++---------- .../contributions/ContributionsFragment.java | 99 ++++++------ .../commons/media/MediaDetailFragment.java | 2 +- .../categories/UploadCategoriesFragment.java | 2 +- .../upload/depicts/DepictsFragment.java | 2 +- .../ContributionViewHolderUnitTests.kt | 54 +------ .../ContributionsFragmentUnitTests.kt | 14 +- 7 files changed, 127 insertions(+), 190 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionViewHolder.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionViewHolder.java index a7df59462..0a0fa8fbd 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionViewHolder.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionViewHolder.java @@ -12,14 +12,12 @@ import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog.Builder; import androidx.recyclerview.widget.RecyclerView; -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.OnClick; import com.facebook.drawee.view.SimpleDraweeView; import com.facebook.imagepipeline.request.ImageRequest; import com.facebook.imagepipeline.request.ImageRequestBuilder; import fr.free.nrw.commons.R; import fr.free.nrw.commons.contributions.ContributionsListAdapter.Callback; +import fr.free.nrw.commons.databinding.LayoutContributionBinding; import fr.free.nrw.commons.media.MediaClient; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; @@ -29,29 +27,8 @@ import java.io.File; public class ContributionViewHolder extends RecyclerView.ViewHolder { private final Callback callback; - @BindView(R.id.contributionImage) - SimpleDraweeView imageView; - @BindView(R.id.contributionTitle) - TextView titleView; - @BindView(R.id.authorView) - TextView authorView; - @BindView(R.id.contributionState) - TextView stateView; - @BindView(R.id.contributionSequenceNumber) - TextView seqNumView; - @BindView(R.id.contributionProgress) - ProgressBar progressView; - @BindView(R.id.image_options) - RelativeLayout imageOptions; - @BindView(R.id.wikipediaButton) - ImageButton addToWikipediaButton; - @BindView(R.id.retryButton) - ImageButton retryButton; - @BindView(R.id.cancelButton) - ImageButton cancelButton; - @BindView(R.id.pauseResumeButton) - ImageButton pauseResumeButton; + LayoutContributionBinding binding; private int position; private Contribution contribution; @@ -67,9 +44,16 @@ public class ContributionViewHolder extends RecyclerView.ViewHolder { super(parent); this.parent = parent; this.mediaClient = mediaClient; - ButterKnife.bind(this, parent); this.callback = callback; + binding = LayoutContributionBinding.bind(parent); + + binding.retryButton.setOnClickListener(v -> retryUpload()); + binding.cancelButton.setOnClickListener(v -> deleteUpload()); + binding.contributionImage.setOnClickListener(v -> imageClicked()); + binding.wikipediaButton.setOnClickListener(v -> wikipediaButtonClicked()); + binding.pauseResumeButton.setOnClickListener(v -> onPauseResumeButtonClicked()); + /* Set a dialog indicating that the upload is being paused. This is needed because pausing an upload might take a dozen seconds. */ AlertDialog.Builder builder = new Builder(parent.getContext()); @@ -87,14 +71,17 @@ public class ContributionViewHolder extends RecyclerView.ViewHolder { this.contribution = contribution; this.position = position; - titleView.setText(contribution.getMedia().getMostRelevantCaption()); - authorView.setText(contribution.getMedia().getAuthor()); + binding.contributionTitle.setText(contribution.getMedia().getMostRelevantCaption()); + binding.authorView.setText(contribution.getMedia().getAuthor()); //Removes flicker of loading image. - imageView.getHierarchy().setFadeDuration(0); + binding.contributionImage.getHierarchy().setFadeDuration(0); - imageView.getHierarchy().setPlaceholderImage(R.drawable.image_placeholder); - imageView.getHierarchy().setFailureImage(R.drawable.image_placeholder); + binding.contributionImage.getHierarchy().setPlaceholderImage(R.drawable.image_placeholder); + binding.contributionImage.getHierarchy().setFailureImage(R.drawable.image_placeholder); + + + final String imageSource = chooseImageSource(contribution.getMedia().getThumbUrl(), contribution.getLocalUri()); @@ -109,67 +96,67 @@ public class ContributionViewHolder extends RecyclerView.ViewHolder { } if(imageRequest != null){ - imageView.setImageRequest(imageRequest); + binding.contributionImage.setImageRequest(imageRequest); } } - seqNumView.setText(String.valueOf(position + 1)); - seqNumView.setVisibility(View.VISIBLE); + binding.contributionSequenceNumber.setText(String.valueOf(position + 1)); + binding.contributionSequenceNumber.setVisibility(View.VISIBLE); - addToWikipediaButton.setVisibility(View.GONE); + binding.wikipediaButton.setVisibility(View.GONE); switch (contribution.getState()) { case Contribution.STATE_COMPLETED: - stateView.setVisibility(View.GONE); - progressView.setVisibility(View.GONE); - imageOptions.setVisibility(View.GONE); - stateView.setText(""); + binding.contributionState.setVisibility(View.GONE); + binding.contributionProgress.setVisibility(View.GONE); + binding.imageOptions.setVisibility(View.GONE); + binding.contributionState.setText(""); checkIfMediaExistsOnWikipediaPage(contribution); break; case Contribution.STATE_QUEUED: case Contribution.STATE_QUEUED_LIMITED_CONNECTION_MODE: - progressView.setVisibility(View.GONE); - stateView.setVisibility(View.VISIBLE); - stateView.setText(R.string.contribution_state_queued); - imageOptions.setVisibility(View.GONE); + binding.contributionProgress.setVisibility(View.GONE); + binding.contributionState.setVisibility(View.VISIBLE); + binding.contributionState.setText(R.string.contribution_state_queued); + binding.imageOptions.setVisibility(View.GONE); break; case Contribution.STATE_IN_PROGRESS: - stateView.setVisibility(View.GONE); - progressView.setVisibility(View.VISIBLE); - addToWikipediaButton.setVisibility(View.GONE); - pauseResumeButton.setVisibility(View.VISIBLE); - cancelButton.setVisibility(View.GONE); - retryButton.setVisibility(View.GONE); - imageOptions.setVisibility(View.VISIBLE); + binding.contributionState.setVisibility(View.GONE); + binding.contributionProgress.setVisibility(View.VISIBLE); + binding.wikipediaButton.setVisibility(View.GONE); + binding.pauseResumeButton.setVisibility(View.VISIBLE); + binding.cancelButton.setVisibility(View.GONE); + binding.retryButton.setVisibility(View.GONE); + binding.imageOptions.setVisibility(View.VISIBLE); final long total = contribution.getDataLength(); final long transferred = contribution.getTransferred(); if (transferred == 0 || transferred >= total) { - progressView.setIndeterminate(true); + binding.contributionProgress.setIndeterminate(true); } else { - progressView.setIndeterminate(false); - progressView.setProgress((int) (((double) transferred / (double) total) * 100)); + binding.contributionProgress.setIndeterminate(false); + binding.contributionProgress.setProgress((int) (((double) transferred / (double) total) * 100)); } break; case Contribution.STATE_PAUSED: - progressView.setVisibility(View.GONE); - stateView.setVisibility(View.VISIBLE); - stateView.setText(R.string.paused); - cancelButton.setVisibility(View.VISIBLE); - retryButton.setVisibility(View.GONE); - pauseResumeButton.setVisibility(View.VISIBLE); - imageOptions.setVisibility(View.VISIBLE); + binding.contributionProgress.setVisibility(View.GONE); + binding.contributionState.setVisibility(View.VISIBLE); + binding.contributionState.setText(R.string.paused); + binding.cancelButton.setVisibility(View.VISIBLE); + binding.retryButton.setVisibility(View.GONE); + binding.pauseResumeButton.setVisibility(View.VISIBLE); + binding.imageOptions.setVisibility(View.VISIBLE); setResume(); if(pausingPopUp.isShowing()){ pausingPopUp.hide(); } break; case Contribution.STATE_FAILED: - stateView.setVisibility(View.VISIBLE); - stateView.setText(R.string.contribution_state_failed); - progressView.setVisibility(View.GONE); - cancelButton.setVisibility(View.VISIBLE); - retryButton.setVisibility(View.VISIBLE); - pauseResumeButton.setVisibility(View.GONE); - imageOptions.setVisibility(View.VISIBLE); + binding.contributionState.setVisibility(View.VISIBLE); + binding.contributionState.setText(R.string.contribution_state_failed); + binding.contributionProgress.setVisibility(View.GONE); + binding.cancelButton.setVisibility(View.VISIBLE); + binding.retryButton.setVisibility(View.VISIBLE); + binding.pauseResumeButton.setVisibility(View.GONE); + binding.imageOptions.setVisibility(View.VISIBLE); break; } } @@ -203,11 +190,11 @@ public class ContributionViewHolder extends RecyclerView.ViewHolder { */ private void displayWikipediaButton(Boolean mediaExists) { if (!mediaExists) { - addToWikipediaButton.setVisibility(View.VISIBLE); + binding.wikipediaButton.setVisibility(View.VISIBLE); isWikipediaButtonDisplayed = true; - cancelButton.setVisibility(View.GONE); - retryButton.setVisibility(View.GONE); - imageOptions.setVisibility(View.VISIBLE); + binding.cancelButton.setVisibility(View.GONE); + binding.retryButton.setVisibility(View.GONE); + binding.imageOptions.setVisibility(View.VISIBLE); } } @@ -229,7 +216,6 @@ public class ContributionViewHolder extends RecyclerView.ViewHolder { /** * Retry upload when it is failed */ - @OnClick(R.id.retryButton) public void retryUpload() { callback.retryUpload(contribution); } @@ -237,17 +223,14 @@ public class ContributionViewHolder extends RecyclerView.ViewHolder { /** * Delete a failed upload attempt */ - @OnClick(R.id.cancelButton) public void deleteUpload() { callback.deleteUpload(contribution); } - @OnClick(R.id.contributionImage) public void imageClicked() { callback.openMediaDetail(position, isWikipediaButtonDisplayed); } - @OnClick(R.id.wikipediaButton) public void wikipediaButtonClicked() { callback.addImageToWikipedia(contribution); } @@ -255,9 +238,8 @@ public class ContributionViewHolder extends RecyclerView.ViewHolder { /** * Triggers a callback for pause/resume */ - @OnClick(R.id.pauseResumeButton) public void onPauseResumeButtonClicked() { - if (pauseResumeButton.getTag().toString().equals("pause")) { + if (binding.pauseResumeButton.getTag().toString().equals("pause")) { pause(); } else { resume(); @@ -279,16 +261,16 @@ public class ContributionViewHolder extends RecyclerView.ViewHolder { * Update pause/resume button to show pause state */ private void setPaused() { - pauseResumeButton.setImageResource(R.drawable.pause_icon); - pauseResumeButton.setTag(parent.getContext().getString(R.string.pause)); + binding.pauseResumeButton.setImageResource(R.drawable.pause_icon); + binding.pauseResumeButton.setTag(parent.getContext().getString(R.string.pause)); } /** * Update pause/resume button to show resume state */ private void setResume() { - pauseResumeButton.setImageResource(R.drawable.play_icon); - pauseResumeButton.setTag(parent.getContext().getString(R.string.resume)); + binding.pauseResumeButton.setImageResource(R.drawable.play_icon); + binding.pauseResumeButton.setTag(parent.getContext().getString(R.string.resume)); } public ImageRequest getImageRequest() { diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java index 9b66556fc..7c2520390 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java @@ -39,6 +39,7 @@ import androidx.fragment.app.FragmentTransaction; import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.Utils; import fr.free.nrw.commons.auth.SessionManager; +import fr.free.nrw.commons.databinding.FragmentContributionsBinding; import fr.free.nrw.commons.notification.models.Notification; import fr.free.nrw.commons.notification.NotificationController; import fr.free.nrw.commons.profile.ProfileActivity; @@ -49,8 +50,6 @@ import java.util.Map; import javax.inject.Inject; import javax.inject.Named; import androidx.work.WorkManager; -import butterknife.BindView; -import butterknife.ButterKnife; import fr.free.nrw.commons.Media; import fr.free.nrw.commons.R; import fr.free.nrw.commons.campaigns.models.Campaign; @@ -106,10 +105,8 @@ public class ContributionsFragment static final String MEDIA_DETAIL_PAGER_FRAGMENT_TAG = "MediaDetailFragmentTag"; private static final int MAX_RETRIES = 10; - @BindView(R.id.card_view_nearby) public NearbyNotificationCardView nearbyNotificationCardView; - @BindView(R.id.campaigns_view) CampaignView campaignView; - @BindView(R.id.limited_connection_enabled_layout) LinearLayout limitedConnectionEnabledLayout; - @BindView(R.id.limited_connection_description_text_view) TextView limitedConnectionDescriptionTextView; + + public FragmentContributionsBinding binding; @Inject ContributionsPresenter contributionsPresenter; @@ -147,7 +144,7 @@ public class ContributionsFragment && store.getBoolean("displayLocationPermissionForCardView", true) && !store.getBoolean("doNotAskForLocationPermission", false) && (((MainActivity) getActivity()).activeFragment == ActiveFragment.CONTRIBUTIONS)) { - nearbyNotificationCardView.permissionType = NearbyNotificationCardView.PermissionType.ENABLE_LOCATION_PERMISSION; + binding.cardViewNearby.permissionType = NearbyNotificationCardView.PermissionType.ENABLE_LOCATION_PERMISSION; showNearbyCardPermissionRationale(); } else { displayYouWontSeeNearbyMessage(); @@ -179,12 +176,13 @@ public class ContributionsFragment @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_contributions, container, false); - ButterKnife.bind(this, view); + + binding = FragmentContributionsBinding.inflate(inflater, container, false); + initWLMCampaign(); presenter.onAttachView(this); contributionsPresenter.onAttachView(this); - campaignView.setVisibility(View.GONE); + binding.campaignsView.setVisibility(View.GONE); checkBoxView = View.inflate(getActivity(), R.layout.nearby_permission_dialog, null); checkBox = (CheckBox) checkBoxView.findViewById(R.id.never_ask_again); checkBox.setOnCheckedChangeListener((buttonView, isChecked) -> { @@ -204,7 +202,7 @@ public class ContributionsFragment initFragments(); if(isUserProfile) { - limitedConnectionEnabledLayout.setVisibility(View.GONE); + binding.limitedConnectionEnabledLayout.setVisibility(View.GONE); }else { upDateUploadCount(); } @@ -221,9 +219,9 @@ public class ContributionsFragment && sessionManager.getCurrentAccount() != null && !isUserProfile) { setUploadCount(); } - limitedConnectionEnabledLayout.setOnClickListener(toggleDescriptionListener); + binding.limitedConnectionEnabledLayout.setOnClickListener(toggleDescriptionListener); setHasOptionsMenu(true); - return view; + return binding.getRoot(); } /** @@ -283,22 +281,17 @@ public class ContributionsFragment .getBoolean(CommonsApplication.IS_LIMITED_CONNECTION_MODE_ENABLED, false); checkable.setChecked(isEnabled); - if (isEnabled) { - limitedConnectionEnabledLayout.setVisibility(View.VISIBLE); - } else { - limitedConnectionEnabledLayout.setVisibility(View.GONE); + if (binding!=null) { + binding.limitedConnectionEnabledLayout.setVisibility(isEnabled ? View.VISIBLE : View.GONE); } + checkable.setIcon((isEnabled) ? R.drawable.ic_baseline_cloud_off_24:R.drawable.ic_baseline_cloud_queue_24); checkable.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { ((MainActivity) getActivity()).toggleLimitedConnectionMode(); boolean isEnabled = store.getBoolean(CommonsApplication.IS_LIMITED_CONNECTION_MODE_ENABLED, false); - if (isEnabled) { - limitedConnectionEnabledLayout.setVisibility(View.VISIBLE); - } else { - limitedConnectionEnabledLayout.setVisibility(View.GONE); - } + binding.limitedConnectionEnabledLayout.setVisibility(isEnabled ? View.VISIBLE : View.GONE); checkable.setIcon((isEnabled) ? R.drawable.ic_baseline_cloud_off_24:R.drawable.ic_baseline_cloud_queue_24); return false; } @@ -326,14 +319,14 @@ public class ContributionsFragment */ private void showContributionsListFragment() { // show nearby card view on contributions list is visible - if (nearbyNotificationCardView != null && !isUserProfile) { + if (binding.cardViewNearby != null && !isUserProfile) { if (store.getBoolean("displayNearbyCardView", true)) { - if (nearbyNotificationCardView.cardViewVisibilityState + if (binding.cardViewNearby.cardViewVisibilityState == NearbyNotificationCardView.CardViewVisibilityState.READY) { - nearbyNotificationCardView.setVisibility(View.VISIBLE); + binding.cardViewNearby.setVisibility(View.VISIBLE); } } else { - nearbyNotificationCardView.setVisibility(View.GONE); + binding.cardViewNearby.setVisibility(View.GONE); } } showFragment(contributionsListFragment, CONTRIBUTION_LIST_FRAGMENT_TAG, mediaDetailPagerFragment); @@ -346,8 +339,9 @@ public class ContributionsFragment } private void setupViewForMediaDetails() { - campaignView.setVisibility(View.GONE); - nearbyNotificationCardView.setVisibility(View.GONE); + if (binding!=null) { + binding.campaignsView.setVisibility(View.GONE); + } } @Override @@ -453,7 +447,12 @@ public class ContributionsFragment super.onResume(); contributionsPresenter.onAttachView(this); locationManager.addLocationListener(this); - nearbyNotificationCardView.permissionRequestButton.setOnClickListener(v -> { + + if (binding==null) { + return; + } + + binding.cardViewNearby.permissionRequestButton.setOnClickListener(v -> { showNearbyCardPermissionRationale(); }); @@ -468,13 +467,13 @@ public class ContributionsFragment } catch (Exception e) { Timber.e(e); } - if (nearbyNotificationCardView.cardViewVisibilityState == NearbyNotificationCardView.CardViewVisibilityState.READY) { - nearbyNotificationCardView.setVisibility(View.VISIBLE); + if (binding.cardViewNearby.cardViewVisibilityState == NearbyNotificationCardView.CardViewVisibilityState.READY) { + binding.cardViewNearby.setVisibility(View.VISIBLE); } } else { // Hide nearby notification card view if related shared preferences is false - nearbyNotificationCardView.setVisibility(View.GONE); + binding.cardViewNearby.setVisibility(View.GONE); } // Notification Count and Campaigns should not be set, if it is used in User Profile @@ -493,7 +492,7 @@ public class ContributionsFragment && store.getBoolean("displayLocationPermissionForCardView", true) && !store.getBoolean("doNotAskForLocationPermission", false) && (((MainActivity) getActivity()).activeFragment == ActiveFragment.CONTRIBUTIONS)) { - nearbyNotificationCardView.permissionType = NearbyNotificationCardView.PermissionType.ENABLE_LOCATION_PERMISSION; + binding.cardViewNearby.permissionType = NearbyNotificationCardView.PermissionType.ENABLE_LOCATION_PERMISSION; showNearbyCardPermissionRationale(); } } @@ -503,7 +502,7 @@ public class ContributionsFragment } private void onLocationPermissionGranted() { - nearbyNotificationCardView.permissionType = NearbyNotificationCardView.PermissionType.NO_PERMISSION_NEEDED; + binding.cardViewNearby.permissionType = NearbyNotificationCardView.PermissionType.NO_PERMISSION_NEEDED; locationManager.registerLocationManager(); } @@ -548,21 +547,21 @@ public class ContributionsFragment } if(closestNearbyPlace == null) { - nearbyNotificationCardView.setVisibility(View.GONE); + binding.cardViewNearby.setVisibility(View.GONE); }else{ String distance = formatDistanceBetween(curLatLng, closestNearbyPlace.location); closestNearbyPlace.setDistance(distance); direction = (float) computeBearing(curLatLng, closestNearbyPlace.location); - nearbyNotificationCardView.updateContent(closestNearbyPlace); + binding.cardViewNearby.updateContent(closestNearbyPlace); } } else { // Means that no close nearby place is found - nearbyNotificationCardView.setVisibility(View.GONE); + binding.cardViewNearby.setVisibility(View.GONE); } // Prevent Nearby banner from appearing in Media Details, fixing bug https://github.com/commons-app/apps-android-commons/issues/4731 if (mediaDetailPagerFragment != null && !contributionsListFragment.isVisible()) { - nearbyNotificationCardView.setVisibility(View.GONE); + binding.cardViewNearby.setVisibility(View.GONE); } } @@ -614,12 +613,16 @@ public class ContributionsFragment */ private void fetchCampaigns() { if (Utils.isMonumentsEnabled(new Date())) { - campaignView.setCampaign(wlmCampaign); - campaignView.setVisibility(View.VISIBLE); + if (binding!=null) { + binding.campaignsView.setCampaign(wlmCampaign); + binding.campaignsView.setVisibility(View.VISIBLE); + } } else if (store.getBoolean(CampaignView.CAMPAIGNS_DEFAULT_PREFERENCE, true)) { presenter.getCampaigns(); } else { - campaignView.setVisibility(View.GONE); + if (binding!=null) { + binding.campaignsView.setVisibility(View.GONE); + } } } @@ -629,7 +632,9 @@ public class ContributionsFragment @Override public void showCampaigns(Campaign campaign) { if (campaign != null && !isUserProfile) { - campaignView.setCampaign(campaign); + if (binding!=null) { + binding.campaignsView.setCampaign(campaign); + } } } @@ -746,11 +751,11 @@ public class ContributionsFragment public boolean backButtonClicked() { if (mediaDetailPagerFragment != null && mediaDetailPagerFragment.isVisible()) { if (store.getBoolean("displayNearbyCardView", true) && !isUserProfile) { - if (nearbyNotificationCardView.cardViewVisibilityState == NearbyNotificationCardView.CardViewVisibilityState.READY) { - nearbyNotificationCardView.setVisibility(View.VISIBLE); + if (binding.cardViewNearby.cardViewVisibilityState == NearbyNotificationCardView.CardViewVisibilityState.READY) { + binding.cardViewNearby.setVisibility(View.VISIBLE); } } else { - nearbyNotificationCardView.setVisibility(View.GONE); + binding.cardViewNearby.setVisibility(View.GONE); } removeFragment(mediaDetailPagerFragment); showFragment(contributionsListFragment, CONTRIBUTION_LIST_FRAGMENT_TAG, mediaDetailPagerFragment); @@ -812,7 +817,7 @@ public class ContributionsFragment @Override public void onClick(View view) { - View view2 = limitedConnectionDescriptionTextView; + View view2 = binding.limitedConnectionDescriptionTextView; if (view2.getVisibility() == View.GONE) { view2.setVisibility(View.VISIBLE); } else { @@ -827,7 +832,7 @@ public class ContributionsFragment @Override public void onSensorChanged(SensorEvent event) { float rotateDegree = Math.round(event.values[0]); - nearbyNotificationCardView.rotateCompass(rotateDegree, direction); + binding.cardViewNearby.rotateCompass(rotateDegree, direction); } @Override diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index 44d3f0908..bb2da3fe2 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -428,7 +428,7 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment implements // in the case when MediaDetailPagerFragment is directly started by the CategoryImagesActivity if (getParentFragment() instanceof ContributionsFragment) { ((ContributionsFragment) (getParentFragment() - .getParentFragment())).nearbyNotificationCardView + .getParentFragment())).binding.cardViewNearby .setVisibility(View.GONE); } } diff --git a/app/src/main/java/fr/free/nrw/commons/upload/categories/UploadCategoriesFragment.java b/app/src/main/java/fr/free/nrw/commons/upload/categories/UploadCategoriesFragment.java index bbe1a5a31..8e771e654 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/categories/UploadCategoriesFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/categories/UploadCategoriesFragment.java @@ -374,7 +374,7 @@ public class UploadCategoriesFragment extends UploadBaseFragment implements Cate if (getParentFragment().getParentFragment().getParentFragment() instanceof ContributionsFragment) { ((ContributionsFragment) (getParentFragment() - .getParentFragment().getParentFragment())).nearbyNotificationCardView + .getParentFragment().getParentFragment())).binding.cardViewNearby .setVisibility(View.GONE); } } diff --git a/app/src/main/java/fr/free/nrw/commons/upload/depicts/DepictsFragment.java b/app/src/main/java/fr/free/nrw/commons/upload/depicts/DepictsFragment.java index 0e385014c..99542635c 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/depicts/DepictsFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/depicts/DepictsFragment.java @@ -404,7 +404,7 @@ public class DepictsFragment extends UploadBaseFragment implements DepictsContra if (getParentFragment().getParentFragment().getParentFragment() instanceof ContributionsFragment) { ((ContributionsFragment) (getParentFragment() - .getParentFragment().getParentFragment())).nearbyNotificationCardView + .getParentFragment().getParentFragment())).binding.cardViewNearby .setVisibility(View.GONE); } } diff --git a/app/src/test/kotlin/fr/free/nrw/commons/contributions/ContributionViewHolderUnitTests.kt b/app/src/test/kotlin/fr/free/nrw/commons/contributions/ContributionViewHolderUnitTests.kt index a158c949e..d1b82e8ba 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/contributions/ContributionViewHolderUnitTests.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/contributions/ContributionViewHolderUnitTests.kt @@ -16,6 +16,7 @@ import fr.free.nrw.commons.Media import fr.free.nrw.commons.R import fr.free.nrw.commons.TestCommonsApplication import fr.free.nrw.commons.TestUtility.setFinalStatic +import fr.free.nrw.commons.databinding.LayoutContributionBinding import fr.free.nrw.commons.media.MediaClient import fr.free.nrw.commons.profile.ProfileActivity import io.reactivex.disposables.CompositeDisposable @@ -46,17 +47,6 @@ class ContributionViewHolderUnitTests { private lateinit var contributionViewHolder: ContributionViewHolder private lateinit var activity: ProfileActivity private lateinit var parent: View - private lateinit var pauseResumeButton: ImageButton - private lateinit var addToWikipediaButton: ImageButton - private lateinit var cancelButton: ImageButton - private lateinit var retryButton: ImageButton - private lateinit var imageOptions: RelativeLayout - private lateinit var imageView: SimpleDraweeView - private lateinit var titleView: TextView - private lateinit var authorView: TextView - private lateinit var stateView: TextView - private lateinit var seqNumView: TextView - private lateinit var progressView: ProgressBar @Mock private lateinit var callback: ContributionsListAdapter.Callback @@ -76,6 +66,8 @@ class ContributionViewHolderUnitTests { @Mock private lateinit var media: Media + private lateinit var bindind : LayoutContributionBinding + @Before fun setUp() { MockitoAnnotations.initMocks(this) @@ -85,42 +77,10 @@ class ContributionViewHolderUnitTests { parent = LayoutInflater.from(activity).inflate(R.layout.layout_contribution, null) contributionViewHolder = ContributionViewHolder(parent, callback, mediaClient) - pauseResumeButton = parent.findViewById(R.id.pauseResumeButton) - Whitebox.setInternalState(contributionViewHolder, "pauseResumeButton", pauseResumeButton) + bindind = LayoutContributionBinding.bind(parent) - addToWikipediaButton = parent.findViewById(R.id.wikipediaButton) - Whitebox.setInternalState( - contributionViewHolder, - "addToWikipediaButton", - addToWikipediaButton - ) + Whitebox.setInternalState(contributionViewHolder, "binding", bindind) - cancelButton = parent.findViewById(R.id.cancelButton) - Whitebox.setInternalState(contributionViewHolder, "cancelButton", cancelButton) - - retryButton = parent.findViewById(R.id.retryButton) - Whitebox.setInternalState(contributionViewHolder, "retryButton", retryButton) - - imageOptions = parent.findViewById(R.id.image_options) - Whitebox.setInternalState(contributionViewHolder, "imageOptions", imageOptions) - - imageView = parent.findViewById(R.id.contributionImage) - Whitebox.setInternalState(contributionViewHolder, "imageView", imageView) - - titleView = parent.findViewById(R.id.contributionTitle) - Whitebox.setInternalState(contributionViewHolder, "titleView", titleView) - - authorView = parent.findViewById(R.id.authorView) - Whitebox.setInternalState(contributionViewHolder, "authorView", authorView) - - stateView = parent.findViewById(R.id.contributionState) - Whitebox.setInternalState(contributionViewHolder, "stateView", stateView) - - seqNumView = parent.findViewById(R.id.contributionSequenceNumber) - Whitebox.setInternalState(contributionViewHolder, "seqNumView", seqNumView) - - progressView = parent.findViewById(R.id.contributionProgress) - Whitebox.setInternalState(contributionViewHolder, "progressView", progressView) setFinalStatic( ContributionViewHolder::class.java.getDeclaredField("compositeDisposable"), compositeDisposable) @@ -185,7 +145,7 @@ class ContributionViewHolderUnitTests { @Test @Throws(Exception::class) fun testOnPauseResumeButtonClickedCaseFalse() { - pauseResumeButton.tag = "" + bindind.pauseResumeButton.tag = "" contributionViewHolder.onPauseResumeButtonClicked() } @@ -356,4 +316,4 @@ class ContributionViewHolderUnitTests { contributionViewHolder.init(0, contribution) Assert.assertNotNull(contributionViewHolder.imageRequest) } -} \ No newline at end of file +} diff --git a/app/src/test/kotlin/fr/free/nrw/commons/contributions/ContributionsFragmentUnitTests.kt b/app/src/test/kotlin/fr/free/nrw/commons/contributions/ContributionsFragmentUnitTests.kt index 2bf6e7c08..10579c20e 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/contributions/ContributionsFragmentUnitTests.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/contributions/ContributionsFragmentUnitTests.kt @@ -15,6 +15,7 @@ import fr.free.nrw.commons.TestCommonsApplication import fr.free.nrw.commons.createTestClient import fr.free.nrw.commons.campaigns.CampaignView import fr.free.nrw.commons.campaigns.models.Campaign +import fr.free.nrw.commons.databinding.FragmentContributionsBinding import fr.free.nrw.commons.kvstore.JsonKvStore import fr.free.nrw.commons.media.MediaDetailPagerFragment import fr.free.nrw.commons.mwapi.OkHttpJsonApiClient @@ -120,21 +121,10 @@ class ContributionsFragmentUnitTests { Whitebox.setInternalState(fragment, "contributionsListFragment", contributionsListFragment) Whitebox.setInternalState(fragment, "store", store) - Whitebox.setInternalState( - fragment, - "limitedConnectionEnabledLayout", - limitedConnectionEnabledLayout - ) Whitebox.setInternalState(fragment, "notificationCount", notificationCount) Whitebox.setInternalState(fragment, "notificationController", notificationController) Whitebox.setInternalState(fragment, "compositeDisposable", compositeDisposable) Whitebox.setInternalState(fragment, "okHttpJsonApiClient", okHttpJsonApiClient) - Whitebox.setInternalState( - fragment, - "nearbyNotificationCardView", - nearbyNotificationCardView - ) - Whitebox.setInternalState(fragment, "campaignView", campaignView) } @Test @@ -360,4 +350,4 @@ class ContributionsFragmentUnitTests { fragment.showDetail(0, false) } -} \ No newline at end of file +}