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
This commit is contained in:
Shashank Kumar 2024-03-13 07:46:55 +05:30 committed by GitHub
parent 2076bf9b29
commit c94f607107
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 127 additions and 190 deletions

View file

@ -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() {

View file

@ -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

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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)
}
}
}

View file

@ -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)
}
}
}