You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ytdl-android/app/src/main/java/com/deniscerri/ytdl/util/BackupSettingsUtil.kt

197 lines
6.7 KiB
Kotlin

package com.deniscerri.ytdl.util
import android.content.SharedPreferences
import com.deniscerri.ytdl.database.models.BackupSettingsItem
import com.deniscerri.ytdl.database.repository.CommandTemplateRepository
import com.deniscerri.ytdl.database.repository.CookieRepository
import com.deniscerri.ytdl.database.repository.DownloadRepository
import com.deniscerri.ytdl.database.repository.HistoryRepository
import com.deniscerri.ytdl.database.repository.ObserveSourcesRepository
import com.deniscerri.ytdl.database.repository.SearchHistoryRepository
import com.google.gson.Gson
import com.google.gson.JsonArray
import com.google.gson.JsonParser
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
object BackupSettingsUtil {
fun backupSettings(preferences: SharedPreferences) : JsonArray {
runCatching {
val prefs = preferences.all
prefs.remove("dlpVersion")
prefs.remove("app_language")
prefs.remove("cache_downloads")
prefs.remove("use_alarm_for_scheduling")
2 weeks ago
prefs.remove("use_bgutils_potoken_generator")
val res = prefs.map { BackupSettingsItem(
key = it.key,
value = it.value.toString(),
type = it.value!!::class.simpleName
) }
val arr = JsonArray()
res.forEach {
arr.add(JsonParser.parseString(Gson().toJson(it)).asJsonObject)
}
return arr
}
return JsonArray()
}
suspend fun backupHistory(historyRepository: HistoryRepository) : JsonArray {
runCatching {
val historyItems = withContext(Dispatchers.IO) {
historyRepository.getAll()
}
val arr = JsonArray()
5 months ago
historyItems.reversed().forEach {
arr.add(JsonParser.parseString(Gson().toJson(it)).asJsonObject)
}
return arr
}
return JsonArray()
}
suspend fun backupQueuedDownloads(downloadRepository: DownloadRepository) : JsonArray {
runCatching {
val items = withContext(Dispatchers.IO) {
downloadRepository.getQueuedDownloads()
}
val arr = JsonArray()
5 months ago
items.reversed().forEach {
arr.add(JsonParser.parseString(Gson().toJson(it)).asJsonObject)
}
return arr
}
return JsonArray()
}
suspend fun backupScheduledDownloads(downloadRepository: DownloadRepository) : JsonArray {
runCatching {
val items = withContext(Dispatchers.IO) {
downloadRepository.getScheduledDownloads()
}
val arr = JsonArray()
5 months ago
items.reversed().forEach {
arr.add(JsonParser.parseString(Gson().toJson(it)).asJsonObject)
}
return arr
}
return JsonArray()
}
suspend fun backupCancelledDownloads(downloadRepository: DownloadRepository) : JsonArray {
runCatching {
val items = withContext(Dispatchers.IO) {
downloadRepository.getCancelledDownloads()
}
val arr = JsonArray()
5 months ago
items.reversed().forEach {
arr.add(JsonParser.parseString(Gson().toJson(it)).asJsonObject)
}
return arr
}
return JsonArray()
}
suspend fun backupErroredDownloads(downloadRepository: DownloadRepository) : JsonArray {
runCatching {
val items = withContext(Dispatchers.IO) {
downloadRepository.getErroredDownloads()
}
val arr = JsonArray()
5 months ago
items.reversed().forEach {
arr.add(JsonParser.parseString(Gson().toJson(it)).asJsonObject)
}
return arr
}
return JsonArray()
}
suspend fun backupSavedDownloads(downloadRepository: DownloadRepository) : JsonArray {
runCatching {
val items = withContext(Dispatchers.IO) {
downloadRepository.getSavedDownloads()
}
val arr = JsonArray()
5 months ago
items.reversed().forEach {
arr.add(JsonParser.parseString(Gson().toJson(it)).asJsonObject)
}
return arr
}
return JsonArray()
}
suspend fun backupCookies(cookieRepository: CookieRepository) : JsonArray {
runCatching {
val items = withContext(Dispatchers.IO) {
cookieRepository.getAll()
}
val arr = JsonArray()
5 months ago
items.reversed().forEach {
arr.add(JsonParser.parseString(Gson().toJson(it)).asJsonObject)
}
return arr
}
return JsonArray()
}
suspend fun backupCommandTemplates(commandTemplateRepository: CommandTemplateRepository) : JsonArray {
runCatching {
val items = withContext(Dispatchers.IO) {
commandTemplateRepository.getAll()
}
val arr = JsonArray()
5 months ago
items.reversed().forEach {
it.useAsExtraCommand = false
arr.add(JsonParser.parseString(Gson().toJson(it)).asJsonObject)
}
return arr
}
return JsonArray()
}
suspend fun backupShortcuts(commandTemplateRepository: CommandTemplateRepository) : JsonArray {
runCatching {
val items = withContext(Dispatchers.IO) {
commandTemplateRepository.getAllShortCuts()
}
val arr = JsonArray()
5 months ago
items.reversed().forEach {
arr.add(JsonParser.parseString(Gson().toJson(it)).asJsonObject)
}
return arr
}
return JsonArray()
}
suspend fun backupSearchHistory(searchHistoryRepository: SearchHistoryRepository) : JsonArray {
runCatching {
val historyItems = withContext(Dispatchers.IO) {
searchHistoryRepository.getAll()
}
val arr = JsonArray()
5 months ago
historyItems.reversed().forEach {
arr.add(JsonParser.parseString(Gson().toJson(it)).asJsonObject)
}
return arr
}
return JsonArray()
}
suspend fun backupObserveSources(observeSourcesRepository: ObserveSourcesRepository) : JsonArray {
runCatching {
val observeSourcesItems = withContext(Dispatchers.IO) {
observeSourcesRepository.getAll()
}
val arr = JsonArray()
5 months ago
observeSourcesItems.reversed().forEach {
arr.add(JsonParser.parseString(Gson().toJson(it)).asJsonObject)
}
return arr
}
return JsonArray()
}
}