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 diff --git a/app/build.gradle b/app/build.gradle index e318c32f6..36280e48a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -110,8 +110,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 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 e5b124209..2efc43300 100644 --- a/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java +++ b/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java @@ -31,6 +31,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; @@ -47,6 +49,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; @@ -141,6 +144,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.Builder imagePipelineConfigBuilder = 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 656e5e455..032898896 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 @@ -6,6 +6,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; @@ -204,4 +205,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 913e96a9e..3ac74d3ae 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 @@ -12,14 +12,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.util.ArrayList; +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; @@ -68,10 +72,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 cf2716f2c..361ecf0ad 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 @@