diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/BackupUtils.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/BackupUtils.kt index 2d641f25..48d96bb5 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/BackupUtils.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/BackupUtils.kt @@ -88,6 +88,58 @@ object BackupUtils { @JsonProperty("settings") val settings: BackupVars ) + fun Context.getBackup(): BackupFile { + val allData = getSharedPrefs().all.filter { it.key.isTransferable() } + val allSettings = getDefaultSharedPrefs().all.filter { it.key.isTransferable() } + + val allDataSorted = BackupVars( + allData.filter { it.value is Boolean } as? Map, + allData.filter { it.value is Int } as? Map, + allData.filter { it.value is String } as? Map, + allData.filter { it.value is Float } as? Map, + allData.filter { it.value is Long } as? Map, + allData.filter { it.value as? Set != null } as? Map> + ) + + val allSettingsSorted = BackupVars( + allSettings.filter { it.value is Boolean } as? Map, + allSettings.filter { it.value is Int } as? Map, + allSettings.filter { it.value is String } as? Map, + allSettings.filter { it.value is Float } as? Map, + allSettings.filter { it.value is Long } as? Map, + allSettings.filter { it.value as? Set != null } as? Map> + ) + + return BackupFile( + allDataSorted, + allSettingsSorted + ) + } + + fun Context.restore( + backupFile: BackupFile, + restoreSettings: Boolean, + restoreDataStore: Boolean + ) { + if (restoreSettings) { + restoreMap(backupFile.settings._Bool, true) + restoreMap(backupFile.settings._Int, true) + restoreMap(backupFile.settings._String, true) + restoreMap(backupFile.settings._Float, true) + restoreMap(backupFile.settings._Long, true) + restoreMap(backupFile.settings._StringSet, true) + } + + if (restoreDataStore) { + restoreMap(backupFile.datastore._Bool) + restoreMap(backupFile.datastore._Int) + restoreMap(backupFile.datastore._String) + restoreMap(backupFile.datastore._Float) + restoreMap(backupFile.datastore._Long) + restoreMap(backupFile.datastore._StringSet) + } + } + fun FragmentActivity.backup() { try { if (checkWrite()) { @@ -95,32 +147,7 @@ object BackupUtils { val date = SimpleDateFormat("yyyy_MM_dd_HH_mm").format(Date(currentTimeMillis())) val ext = "json" val displayName = "CS3_Backup_${date}" - - val allData = getSharedPrefs().all.filter { it.key.isTransferable() } - val allSettings = getDefaultSharedPrefs().all.filter { it.key.isTransferable() } - - val allDataSorted = BackupVars( - allData.filter { it.value is Boolean } as? Map, - allData.filter { it.value is Int } as? Map, - allData.filter { it.value is String } as? Map, - allData.filter { it.value is Float } as? Map, - allData.filter { it.value is Long } as? Map, - allData.filter { it.value as? Set != null } as? Map> - ) - - val allSettingsSorted = BackupVars( - allSettings.filter { it.value is Boolean } as? Map, - allSettings.filter { it.value is Int } as? Map, - allSettings.filter { it.value is String } as? Map, - allSettings.filter { it.value is Float } as? Map, - allSettings.filter { it.value is Long } as? Map, - allSettings.filter { it.value as? Set != null } as? Map> - ) - - val backupFile = BackupFile( - allDataSorted, - allSettingsSorted - ) + val backupFile = getBackup() val steam = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && subDir?.isDownloadDir() == true) { @@ -251,28 +278,4 @@ object BackupUtils { setKeyRaw(it.key, it.value, isEditingAppSettings) } } - - fun Context.restore( - backupFile: BackupFile, - restoreSettings: Boolean, - restoreDataStore: Boolean - ) { - if (restoreSettings) { - restoreMap(backupFile.settings._Bool, true) - restoreMap(backupFile.settings._Int, true) - restoreMap(backupFile.settings._String, true) - restoreMap(backupFile.settings._Float, true) - restoreMap(backupFile.settings._Long, true) - restoreMap(backupFile.settings._StringSet, true) - } - - if (restoreDataStore) { - restoreMap(backupFile.datastore._Bool) - restoreMap(backupFile.datastore._Int) - restoreMap(backupFile.datastore._String) - restoreMap(backupFile.datastore._Float) - restoreMap(backupFile.datastore._Long) - restoreMap(backupFile.datastore._StringSet) - } - } } \ No newline at end of file