pull/737/head
parent
8da3227542
commit
f3917d9d5e
@ -1,50 +1,50 @@ |
|||||||
package io.legado.app.help.storage |
package io.legado.app.help.storage |
||||||
|
|
||||||
import io.legado.app.App |
import io.legado.app.data.entities.Book |
||||||
import io.legado.app.data.entities.BookProgress |
import io.legado.app.data.entities.BookProgress |
||||||
import io.legado.app.help.coroutine.Coroutine |
import io.legado.app.help.coroutine.Coroutine |
||||||
import io.legado.app.lib.webdav.WebDav |
import io.legado.app.lib.webdav.WebDav |
||||||
import io.legado.app.utils.FileUtils |
|
||||||
import io.legado.app.utils.GSON |
import io.legado.app.utils.GSON |
||||||
import io.legado.app.utils.fromJsonArray |
import io.legado.app.utils.fromJsonObject |
||||||
|
|
||||||
@Suppress("BlockingMethodInNonBlockingContext") |
@Suppress("BlockingMethodInNonBlockingContext") |
||||||
object SyncBookProgress { |
object SyncBookProgress { |
||||||
const val fileName = "bookProgress.json" |
|
||||||
private val file = FileUtils.createFileIfNotExist(App.INSTANCE.cacheDir, fileName) |
|
||||||
private val webDavUrl = "${WebDavHelp.rootWebDavUrl}$fileName" |
|
||||||
|
|
||||||
fun uploadBookProgress() { |
private val webDavUrl = "${WebDavHelp.rootWebDavUrl}bookProgress/" |
||||||
|
|
||||||
|
fun uploadBookProgress(book: Book) { |
||||||
Coroutine.async { |
Coroutine.async { |
||||||
val value = App.db.bookDao.allBookProgress |
val bookProgress = BookProgress( |
||||||
if (value.isNotEmpty()) { |
name = book.name, |
||||||
val json = GSON.toJson(value) |
author = book.author, |
||||||
file.writeText(json) |
durChapterIndex = book.durChapterIndex, |
||||||
if (WebDavHelp.initWebDav()) { |
durChapterPos = book.durChapterPos, |
||||||
WebDav(webDavUrl).upload(file.absolutePath) |
durChapterTime = book.durChapterTime, |
||||||
} |
durChapterTitle = book.durChapterTitle |
||||||
|
) |
||||||
|
val json = GSON.toJson(bookProgress) |
||||||
|
val url = getUrl(book) |
||||||
|
if (WebDavHelp.initWebDav()) { |
||||||
|
WebDav(webDavUrl).makeAsDir() |
||||||
|
WebDav(url).upload(json.toByteArray()) |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
fun downloadBookProgress() { |
fun getBookProgress(book: Book): BookProgress? { |
||||||
Coroutine.async { |
if (WebDavHelp.initWebDav()) { |
||||||
if (WebDavHelp.initWebDav()) { |
val url = getUrl(book) |
||||||
WebDav(webDavUrl).downloadTo(file.absolutePath, true) |
WebDav(url).download()?.let { byteArray -> |
||||||
if (file.exists()) { |
val json = String(byteArray) |
||||||
val json = file.readText() |
GSON.fromJsonObject<BookProgress>(json)?.let { |
||||||
GSON.fromJsonArray<BookProgress>(json)?.forEach { |
return it |
||||||
App.db.bookDao.upBookProgress( |
|
||||||
bookUrl = it.bookUrl, |
|
||||||
durChapterIndex = it.durChapterIndex, |
|
||||||
durChapterPos = it.durChapterPos, |
|
||||||
durChapterTime = it.durChapterTime, |
|
||||||
durChapterTitle = it.durChapterTitle |
|
||||||
) |
|
||||||
} |
|
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
|
return null |
||||||
} |
} |
||||||
|
|
||||||
|
private fun getUrl(book: Book): String { |
||||||
|
return webDavUrl + book.name + "_" + book.author + ".json" |
||||||
|
} |
||||||
} |
} |
Loading…
Reference in new issue