优化
This commit is contained in:
@@ -43,6 +43,8 @@ class App : MultiDexApplication() {
|
|||||||
registerActivityLifecycleCallbacks(LifecycleHelp)
|
registerActivityLifecycleCallbacks(LifecycleHelp)
|
||||||
defaultSharedPreferences.registerOnSharedPreferenceChangeListener(AppConfig)
|
defaultSharedPreferences.registerOnSharedPreferenceChangeListener(AppConfig)
|
||||||
Coroutine.async {
|
Coroutine.async {
|
||||||
|
//WebDav初始化
|
||||||
|
AppWebDav.initConfig()
|
||||||
//初始化封面
|
//初始化封面
|
||||||
BookCover.toString()
|
BookCover.toString()
|
||||||
//清除过期数据
|
//清除过期数据
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ object AppWebDav {
|
|||||||
private val bookProgressUrl = "${rootWebDavUrl}bookProgress/"
|
private val bookProgressUrl = "${rootWebDavUrl}bookProgress/"
|
||||||
private val zipFilePath = "${appCtx.externalFiles.absolutePath}${File.separator}backup.zip"
|
private val zipFilePath = "${appCtx.externalFiles.absolutePath}${File.separator}backup.zip"
|
||||||
|
|
||||||
|
var isOk = false
|
||||||
|
|
||||||
private val rootWebDavUrl: String
|
private val rootWebDavUrl: String
|
||||||
get() {
|
get() {
|
||||||
val configUrl = appCtx.getPrefString(PreferKey.webDavUrl)?.trim()
|
val configUrl = appCtx.getPrefString(PreferKey.webDavUrl)?.trim()
|
||||||
@@ -49,23 +51,21 @@ object AppWebDav {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Throws(Exception::class)
|
@Throws(Exception::class)
|
||||||
suspend fun initWebDav(): Boolean {
|
suspend fun initConfig() {
|
||||||
|
isOk = false
|
||||||
val account = appCtx.getPrefString(PreferKey.webDavAccount)
|
val account = appCtx.getPrefString(PreferKey.webDavAccount)
|
||||||
val password = appCtx.getPrefString(PreferKey.webDavPassword)
|
val password = appCtx.getPrefString(PreferKey.webDavPassword)
|
||||||
if (!account.isNullOrBlank() && !password.isNullOrBlank()) {
|
if (!account.isNullOrBlank() && !password.isNullOrBlank()) {
|
||||||
HttpAuth.auth = HttpAuth.Auth(account, password)
|
HttpAuth.auth = HttpAuth.Auth(account, password)
|
||||||
WebDav(rootWebDavUrl).makeAsDir()
|
isOk = WebDav(rootWebDavUrl).makeAsDir() && WebDav(bookProgressUrl).makeAsDir()
|
||||||
WebDav(bookProgressUrl).makeAsDir()
|
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Throws(Exception::class)
|
@Throws(Exception::class)
|
||||||
private suspend fun getWebDavFileNames(): ArrayList<String> {
|
private suspend fun getWebDavFileNames(): ArrayList<String> {
|
||||||
val url = rootWebDavUrl
|
val url = rootWebDavUrl
|
||||||
val names = arrayListOf<String>()
|
val names = arrayListOf<String>()
|
||||||
if (initWebDav()) {
|
if (isOk) {
|
||||||
var files = WebDav(url).listFiles()
|
var files = WebDav(url).listFiles()
|
||||||
files = files.reversed()
|
files = files.reversed()
|
||||||
files.forEach {
|
files.forEach {
|
||||||
@@ -120,7 +120,7 @@ object AppWebDav {
|
|||||||
|
|
||||||
suspend fun backUpWebDav(path: String) {
|
suspend fun backUpWebDav(path: String) {
|
||||||
try {
|
try {
|
||||||
if (initWebDav() && NetworkUtils.isAvailable()) {
|
if (isOk && NetworkUtils.isAvailable()) {
|
||||||
val paths = arrayListOf(*Backup.backupFileNames)
|
val paths = arrayListOf(*Backup.backupFileNames)
|
||||||
for (i in 0 until paths.size) {
|
for (i in 0 until paths.size) {
|
||||||
paths[i] = path + File.separator + paths[i]
|
paths[i] = path + File.separator + paths[i]
|
||||||
@@ -138,7 +138,7 @@ object AppWebDav {
|
|||||||
|
|
||||||
suspend fun exportWebDav(byteArray: ByteArray, fileName: String) {
|
suspend fun exportWebDav(byteArray: ByteArray, fileName: String) {
|
||||||
try {
|
try {
|
||||||
if (initWebDav() && NetworkUtils.isAvailable()) {
|
if (isOk && NetworkUtils.isAvailable()) {
|
||||||
// 默认导出到legado文件夹下exports目录
|
// 默认导出到legado文件夹下exports目录
|
||||||
val exportsWebDavUrl = rootWebDavUrl + EncoderUtils.escape("exports") + "/"
|
val exportsWebDavUrl = rootWebDavUrl + EncoderUtils.escape("exports") + "/"
|
||||||
// 在legado文件夹创建exports目录,如果不存在的话
|
// 在legado文件夹创建exports目录,如果不存在的话
|
||||||
@@ -161,7 +161,7 @@ object AppWebDav {
|
|||||||
val bookProgress = BookProgress(book)
|
val bookProgress = BookProgress(book)
|
||||||
val json = GSON.toJson(bookProgress)
|
val json = GSON.toJson(bookProgress)
|
||||||
val url = getProgressUrl(book)
|
val url = getProgressUrl(book)
|
||||||
if (initWebDav()) {
|
if (isOk) {
|
||||||
WebDav(url).upload(json.toByteArray(), "application/json")
|
WebDav(url).upload(json.toByteArray(), "application/json")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -175,7 +175,7 @@ object AppWebDav {
|
|||||||
* 获取书籍进度
|
* 获取书籍进度
|
||||||
*/
|
*/
|
||||||
suspend fun getBookProgress(book: Book): BookProgress? {
|
suspend fun getBookProgress(book: Book): BookProgress? {
|
||||||
if (initWebDav() && NetworkUtils.isAvailable()) {
|
if (isOk && NetworkUtils.isAvailable()) {
|
||||||
val url = getProgressUrl(book)
|
val url = getProgressUrl(book)
|
||||||
WebDav(url).download()?.let { byteArray ->
|
WebDav(url).download()?.let { byteArray ->
|
||||||
val json = String(byteArray)
|
val json = String(byteArray)
|
||||||
|
|||||||
@@ -22,7 +22,11 @@ object BackupConfig {
|
|||||||
PreferKey.themeMode,
|
PreferKey.themeMode,
|
||||||
PreferKey.bookshelfLayout,
|
PreferKey.bookshelfLayout,
|
||||||
PreferKey.showRss,
|
PreferKey.showRss,
|
||||||
PreferKey.threadCount
|
PreferKey.threadCount,
|
||||||
|
PreferKey.webDavUrl,
|
||||||
|
PreferKey.webDavDir,
|
||||||
|
PreferKey.webDavAccount,
|
||||||
|
PreferKey.webDavPassword
|
||||||
)
|
)
|
||||||
|
|
||||||
//配置忽略标题
|
//配置忽略标题
|
||||||
|
|||||||
@@ -60,8 +60,11 @@ import io.legado.app.ui.replace.ReplaceRuleActivity
|
|||||||
import io.legado.app.ui.replace.edit.ReplaceEditActivity
|
import io.legado.app.ui.replace.edit.ReplaceEditActivity
|
||||||
import io.legado.app.ui.widget.dialog.TextDialog
|
import io.legado.app.ui.widget.dialog.TextDialog
|
||||||
import io.legado.app.utils.*
|
import io.legado.app.utils.*
|
||||||
import kotlinx.coroutines.*
|
|
||||||
import kotlinx.coroutines.Dispatchers.IO
|
import kotlinx.coroutines.Dispatchers.IO
|
||||||
|
import kotlinx.coroutines.Job
|
||||||
|
import kotlinx.coroutines.delay
|
||||||
|
import kotlinx.coroutines.isActive
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
class ReadBookActivity : BaseReadBookActivity(),
|
class ReadBookActivity : BaseReadBookActivity(),
|
||||||
View.OnTouchListener,
|
View.OnTouchListener,
|
||||||
@@ -245,13 +248,7 @@ class ReadBookActivity : BaseReadBookActivity(),
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
launch {
|
menu.findItem(R.id.menu_get_progress)?.isVisible = AppWebDav.isOk
|
||||||
menu.findItem(R.id.menu_get_progress)?.isVisible =
|
|
||||||
withContext(IO) {
|
|
||||||
runCatching { AppWebDav.initWebDav() }
|
|
||||||
.getOrElse { false }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user