Skip to content

Commit 721d2fe

Browse files
ashishkumar468neslihanturan
authored andcommitted
Fixes commons-app#3336 Hotfix: Coordinates of picture are not uploaded (commons-app#3339)
* Fixes commons-app#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
1 parent f7adbf7 commit 721d2fe

File tree

6 files changed

+32
-5
lines changed

6 files changed

+32
-5
lines changed

app/src/main/java/fr/free/nrw/commons/CommonsApplication.java

+13
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
import org.wikipedia.language.AppLanguageLookUpTable;
2828

2929
import java.io.File;
30+
import java.util.HashSet;
31+
import java.util.Set;
3032

3133
import javax.inject.Inject;
3234
import javax.inject.Named;
@@ -43,6 +45,7 @@
4345
import fr.free.nrw.commons.kvstore.JsonKvStore;
4446
import fr.free.nrw.commons.logging.FileLoggingTree;
4547
import fr.free.nrw.commons.logging.LogUtils;
48+
import fr.free.nrw.commons.settings.Prefs;
4649
import fr.free.nrw.commons.upload.FileUtils;
4750
import fr.free.nrw.commons.utils.ConfigUtils;
4851
import io.reactivex.android.schedulers.AndroidSchedulers;
@@ -133,6 +136,16 @@ public void onCreate() {
133136

134137
initTimber();
135138

139+
140+
if (!defaultPrefs.getBoolean("has_user_manually_removed_location")) {
141+
Set<String> defaultExifTagsSet = defaultPrefs.getStringSet(Prefs.MANAGED_EXIF_TAGS);
142+
if (null == defaultExifTagsSet) {
143+
defaultExifTagsSet = new HashSet<>();
144+
}
145+
defaultExifTagsSet.add(getString(R.string.exif_tag_location));
146+
defaultPrefs.putStringSet(Prefs.MANAGED_EXIF_TAGS, defaultExifTagsSet);
147+
}
148+
136149
// Set DownsampleEnabled to True to downsample the image in case it's heavy
137150
ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this)
138151
.setDownsampleEnabled(true)

app/src/main/java/fr/free/nrw/commons/kvstore/BasicKvStore.java

+8
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import androidx.annotation.Nullable;
66

77
import java.util.HashMap;
8+
import java.util.HashSet;
89
import java.util.Map;
910
import java.util.Set;
1011

@@ -203,4 +204,11 @@ public void unregisterChangeListener(SharedPreferences.OnSharedPreferenceChangeL
203204
_store.unregisterOnSharedPreferenceChangeListener(l);
204205
}
205206

207+
public Set<String> getStringSet(String key){
208+
return _store.getStringSet(key, new HashSet<>());
209+
}
210+
211+
public void putStringSet(String key,Set<String> value){
212+
_store.edit().putStringSet(key,value).apply();
213+
}
206214
}

app/src/main/java/fr/free/nrw/commons/settings/Prefs.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ public class Prefs {
77
public static final String DEFAULT_LICENSE = "defaultLicense";
88
public static final String UPLOADS_SHOWING = "uploadsshowing";
99
public static final String IS_CONTRIBUTION_COUNT_CHANGED = "ccontributionCountChanged";
10-
public static final String MANAGED_EXIF_TAGS = "managedExifTags";
10+
public static final String MANAGED_EXIF_TAGS = "managed_exif_tags";
1111
public static final String KEY_LANGUAGE_VALUE = "languageDescription";
1212

1313
public static class Licenses {

app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java

+8-2
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,18 @@
1414
import android.text.Editable;
1515
import android.text.TextWatcher;
1616

17+
import com.google.gson.reflect.TypeToken;
1718
import com.karumi.dexter.Dexter;
1819
import com.karumi.dexter.listener.PermissionGrantedResponse;
1920
import com.karumi.dexter.listener.single.BasePermissionListener;
2021

22+
import java.lang.reflect.Type;
2123
import java.util.Collections;
2224
import java.util.ArrayList;
25+
import java.util.HashSet;
2326
import java.util.List;
2427
import java.util.Locale;
28+
import java.util.Set;
2529

2630
import javax.inject.Inject;
2731
import javax.inject.Named;
@@ -70,10 +74,12 @@ public void onCreate(Bundle savedInstanceState) {
7074
return true;
7175
});
7276

73-
MultiSelectListPreference multiSelectListPref = (MultiSelectListPreference) findPreference("manageExifTags");
77+
MultiSelectListPreference multiSelectListPref = (MultiSelectListPreference) findPreference(Prefs.MANAGED_EXIF_TAGS);
7478
if (multiSelectListPref != null) {
7579
multiSelectListPref.setOnPreferenceChangeListener((preference, newValue) -> {
76-
defaultKvStore.putJson(Prefs.MANAGED_EXIF_TAGS, newValue);
80+
if (newValue instanceof HashSet && !((HashSet) newValue).contains(getString(R.string.exif_tag_location))) {
81+
defaultKvStore.putBoolean("has_user_manually_removed_location", true);
82+
}
7783
return true;
7884
});
7985
}

app/src/main/java/fr/free/nrw/commons/upload/FileProcessor.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ GPSExtractor processFileCoordinates(SimilarImageInterface similarImageInterface,
105105
*/
106106
private Set<String> getExifTagsToRedact(Context context) {
107107
Type setType = new TypeToken<Set<String>>() {}.getType();
108-
Set<String> prefManageEXIFTags = defaultKvStore.getJson(Prefs.MANAGED_EXIF_TAGS, setType);
108+
Set<String> prefManageEXIFTags = defaultKvStore.getStringSet(Prefs.MANAGED_EXIF_TAGS);
109109

110110
Set<String> redactTags = new HashSet<>(Arrays.asList(
111111
context.getResources().getStringArray(R.array.pref_exifTag_values)));

app/src/main/res/xml/preferences.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
<fr.free.nrw.commons.ui.LongTitlePreferences.LongTitleMultiSelectListPreference
7171
android:entries="@array/pref_exifTag_entries"
7272
android:entryValues="@array/pref_exifTag_values"
73-
android:key="manageExifTags"
73+
android:key="managed_exif_tags"
7474
android:title="@string/manage_exif_tags"
7575
android:summary="@string/manage_exif_tags_summary"/>
7676

0 commit comments

Comments
 (0)