diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsSyncAdapter.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsSyncAdapter.java
index be9490d86..a495e51b2 100644
--- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsSyncAdapter.java
+++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsSyncAdapter.java
@@ -42,6 +42,10 @@ public class ContributionsSyncAdapter extends AbstractThreadedSyncAdapter {
private static final ContentValues[] EMPTY = {};
private static int COMMIT_THRESHOLD = 10;
+ // Arbitrary limit to cap the number of contributions to ever load. This is a maximum built
+ // into the app, rather than the user's setting. Also see Github issue #52.
+ public static final int ABSOLUTE_CONTRIBUTIONS_LOAD_LIMIT = 500;
+
@SuppressWarnings("WeakerAccess")
@Inject MediaWikiApi mwApi;
@Inject
@@ -52,13 +56,6 @@ public class ContributionsSyncAdapter extends AbstractThreadedSyncAdapter {
super(context, autoInitialize);
}
- private int getLimit() {
-
- int limit = 500;
- Timber.d("Max number of uploads set to %d", limit);
- return limit; // FIXME: Parameterize!
- }
-
private boolean fileExists(ContentProviderClient client, String filename) {
if (filename == null) {
return false;
@@ -100,7 +97,7 @@ public class ContributionsSyncAdapter extends AbstractThreadedSyncAdapter {
while (!done) {
try {
- result = mwApi.logEvents(user, lastModified, queryContinue, getLimit());
+ result = mwApi.logEvents(user, lastModified, queryContinue, ABSOLUTE_CONTRIBUTIONS_LOAD_LIMIT);
} catch (IOException e) {
// There isn't really much we can do, eh?
// FIXME: Perhaps add EventLogging?
diff --git a/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java b/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java
index cf965292e..fd1ffc291 100644
--- a/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java
+++ b/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java
@@ -61,9 +61,9 @@ public class SettingsFragment extends PreferenceFragment {
});
final EditTextPreference uploadLimit = (EditTextPreference) findPreference("uploads");
- int uploads = defaultKvStore.getInt(Prefs.UPLOADS_SHOWING, 100);
- uploadLimit.setText(uploads + "");
- uploadLimit.setSummary(uploads + "");
+ int currentUploadLimit = defaultKvStore.getInt(Prefs.UPLOADS_SHOWING, 100);
+ uploadLimit.setText(Integer.toString(currentUploadLimit));
+ uploadLimit.setSummary(Integer.toString(currentUploadLimit));
uploadLimit.getEditText().addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
@@ -76,36 +76,25 @@ public class SettingsFragment extends PreferenceFragment {
@Override
public void afterTextChanged(Editable s) {
- int value;
- if (s.length()>0)
- try {
- value = Integer.parseInt(s.toString());
- if (value > 500) {
- uploadLimit.getEditText().setError(getString((R.string.maximum_limit_alert)));
- defaultKvStore.putInt(Prefs.UPLOADS_SHOWING, 500);
- defaultKvStore.putBoolean(Prefs.IS_CONTRIBUTION_COUNT_CHANGED, true);
- uploadLimit.setSummary(500 + "");
- uploadLimit.setText(500 + "");
- } else if (value == 0) {
- uploadLimit.getEditText().setError(getString(R.string.cannot_be_zero));
- defaultKvStore.putInt(Prefs.UPLOADS_SHOWING, 100);
- defaultKvStore.putBoolean(Prefs.IS_CONTRIBUTION_COUNT_CHANGED, true);
- uploadLimit.setSummary(100 + "");
- uploadLimit.setText(100 + "");
- } else {
- defaultKvStore.putInt(Prefs.UPLOADS_SHOWING, value);
- defaultKvStore.putBoolean(Prefs.IS_CONTRIBUTION_COUNT_CHANGED, true);
- uploadLimit.setSummary(String.valueOf(value));
- }
- } catch (Exception e) {
- uploadLimit.getEditText().setError(getString(R.string.enter_valid));
- defaultKvStore.putInt(Prefs.UPLOADS_SHOWING, 100);
- defaultKvStore.putBoolean(Prefs.IS_CONTRIBUTION_COUNT_CHANGED, true);
- uploadLimit.setSummary(100 + "");
- uploadLimit.setText(100 + "");
+ if (s.length() == 0) return;
+
+ int value = Integer.parseInt(s.toString());
+
+ if (value > 500) {
+ uploadLimit.getEditText().setError(getString(R.string.maximum_limit_alert));
+ value = 500;
+ } else if (value == 0) {
+ uploadLimit.getEditText().setError(getString(R.string.cannot_be_zero));
+ value = 100;
}
+
+ defaultKvStore.putInt(Prefs.UPLOADS_SHOWING, value);
+ defaultKvStore.putBoolean(Prefs.IS_CONTRIBUTION_COUNT_CHANGED, true);
+ uploadLimit.setText(Integer.toString(value));
+ uploadLimit.setSummary(Integer.toString(value));
}
});
+
Preference betaTesterPreference = findPreference("becomeBetaTester");
betaTesterPreference.setOnPreferenceClickListener(preference -> {
Utils.handleWebUrl(getActivity(), Uri.parse(getResources().getString(R.string.beta_opt_in_link)));
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d419df4bf..c31c48ed1 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -192,7 +192,7 @@
Unable to display more than 500
Enter a valid number
Upload limit cannot be 0
- Set Recent Upload Limit
+ Recent upload limit
Two factor authentication is currently not supported.
Do you really want to logout?
Commons Logo
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 69ee772e1..21df4c045 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -26,7 +26,7 @@
android:key="uploads"
android:defaultValue="100"
android:title= "@string/set_limit"
- android:inputType="numberDecimal"
+ android:inputType="number"
android:maxLength="3" />