Skip to content

Commit 568f807

Browse files
ashishkumar468neslihanturan
authored andcommitted
Bug fix #2042 (#2056)
* Bug fix #2042 * Added a snack with retry when api in AA fails * Increased connection timeouts in okhttpclient builder * added missing string resource
1 parent 2e29f4f commit 568f807

File tree

4 files changed

+36
-5
lines changed

4 files changed

+36
-5
lines changed

app/src/main/java/fr/free/nrw/commons/achievements/AchievementsActivity.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ void shareScreen(Bitmap bitmap) {
185185
* which then calls parseJson when results are fetched
186186
*/
187187
private void setAchievements() {
188+
progressBar.setVisibility(View.VISIBLE);
188189
if (checkAccount()) {
189190
compositeDisposable.add(mediaWikiApi
190191
.getAchievements(Objects.requireNonNull(sessionManager.getCurrentAccount()).name)
@@ -195,17 +196,23 @@ private void setAchievements() {
195196
if (response != null) {
196197
setUploadCount(Achievements.from(response));
197198
} else {
198-
onError();
199+
showSnackBarWithRetry();
199200
}
200201
},
201202
t -> {
202203
Timber.e(t, "Fetching achievements statistics failed");
203-
onError();
204+
showSnackBarWithRetry();
204205
}
205206
));
206207
}
207208
}
208209

210+
private void showSnackBarWithRetry() {
211+
progressBar.setVisibility(View.GONE);
212+
ViewUtil.showDismissibleSnackBar(findViewById(android.R.id.content),
213+
R.string.achievements_fetch_failed, R.string.retry, view -> setAchievements());
214+
}
215+
209216
/**
210217
* Shows a generic error toast when error occurs while loading achievements or uploads
211218
*/

app/src/main/java/fr/free/nrw/commons/di/NetworkingModule.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import java.io.File;
1111

12+
import java.util.concurrent.TimeUnit;
1213
import javax.inject.Named;
1314
import javax.inject.Singleton;
1415

@@ -30,9 +31,11 @@ public class NetworkingModule {
3031
@Singleton
3132
public OkHttpClient provideOkHttpClient(Context context) {
3233
File dir = new File(context.getCacheDir(), "okHttpCache");
33-
return new OkHttpClient.Builder()
34-
.cache(new Cache(dir, OK_HTTP_CACHE_SIZE))
35-
.build();
34+
return new OkHttpClient.Builder().connectTimeout(30, TimeUnit.SECONDS)
35+
.writeTimeout(30, TimeUnit.SECONDS)
36+
.readTimeout(30, TimeUnit.SECONDS)
37+
.cache(new Cache(dir, OK_HTTP_CACHE_SIZE))
38+
.build();
3639
}
3740

3841
@Provides

app/src/main/java/fr/free/nrw/commons/utils/ViewUtil.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,4 +87,24 @@ public static void displayPopupWindow(View anchorView, Context context, View pop
8787
popup.showAsDropDown(anchorView);
8888
}
8989

90+
/**
91+
* A snack bar which has an action button which on click dismisses the snackbar and invokes the
92+
* listener passed
93+
*/
94+
public static void showDismissibleSnackBar(View view, int messageResourceId,
95+
int actionButtonResourceId, View.OnClickListener onClickListener) {
96+
if (view.getContext() == null) {
97+
return;
98+
}
99+
ExecutorUtils.uiExecutor().execute(() -> {
100+
Snackbar snackbar = Snackbar.make(view, view.getContext().getString(messageResourceId),
101+
Snackbar.LENGTH_INDEFINITE);
102+
snackbar.setAction(view.getContext().getString(actionButtonResourceId), v -> {
103+
snackbar.dismiss();
104+
onClickListener.onClick(v);
105+
});
106+
snackbar.show();
107+
});
108+
}
109+
90110
}

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,5 +420,6 @@ Upload your first media by touching the camera or gallery icon above.</string>
420420
<string name="never_ask_again">Never ask this again</string>
421421
<string name="display_location_permission_title">Display location permission</string>
422422
<string name="display_location_permission_explanation">Ask for location permission when needed for nearby notification card view feature.</string>
423+
<string name="achievements_fetch_failed">Something went wrong, We could not fetch your achievements</string>
423424

424425
</resources>

0 commit comments

Comments
 (0)