Backup anonymously subscribed users and multireddits. Backup post filters.

This commit is contained in:
Alex Ning 2021-10-16 10:06:47 +08:00
parent 192de06e16
commit f1dfadecb6
4 changed files with 37 additions and 2 deletions

View File

@ -32,7 +32,12 @@ import ml.docilealligator.infinityforreddit.BuildConfig;
import ml.docilealligator.infinityforreddit.R; import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase; import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
import ml.docilealligator.infinityforreddit.customtheme.CustomTheme; import ml.docilealligator.infinityforreddit.customtheme.CustomTheme;
import ml.docilealligator.infinityforreddit.multireddit.AnonymousMultiredditSubreddit;
import ml.docilealligator.infinityforreddit.multireddit.MultiReddit;
import ml.docilealligator.infinityforreddit.postfilter.PostFilter;
import ml.docilealligator.infinityforreddit.postfilter.PostFilterUsage;
import ml.docilealligator.infinityforreddit.subscribedsubreddit.SubscribedSubredditData; import ml.docilealligator.infinityforreddit.subscribedsubreddit.SubscribedSubredditData;
import ml.docilealligator.infinityforreddit.subscribeduser.SubscribedUserData;
import ml.docilealligator.infinityforreddit.utils.CustomThemeSharedPreferencesUtils; import ml.docilealligator.infinityforreddit.utils.CustomThemeSharedPreferencesUtils;
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils; import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
@ -94,9 +99,29 @@ public class BackupSettings {
String anonymousSubscribedSubredditsDataJson = new Gson().toJson(anonymousSubscribedSubredditsData); String anonymousSubscribedSubredditsDataJson = new Gson().toJson(anonymousSubscribedSubredditsData);
boolean res11 = saveDatabaseTableToFile(anonymousSubscribedSubredditsDataJson, databaseDirFile.getAbsolutePath(), "/anonymous_subscribed_subreddits.json"); boolean res11 = saveDatabaseTableToFile(anonymousSubscribedSubredditsDataJson, databaseDirFile.getAbsolutePath(), "/anonymous_subscribed_subreddits.json");
List<SubscribedUserData> anonymousSubscribedUsersData = redditDataRoomDatabase.subscribedUserDao().getAllSubscribedUsersList("-");
String anonymousSubscribedUsersDataJson = new Gson().toJson(anonymousSubscribedUsersData);
boolean res12 = saveDatabaseTableToFile(anonymousSubscribedUsersDataJson, databaseDirFile.getAbsolutePath(), "/anonymous_subscribed_users.json");
List<MultiReddit> anonymousMultireddits = redditDataRoomDatabase.multiRedditDao().getAllMultiRedditsList("-");
String anonymousMultiredditsJson = new Gson().toJson(anonymousMultireddits);
boolean res13 = saveDatabaseTableToFile(anonymousMultiredditsJson, databaseDirFile.getAbsolutePath(), "/anonymous_multireddits.json");
List<AnonymousMultiredditSubreddit> anonymousMultiredditSubreddits = redditDataRoomDatabase.anonymousMultiredditSubredditDao().getAllSubreddits();
String anonymousMultiredditSubredditsJson = new Gson().toJson(anonymousMultiredditSubreddits);
boolean res14 = saveDatabaseTableToFile(anonymousMultiredditSubredditsJson, databaseDirFile.getAbsolutePath(), "/anonymous_multireddit_subreddits.json");
List<CustomTheme> customThemes = redditDataRoomDatabase.customThemeDao().getAllCustomThemesList(); List<CustomTheme> customThemes = redditDataRoomDatabase.customThemeDao().getAllCustomThemesList();
String customThemesJson = new Gson().toJson(customThemes); String customThemesJson = new Gson().toJson(customThemes);
boolean res12 = saveDatabaseTableToFile(customThemesJson, databaseDirFile.getAbsolutePath(), "/custom_themes.json"); boolean res15 = saveDatabaseTableToFile(customThemesJson, databaseDirFile.getAbsolutePath(), "/custom_themes.json");
List<PostFilter> postFilters = redditDataRoomDatabase.postFilterDao().getAllPostFilters();
String postFiltersJson = new Gson().toJson(postFilters);
boolean res16 = saveDatabaseTableToFile(postFiltersJson, databaseDirFile.getAbsolutePath(), "/post_filters.json");
List<PostFilterUsage> postFilterUsage = redditDataRoomDatabase.postFilterUsageDao().getAllPostFilterUsageForBackup();
String postFilterUsageJson = new Gson().toJson(postFilterUsage);
boolean res17 = saveDatabaseTableToFile(postFilterUsageJson, databaseDirFile.getAbsolutePath(), "/post_filter_usage.json");
boolean zipRes = zipAndMoveToDestinationDir(context, contentResolver, destinationDirUri); boolean zipRes = zipAndMoveToDestinationDir(context, contentResolver, destinationDirUri);
@ -107,7 +132,8 @@ public class BackupSettings {
} }
handler.post(() -> { handler.post(() -> {
boolean finalResult = res && res1 && res2 && res3 && res4 && res5 && res6 && res7 && res8 && res9 && res10 && res11 && res12 && zipRes; boolean finalResult = res && res1 && res2 && res3 && res4 && res5 && res6 && res7 && res8
&& res9 && res10 && res11 && res12 && res13 && res14 && res15 && res16 && res17 && zipRes;
if (finalResult) { if (finalResult) {
backupSettingsListener.success(); backupSettingsListener.success();
} else { } else {

View File

@ -17,4 +17,7 @@ public interface AnonymousMultiredditSubredditDao {
@Query("SELECT * FROM anonymous_multireddit_subreddits WHERE path = :path ORDER BY subreddit_name COLLATE NOCASE ASC") @Query("SELECT * FROM anonymous_multireddit_subreddits WHERE path = :path ORDER BY subreddit_name COLLATE NOCASE ASC")
List<AnonymousMultiredditSubreddit> getAllAnonymousMultiRedditSubreddits(String path); List<AnonymousMultiredditSubreddit> getAllAnonymousMultiRedditSubreddits(String path);
@Query("SELECT * FROM anonymous_multireddit_subreddits")
List<AnonymousMultiredditSubreddit> getAllSubreddits();
} }

View File

@ -29,6 +29,9 @@ public interface PostFilterDao {
@Query("SELECT * FROM post_filter ORDER BY name") @Query("SELECT * FROM post_filter ORDER BY name")
LiveData<List<PostFilter>> getAllPostFiltersLiveData(); LiveData<List<PostFilter>> getAllPostFiltersLiveData();
@Query("SELECT * FROM post_filter")
List<PostFilter> getAllPostFilters();
@Query("SELECT * FROM post_filter WHERE post_filter.name IN " + @Query("SELECT * FROM post_filter WHERE post_filter.name IN " +
"(SELECT post_filter_usage.name FROM post_filter_usage WHERE (usage = :usage AND name_of_usage = :nameOfUsage) " + "(SELECT post_filter_usage.name FROM post_filter_usage WHERE (usage = :usage AND name_of_usage = :nameOfUsage) " +
"OR (usage =:usage AND name_of_usage = '--'))") "OR (usage =:usage AND name_of_usage = '--'))")

View File

@ -17,6 +17,9 @@ public interface PostFilterUsageDao {
@Query("SELECT * FROM post_filter_usage WHERE name = :name") @Query("SELECT * FROM post_filter_usage WHERE name = :name")
List<PostFilterUsage> getAllPostFilterUsage(String name); List<PostFilterUsage> getAllPostFilterUsage(String name);
@Query("SELECT * FROM post_filter_usage")
List<PostFilterUsage> getAllPostFilterUsageForBackup();
@Insert(onConflict = OnConflictStrategy.REPLACE) @Insert(onConflict = OnConflictStrategy.REPLACE)
void insertPostFilterUsage(PostFilterUsage postFilterUsage); void insertPostFilterUsage(PostFilterUsage postFilterUsage);