Skip to content
This repository was archived by the owner on Dec 3, 2024. It is now read-only.

Commit 7904afd

Browse files
authored
Prefer injecting preferences instead of using PreferenceManager directly (#2073)
# Description Prefer injecting preferences instead of using `PreferenceManager.getDefaultSharedPreferences(context)` directly. # Changes * replace `PreferenceManager.getDefaultSharedPreferences(context)` by injecting SharedPreferences instead
1 parent 3127951 commit 7904afd

File tree

7 files changed

+34
-20
lines changed

7 files changed

+34
-20
lines changed

app/src/main/java/com/nutomic/syncthingandroid/DaggerComponent.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import com.nutomic.syncthingandroid.activities.FolderPickerActivity;
55
import com.nutomic.syncthingandroid.activities.MainActivity;
66
import com.nutomic.syncthingandroid.activities.SettingsActivity;
7+
import com.nutomic.syncthingandroid.activities.ShareActivity;
8+
import com.nutomic.syncthingandroid.activities.ThemedAppCompatActivity;
79
import com.nutomic.syncthingandroid.receiver.AppConfigReceiver;
810
import com.nutomic.syncthingandroid.service.RunConditionMonitor;
911
import com.nutomic.syncthingandroid.service.EventProcessor;
@@ -34,4 +36,6 @@ public interface DaggerComponent {
3436
void inject(AppConfigReceiver appConfigReceiver);
3537
void inject(RestApi restApi);
3638
void inject(SettingsActivity.SettingsFragment fragment);
39+
void inject(ShareActivity activity);
40+
void inject(ThemedAppCompatActivity activity);
3741
}

app/src/main/java/com/nutomic/syncthingandroid/activities/FirstStartActivity.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import androidx.viewpager.widget.PagerAdapter;
2222
import androidx.viewpager.widget.ViewPager;
2323

24-
import android.preference.PreferenceManager;
2524
import android.provider.Settings;
2625
import android.text.Html;
2726
import android.util.Log;
@@ -240,7 +239,7 @@ private boolean shouldSkipSlide(Slide slide) {
240239
case API_LEVEL_30:
241240
// Skip if running as root, as that circumvents any Android FS restrictions.
242241
return upgradedToApiLevel30()
243-
|| PreferenceManager.getDefaultSharedPreferences(this).getBoolean(Constants.PREF_USE_ROOT, false);
242+
|| mPreferences.getBoolean(Constants.PREF_USE_ROOT, false);
244243
case NOTIFICATION:
245244
return isNotificationPermissionGranted();
246245

app/src/main/java/com/nutomic/syncthingandroid/activities/FolderPickerActivity.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@
66
import android.content.Context;
77
import android.content.Intent;
88
import android.content.SharedPreferences;
9-
import android.os.Build;
109
import android.os.Bundle;
1110
import android.os.Environment;
1211
import android.os.IBinder;
13-
import android.preference.PreferenceManager;
12+
1413
import androidx.annotation.NonNull;
1514
import androidx.annotation.Nullable;
1615
import androidx.core.content.ContextCompat;
@@ -42,6 +41,8 @@
4241
import java.util.Collections;
4342
import java.util.Iterator;
4443

44+
import javax.inject.Inject;
45+
4546
/**
4647
* Activity that allows selecting a directory in the local file system.
4748
*/
@@ -68,6 +69,9 @@ public class FolderPickerActivity extends SyncthingActivity
6869
*/
6970
private File mLocation;
7071

72+
@Inject
73+
SharedPreferences mPreferences;
74+
7175
public static Intent createIntent(Context context, String initialDirectory, @Nullable String rootDirectory) {
7276
Intent intent = new Intent(context, FolderPickerActivity.class);
7377

@@ -103,7 +107,7 @@ protected void onCreate(Bundle savedInstanceState) {
103107
displayRoot();
104108
}
105109

106-
Boolean prefUseRoot = PreferenceManager.getDefaultSharedPreferences(this).getBoolean(Constants.PREF_USE_ROOT, false);
110+
Boolean prefUseRoot = mPreferences.getBoolean(Constants.PREF_USE_ROOT, false);
107111
if (!prefUseRoot) {
108112
Toast.makeText(this, R.string.kitkat_external_storage_warning, Toast.LENGTH_LONG)
109113
.show();
@@ -133,8 +137,7 @@ private void populateRoots() {
133137
roots.add(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS));
134138

135139
// Add paths that might not be accessible to Syncthing.
136-
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
137-
if (sp.getBoolean("advanced_folder_picker", false)) {
140+
if (mPreferences.getBoolean("advanced_folder_picker", false)) {
138141
Collections.addAll(roots, new File("/storage/").listFiles());
139142
roots.add(new File("/"));
140143
}

app/src/main/java/com/nutomic/syncthingandroid/activities/SettingsActivity.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import android.preference.Preference;
1313
import android.preference.PreferenceGroup;
1414
import android.preference.PreferenceFragment;
15-
import android.preference.PreferenceManager;
1615
import android.preference.PreferenceScreen;
1716
import androidx.annotation.NonNull;
1817
import androidx.annotation.Nullable;
@@ -268,7 +267,6 @@ public void onActivityCreated(Bundle savedInstanceState) {
268267
mHttpProxyAddress.setOnPreferenceChangeListener(this);
269268

270269
/* Initialize summaries */
271-
mPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
272270
screen.findPreference(Constants.PREF_POWER_SOURCE).setSummary(mPowerSource.getEntry());
273271
String wifiSsidSummary = TextUtils.join(", ", mPreferences.getStringSet(Constants.PREF_WIFI_SSID_WHITELIST, new HashSet<>()));
274272
screen.findPreference(Constants.PREF_WIFI_SSID_WHITELIST).setSummary(TextUtils.isEmpty(wifiSsidSummary) ?

app/src/main/java/com/nutomic/syncthingandroid/activities/ShareActivity.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
import android.app.ProgressDialog;
66
import android.content.ContentResolver;
77
import android.content.Intent;
8+
import android.content.SharedPreferences;
89
import android.database.Cursor;
910
import android.net.Uri;
1011
import android.os.AsyncTask;
1112
import android.os.Bundle;
12-
import android.preference.PreferenceManager;
1313
import android.provider.MediaStore;
1414
import android.text.TextUtils;
1515
import android.util.Log;
@@ -23,6 +23,7 @@
2323

2424
import com.google.common.io.Files;
2525
import com.nutomic.syncthingandroid.R;
26+
import com.nutomic.syncthingandroid.SyncthingApp;
2627
import com.nutomic.syncthingandroid.databinding.ActivityShareBinding;
2728
import com.nutomic.syncthingandroid.model.Folder;
2829
import com.nutomic.syncthingandroid.service.SyncthingService;
@@ -40,6 +41,8 @@
4041
import java.util.List;
4142
import java.util.Map;
4243

44+
import javax.inject.Inject;
45+
4346
/**
4447
* Shares incoming files to syncthing folders.
4548
* <p>
@@ -60,6 +63,9 @@ public class ShareActivity extends StateDialogActivity
6063

6164
private ActivityShareBinding binding;
6265

66+
@Inject
67+
SharedPreferences mPreferences;
68+
6369
@Override
6470
public void onServiceStateChange(SyncthingService.State currentState) {
6571
if (currentState != SyncthingService.State.ACTIVE || getApi() == null)
@@ -69,8 +75,7 @@ public void onServiceStateChange(SyncthingService.State currentState) {
6975

7076
// Get the index of the previously selected folder.
7177
int folderIndex = 0;
72-
String savedFolderId = PreferenceManager.getDefaultSharedPreferences(this)
73-
.getString(PREF_PREVIOUSLY_SELECTED_SYNCTHING_FOLDER, "");
78+
String savedFolderId = mPreferences.getString(PREF_PREVIOUSLY_SELECTED_SYNCTHING_FOLDER, "");
7479
for (Folder folder : folders) {
7580
if (folder.id.equals(savedFolderId)) {
7681
folderIndex = folders.indexOf(folder);
@@ -102,6 +107,7 @@ protected void onPostCreate(Bundle savedInstanceState) {
102107
@Override
103108
protected void onCreate(Bundle savedInstanceState) {
104109
super.onCreate(savedInstanceState);
110+
((SyncthingApp) getApplication()).component().inject(this);
105111
binding = ActivityShareBinding.inflate(getLayoutInflater());
106112
setContentView(binding.getRoot());
107113

@@ -266,8 +272,7 @@ private String getSavedSubDirectory() {
266272
String savedSubDirectory = "";
267273

268274
if (selectedFolder != null) {
269-
savedSubDirectory = PreferenceManager.getDefaultSharedPreferences(this)
270-
.getString(PREF_FOLDER_SAVED_SUBDIRECTORY + selectedFolder.id, "");
275+
savedSubDirectory = mPreferences.getString(PREF_FOLDER_SAVED_SUBDIRECTORY + selectedFolder.id, "");
271276
}
272277

273278
return savedSubDirectory;
@@ -362,7 +367,7 @@ protected void onPause() {
362367
super.onPause();
363368
if (mFoldersSpinner.getSelectedItem() != null) {
364369
Folder selectedFolder = (Folder) mFoldersSpinner.getSelectedItem();
365-
PreferenceManager.getDefaultSharedPreferences(this).edit()
370+
mPreferences.edit()
366371
.putString(PREF_PREVIOUSLY_SELECTED_SYNCTHING_FOLDER, selectedFolder.id)
367372
.apply();
368373
}
@@ -379,7 +384,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
379384
subDirectory = subDirectory.replace(folderDirectory, "");
380385
mSubDirectoryTextView.setText(subDirectory);
381386

382-
PreferenceManager.getDefaultSharedPreferences(this)
387+
mPreferences
383388
.edit().putString(PREF_FOLDER_SAVED_SUBDIRECTORY + selectedFolder.id, subDirectory)
384389
.apply();
385390
}

app/src/main/java/com/nutomic/syncthingandroid/activities/ThemedAppCompatActivity.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,30 @@
22

33
import android.content.SharedPreferences;
44
import android.os.Bundle;
5-
import android.preference.PreferenceManager;
65
import androidx.appcompat.app.AppCompatActivity;
76
import androidx.appcompat.app.AppCompatDelegate;
87

8+
import com.nutomic.syncthingandroid.SyncthingApp;
99
import com.nutomic.syncthingandroid.service.Constants;
1010

11+
import javax.inject.Inject;
12+
1113
/**
1214
* Provides a themed instance of AppCompatActivity.
1315
*/
1416
public class ThemedAppCompatActivity extends AppCompatActivity {
1517

1618
private static final String FOLLOW_SYSTEM = "-1";
1719

20+
@Inject
21+
SharedPreferences mPreferences;
22+
1823
@Override
1924
protected void onCreate(Bundle savedInstanceState) {
25+
((SyncthingApp) getApplication()).component().inject(this);
2026
// Load theme.
21-
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
2227
//For api level below 28, Follow system fall backs to light mode
23-
Integer prefAppTheme = Integer.parseInt(prefs.getString(Constants.PREF_APP_THEME, FOLLOW_SYSTEM));
28+
Integer prefAppTheme = Integer.parseInt(mPreferences.getString(Constants.PREF_APP_THEME, FOLLOW_SYSTEM));
2429
AppCompatDelegate.setDefaultNightMode(prefAppTheme);
2530
super.onCreate(savedInstanceState);
2631
}
Submodule syncthing updated 154 files

0 commit comments

Comments
 (0)