[DO NOT USE] Import backupFav

This commit is contained in:
tarsin committed 2023-06-05 15:23:24 +08:00
1 parent 48e12154c3
commit b41e564411
1 file changed
+39 -1
@@ -35,13 +35,17 @@ import com.hippo.ehviewer.BuildConfig
import com.hippo.ehviewer.EhDB
import com.hippo.ehviewer.R
import com.hippo.ehviewer.Settings
import com.hippo.ehviewer.client.EhEngine
import com.hippo.ehviewer.client.data.FavListUrlBuilder
import com.hippo.ehviewer.ui.legacy.BaseDialogBuilder
import com.hippo.ehviewer.ui.login.LocalNavController
import com.hippo.ehviewer.util.LogCat
import com.hippo.ehviewer.util.ReadableTime
import eu.kanade.tachiyomi.util.lang.withUIContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import moe.tarsin.coroutines.runSuspendCatching
import java.io.File
import java.util.zip.ZipEntry
import java.util.zip.ZipOutputStream
@@ -198,10 +202,44 @@ fun AdvancedScreen() {
title = stringResource(id = R.string.settings_advanced_import_data),
summary = stringResource(id = R.string.settings_advanced_import_data_summary),
) { importLauncher.launch("application/octet-stream") }
val backupNothing = stringResource(id = R.string.settings_advanced_backup_favorite_nothing)
val backupFailed = stringResource(id = R.string.settings_advanced_backup_favorite_failed)
val backupSucceed = stringResource(id = R.string.settings_advanced_backup_favorite_success)
Preference(
title = stringResource(id = R.string.settings_advanced_backup_favorite),
summary = stringResource(id = R.string.settings_advanced_backup_favorite_summary),
)
) {
val favListUrlBuilder = FavListUrlBuilder()
var favTotal = 0
var favIndex = 0
tailrec suspend fun doBackup() {
val result = EhEngine.getFavorites(favListUrlBuilder.build())
if (result.galleryInfoList.isEmpty()) {
snackbarHostState.showSnackbar(backupNothing)
} else {
if (favTotal == 0) favTotal = result.countArray.sum()
favIndex += result.galleryInfoList.size
val status = "($favIndex/$favTotal)"
EhDB.putLocalFavorites(result.galleryInfoList)
snackbarHostState.showSnackbar(context.getString(R.string.settings_advanced_backup_favorite_start, status))
if (result.next != null) {
delay(Settings.downloadDelay.toLong())
favListUrlBuilder.setIndex(result.next, true)
doBackup()
}
}
}
coroutineScope.launch {
runSuspendCatching {
doBackup()
}.onSuccess {
snackbarHostState.showSnackbar(backupSucceed)
}.onFailure {
it.printStackTrace()
snackbarHostState.showSnackbar(backupFailed)
}
}
}
Preference(
title = stringResource(id = R.string.open_by_default),
summary = null,