mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 12:23:58 +01:00
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:
parent
2076bf9b29
commit
c94f607107
7 changed files with 127 additions and 190 deletions
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue