mirror of
https://github.com/TeamNewPipe/NewPipe
synced 2024-12-23 16:40:32 +00:00
First run migrations, then setDefaultValues, since the latter requires the correct types
This commit is contained in:
parent
1d33e7ab49
commit
d37ee1e0dc
@ -60,6 +60,10 @@ public final class NewPipeSettings {
|
|||||||
isFirstRun = true;
|
isFirstRun = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// first run migrations, then setDefaultValues, since the latter requires the correct types
|
||||||
|
SettingMigrations.initMigrations(context, isFirstRun);
|
||||||
|
|
||||||
|
// readAgain is true so that if new settings are added their default value is set
|
||||||
PreferenceManager.setDefaultValues(context, R.xml.main_settings, true);
|
PreferenceManager.setDefaultValues(context, R.xml.main_settings, true);
|
||||||
PreferenceManager.setDefaultValues(context, R.xml.video_audio_settings, true);
|
PreferenceManager.setDefaultValues(context, R.xml.video_audio_settings, true);
|
||||||
PreferenceManager.setDefaultValues(context, R.xml.download_settings, true);
|
PreferenceManager.setDefaultValues(context, R.xml.download_settings, true);
|
||||||
@ -72,8 +76,6 @@ public final class NewPipeSettings {
|
|||||||
|
|
||||||
saveDefaultVideoDownloadDirectory(context);
|
saveDefaultVideoDownloadDirectory(context);
|
||||||
saveDefaultAudioDownloadDirectory(context);
|
saveDefaultAudioDownloadDirectory(context);
|
||||||
|
|
||||||
SettingMigrations.initMigrations(context, isFirstRun);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void saveDefaultVideoDownloadDirectory(final Context context) {
|
static void saveDefaultVideoDownloadDirectory(final Context context) {
|
||||||
|
@ -19,12 +19,16 @@ import java.util.Set;
|
|||||||
|
|
||||||
import static org.schabi.newpipe.MainActivity.DEBUG;
|
import static org.schabi.newpipe.MainActivity.DEBUG;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* In order to add a migration, follow these steps, given P is the previous version:<br>
|
||||||
|
* - in the class body add a new {@code MIGRATION_P_P+1 = new Migration(P, P+1) { ... }} and put in
|
||||||
|
* the {@code migrate()} method the code that need to be run when migrating from P to P+1<br>
|
||||||
|
* - add {@code MIGRATION_P_P+1} at the end of {@link SettingMigrations#SETTING_MIGRATIONS}<br>
|
||||||
|
* - increment {@link SettingMigrations#VERSION}'s value by 1 (so it should become P+1)
|
||||||
|
*/
|
||||||
public final class SettingMigrations {
|
public final class SettingMigrations {
|
||||||
|
|
||||||
private static final String TAG = SettingMigrations.class.toString();
|
private static final String TAG = SettingMigrations.class.toString();
|
||||||
/**
|
|
||||||
* Version number for preferences. Must be incremented every time a migration is necessary.
|
|
||||||
*/
|
|
||||||
public static final int VERSION = 3;
|
|
||||||
private static SharedPreferences sp;
|
private static SharedPreferences sp;
|
||||||
|
|
||||||
public static final Migration MIGRATION_0_1 = new Migration(0, 1) {
|
public static final Migration MIGRATION_0_1 = new Migration(0, 1) {
|
||||||
@ -84,8 +88,17 @@ public final class SettingMigrations {
|
|||||||
|
|
||||||
final String showSearchSuggestionsKey =
|
final String showSearchSuggestionsKey =
|
||||||
context.getString(R.string.show_search_suggestions_key);
|
context.getString(R.string.show_search_suggestions_key);
|
||||||
|
|
||||||
|
boolean addAllSearchSuggestionTypes;
|
||||||
|
try {
|
||||||
|
addAllSearchSuggestionTypes = sp.getBoolean(showSearchSuggestionsKey, true);
|
||||||
|
} catch (final ClassCastException e) {
|
||||||
|
// just in case it was not a boolean for some reason, let's consider it a "true"
|
||||||
|
addAllSearchSuggestionTypes = true;
|
||||||
|
}
|
||||||
|
|
||||||
final Set<String> showSearchSuggestionsValueList = new HashSet<>();
|
final Set<String> showSearchSuggestionsValueList = new HashSet<>();
|
||||||
if (sp.getBoolean(showSearchSuggestionsKey, true)) {
|
if (addAllSearchSuggestionTypes) {
|
||||||
// if the preference was true, all suggestions will be shown, otherwise none
|
// if the preference was true, all suggestions will be shown, otherwise none
|
||||||
Collections.addAll(showSearchSuggestionsValueList, context.getResources()
|
Collections.addAll(showSearchSuggestionsValueList, context.getResources()
|
||||||
.getStringArray(R.array.show_search_suggestions_value_list));
|
.getStringArray(R.array.show_search_suggestions_value_list));
|
||||||
@ -109,6 +122,11 @@ public final class SettingMigrations {
|
|||||||
MIGRATION_3_4,
|
MIGRATION_3_4,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Version number for preferences. Must be incremented every time a migration is necessary.
|
||||||
|
*/
|
||||||
|
public static final int VERSION = 4;
|
||||||
|
|
||||||
|
|
||||||
public static void initMigrations(final Context context, final boolean isFirstRun) {
|
public static void initMigrations(final Context context, final boolean isFirstRun) {
|
||||||
// setup migrations and check if there is something to do
|
// setup migrations and check if there is something to do
|
||||||
|
Loading…
Reference in New Issue
Block a user