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 3c9398babd..d6a3d978a5 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.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.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 void onCreate() { 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 ce7649e352..6901945891 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 androidx.annotation.Nullable; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -203,4 +204,11 @@ public void unregisterChangeListener(SharedPreferences.OnSharedPreferenceChangeL _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 41889e3dbe..b686e18dbc 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 176697f9ae..9971c7175c 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.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 void onCreate(Bundle savedInstanceState) { 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 e9922332c4..edf539627a 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 @@ GPSExtractor processFileCoordinates(SimilarImageInterface similarImageInterface, */ 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 cdeaa83664..e689f709b9 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -70,7 +70,7 @@