Skip to content

Bug fix issue #2042 (Blank Achievements Activity) #2050

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,10 @@
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.dinuscxj.progressbar.CircleProgressBar;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Objects;

import javax.inject.Inject;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import com.dinuscxj.progressbar.CircleProgressBar;
import fr.free.nrw.commons.R;
import fr.free.nrw.commons.Utils;
import fr.free.nrw.commons.auth.SessionManager;
Expand All @@ -45,6 +36,11 @@
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Objects;
import javax.inject.Inject;
import timber.log.Timber;

/**
Expand Down Expand Up @@ -185,6 +181,7 @@ void shareScreen(Bitmap bitmap) {
* which then calls parseJson when results are fetched
*/
private void setAchievements() {
progressBar.setVisibility(View.VISIBLE);
if (checkAccount()) {
compositeDisposable.add(mediaWikiApi
.getAchievements(Objects.requireNonNull(sessionManager.getCurrentAccount()).name)
Expand All @@ -195,17 +192,23 @@ private void setAchievements() {
if (response != null) {
setUploadCount(Achievements.from(response));
} else {
onError();
showSnackBarWithRetry();
}
},
t -> {
Timber.e(t, "Fetching achievements statistics failed");
onError();
showSnackBarWithRetry();
}
));
}
}

private void showSnackBarWithRetry() {
progressBar.setVisibility(View.GONE);
ViewUtil.showDismissibleSnackBar(findViewById(android.R.id.content),
R.string.achievements_fetch_failed, R.string.retry, view -> setAchievements());
}

/**
* Shows a generic error toast when error occurs while loading achievements or uploads
*/
Expand Down
25 changes: 25 additions & 0 deletions app/src/main/java/fr/free/nrw/commons/utils/ViewUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import android.view.inputmethod.InputMethodManager;
import android.widget.PopupWindow;
import android.widget.Toast;
import fr.free.nrw.commons.R;

public class ViewUtil {

Expand Down Expand Up @@ -87,4 +88,28 @@ public static void displayPopupWindow(View anchorView, Context context, View pop
popup.showAsDropDown(anchorView);
}

/**
* A snack bar which has an action button which on click dismisses the snackbar and invokes the listener passed
* @param view
* @param messageResourceId
* @param actionButtonResourceId
* @param onClickListener
*/
public static void showDismissibleSnackBar(View view, int messageResourceId,
int actionButtonResourceId, View.OnClickListener onClickListener) {
if (view.getContext() == null) {
return;
}

ExecutorUtils.uiExecutor().execute(() -> {
Snackbar snackbar =
Snackbar.make(view, view.getContext().getString(messageResourceId),
Snackbar.LENGTH_INDEFINITE);
snackbar.setAction(view.getContext().getString(actionButtonResourceId), v -> {
snackbar.dismiss();
onClickListener.onClick(v);
});
snackbar.show();
});
}
}
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -431,5 +431,6 @@ Upload your first media by touching the camera or gallery icon above.</string>
<string name="never_ask_again">Never ask this again</string>
<string name="display_location_permission_title">Display location permission</string>
<string name="display_location_permission_explanation">Ask for location permission when needed for nearby notification card view feature.</string>
<string name="achievements_fetch_failed">Something went wrong, we could not fetch your achievements</string>

</resources>