From 721d2feb45ef004eeb7187f9c270701a62f97e87 Mon Sep 17 00:00:00 2001 From: Ashish Kumar Date: Mon, 27 Jan 2020 18:18:11 +0530 Subject: [PATCH 1/3] Fixes #3336 Hotfix: Coordinates of picture are not uploaded (#3339) * Fixes #3336 * Donot redact locatio by default * Correction inn default tag save * Use same key across application for managedExifTags * Updated key name to avoid class cast in existing build --- .../fr/free/nrw/commons/CommonsApplication.java | 13 +++++++++++++ .../fr/free/nrw/commons/kvstore/BasicKvStore.java | 8 ++++++++ .../java/fr/free/nrw/commons/settings/Prefs.java | 2 +- .../free/nrw/commons/settings/SettingsFragment.java | 10 ++++++++-- .../fr/free/nrw/commons/upload/FileProcessor.java | 2 +- app/src/main/res/xml/preferences.xml | 2 +- 6 files changed, 32 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java b/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java index 3c9398bab..d6a3d978a 100644 --- a/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java +++ b/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java @@ -27,6 +27,8 @@ import org.wikipedia.AppAdapter; import org.wikipedia.language.AppLanguageLookUpTable; import java.io.File; +import java.util.HashSet; +import java.util.Set; import javax.inject.Inject; import javax.inject.Named; @@ -43,6 +45,7 @@ import fr.free.nrw.commons.di.ApplicationlessInjection; import fr.free.nrw.commons.kvstore.JsonKvStore; import fr.free.nrw.commons.logging.FileLoggingTree; import fr.free.nrw.commons.logging.LogUtils; +import fr.free.nrw.commons.settings.Prefs; import fr.free.nrw.commons.upload.FileUtils; import fr.free.nrw.commons.utils.ConfigUtils; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -133,6 +136,16 @@ public class CommonsApplication extends Application { initTimber(); + + if (!defaultPrefs.getBoolean("has_user_manually_removed_location")) { + Set defaultExifTagsSet = defaultPrefs.getStringSet(Prefs.MANAGED_EXIF_TAGS); + if (null == defaultExifTagsSet) { + defaultExifTagsSet = new HashSet<>(); + } + defaultExifTagsSet.add(getString(R.string.exif_tag_location)); + defaultPrefs.putStringSet(Prefs.MANAGED_EXIF_TAGS, defaultExifTagsSet); + } + // Set DownsampleEnabled to True to downsample the image in case it's heavy ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this) .setDownsampleEnabled(true) diff --git a/app/src/main/java/fr/free/nrw/commons/kvstore/BasicKvStore.java b/app/src/main/java/fr/free/nrw/commons/kvstore/BasicKvStore.java index ce7649e35..690194589 100644 --- a/app/src/main/java/fr/free/nrw/commons/kvstore/BasicKvStore.java +++ b/app/src/main/java/fr/free/nrw/commons/kvstore/BasicKvStore.java @@ -5,6 +5,7 @@ import android.content.SharedPreferences; import androidx.annotation.Nullable; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -203,4 +204,11 @@ public class BasicKvStore implements KeyValueStore { _store.unregisterOnSharedPreferenceChangeListener(l); } + public Set getStringSet(String key){ + return _store.getStringSet(key, new HashSet<>()); + } + + public void putStringSet(String key,Set value){ + _store.edit().putStringSet(key,value).apply(); + } } \ No newline at end of file diff --git a/app/src/main/java/fr/free/nrw/commons/settings/Prefs.java b/app/src/main/java/fr/free/nrw/commons/settings/Prefs.java index 41889e3db..b686e18db 100644 --- a/app/src/main/java/fr/free/nrw/commons/settings/Prefs.java +++ b/app/src/main/java/fr/free/nrw/commons/settings/Prefs.java @@ -7,7 +7,7 @@ public class Prefs { public static final String DEFAULT_LICENSE = "defaultLicense"; public static final String UPLOADS_SHOWING = "uploadsshowing"; public static final String IS_CONTRIBUTION_COUNT_CHANGED = "ccontributionCountChanged"; - public static final String MANAGED_EXIF_TAGS = "managedExifTags"; + public static final String MANAGED_EXIF_TAGS = "managed_exif_tags"; public static final String KEY_LANGUAGE_VALUE = "languageDescription"; public static class Licenses { 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 176697f9a..9971c7175 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 @@ -14,14 +14,18 @@ import android.preference.SwitchPreference; import android.text.Editable; import android.text.TextWatcher; +import com.google.gson.reflect.TypeToken; import com.karumi.dexter.Dexter; import com.karumi.dexter.listener.PermissionGrantedResponse; import com.karumi.dexter.listener.single.BasePermissionListener; +import java.lang.reflect.Type; import java.util.Collections; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Locale; +import java.util.Set; import javax.inject.Inject; import javax.inject.Named; @@ -70,10 +74,12 @@ public class SettingsFragment extends PreferenceFragment { return true; }); - MultiSelectListPreference multiSelectListPref = (MultiSelectListPreference) findPreference("manageExifTags"); + MultiSelectListPreference multiSelectListPref = (MultiSelectListPreference) findPreference(Prefs.MANAGED_EXIF_TAGS); if (multiSelectListPref != null) { multiSelectListPref.setOnPreferenceChangeListener((preference, newValue) -> { - defaultKvStore.putJson(Prefs.MANAGED_EXIF_TAGS, newValue); + if (newValue instanceof HashSet && !((HashSet) newValue).contains(getString(R.string.exif_tag_location))) { + defaultKvStore.putBoolean("has_user_manually_removed_location", true); + } return true; }); } diff --git a/app/src/main/java/fr/free/nrw/commons/upload/FileProcessor.java b/app/src/main/java/fr/free/nrw/commons/upload/FileProcessor.java index e9922332c..edf539627 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/FileProcessor.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/FileProcessor.java @@ -105,7 +105,7 @@ public class FileProcessor implements Callback { */ private Set getExifTagsToRedact(Context context) { Type setType = new TypeToken>() {}.getType(); - Set prefManageEXIFTags = defaultKvStore.getJson(Prefs.MANAGED_EXIF_TAGS, setType); + Set prefManageEXIFTags = defaultKvStore.getStringSet(Prefs.MANAGED_EXIF_TAGS); Set redactTags = new HashSet<>(Arrays.asList( context.getResources().getStringArray(R.array.pref_exifTag_values))); diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index cdeaa8366..e689f709b 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -70,7 +70,7 @@ From dc08a5e883b8922957ae8d0a0b343fb25e210f7e Mon Sep 17 00:00:00 2001 From: Josephine Lim Date: Thu, 30 Jan 2020 02:16:55 +1000 Subject: [PATCH 2/3] Versioning for v2.12.3 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index dbbd79f22..557ce1b9c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -103,8 +103,8 @@ android { defaultConfig { applicationId 'fr.free.nrw.commons' - versionCode 549 - versionName '2.12.2' + versionCode 561 + versionName '2.12.3' setProperty("archivesBaseName", "app-commons-v$versionName-" + getBranchName()) minSdkVersion 19 From 5e3760a899f4d709cab2148492c80668ee1486b3 Mon Sep 17 00:00:00 2001 From: Josephine Lim Date: Thu, 30 Jan 2020 02:18:04 +1000 Subject: [PATCH 3/3] Update changelog.md --- CHANGELOG.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 25375af7e..1586f0db4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,10 @@ # Wikimedia Commons for Android +## v2.12.3 +- Fixed issue with EXIF data, including coords, being removed from uploads + ## v2.12.2 -- Fixed crash on startup (hopefully, could not reproduce it) +- Fixed crash on startup ## v2.12.1 - Fixed issue with Nearby loading in wrong location