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" />