优化
This commit is contained in:
@@ -16,15 +16,15 @@ import io.legado.app.constant.AppConst.channelIdReadAloud
|
|||||||
import io.legado.app.constant.AppConst.channelIdWeb
|
import io.legado.app.constant.AppConst.channelIdWeb
|
||||||
import io.legado.app.constant.PreferKey
|
import io.legado.app.constant.PreferKey
|
||||||
import io.legado.app.data.appDb
|
import io.legado.app.data.appDb
|
||||||
import io.legado.app.help.BookHelp
|
import io.legado.app.help.AppWebDav
|
||||||
import io.legado.app.help.CrashHandler
|
import io.legado.app.help.CrashHandler
|
||||||
import io.legado.app.help.LifecycleHelp
|
import io.legado.app.help.LifecycleHelp
|
||||||
import io.legado.app.help.RuleBigDataHelp
|
import io.legado.app.help.RuleBigDataHelp
|
||||||
|
import io.legado.app.help.book.BookHelp
|
||||||
import io.legado.app.help.config.AppConfig
|
import io.legado.app.help.config.AppConfig
|
||||||
import io.legado.app.help.config.ThemeConfig.applyDayNight
|
import io.legado.app.help.config.ThemeConfig.applyDayNight
|
||||||
import io.legado.app.help.coroutine.Coroutine
|
import io.legado.app.help.coroutine.Coroutine
|
||||||
import io.legado.app.help.http.cronet.CronetLoader
|
import io.legado.app.help.http.cronet.CronetLoader
|
||||||
import io.legado.app.help.webdav.AppWebDav
|
|
||||||
import io.legado.app.model.BookCover
|
import io.legado.app.model.BookCover
|
||||||
import io.legado.app.utils.defaultSharedPreferences
|
import io.legado.app.utils.defaultSharedPreferences
|
||||||
import io.legado.app.utils.getPrefBoolean
|
import io.legado.app.utils.getPrefBoolean
|
||||||
|
|||||||
@@ -7,12 +7,12 @@ import io.legado.app.data.appDb
|
|||||||
import io.legado.app.data.entities.Book
|
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.data.entities.BookSource
|
import io.legado.app.data.entities.BookSource
|
||||||
import io.legado.app.help.BookHelp
|
import io.legado.app.help.AppWebDav
|
||||||
import io.legado.app.help.CacheManager
|
import io.legado.app.help.CacheManager
|
||||||
import io.legado.app.help.ContentProcessor
|
import io.legado.app.help.book.BookHelp
|
||||||
|
import io.legado.app.help.book.ContentProcessor
|
||||||
import io.legado.app.help.glide.ImageLoader
|
import io.legado.app.help.glide.ImageLoader
|
||||||
import io.legado.app.help.isLocal
|
import io.legado.app.help.isLocal
|
||||||
import io.legado.app.help.webdav.AppWebDav
|
|
||||||
import io.legado.app.model.BookCover
|
import io.legado.app.model.BookCover
|
||||||
import io.legado.app.model.localBook.LocalBook
|
import io.legado.app.model.localBook.LocalBook
|
||||||
import io.legado.app.model.webBook.WebBook
|
import io.legado.app.model.webBook.WebBook
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import io.legado.app.constant.AppPattern
|
|||||||
import io.legado.app.constant.BookType
|
import io.legado.app.constant.BookType
|
||||||
import io.legado.app.constant.PageAnim
|
import io.legado.app.constant.PageAnim
|
||||||
import io.legado.app.data.appDb
|
import io.legado.app.data.appDb
|
||||||
import io.legado.app.help.BookHelp
|
import io.legado.app.help.book.BookHelp
|
||||||
import io.legado.app.help.ContentProcessor
|
import io.legado.app.help.book.ContentProcessor
|
||||||
import io.legado.app.help.config.AppConfig
|
import io.legado.app.help.config.AppConfig
|
||||||
import io.legado.app.help.config.ReadBookConfig
|
import io.legado.app.help.config.ReadBookConfig
|
||||||
import io.legado.app.help.isEpub
|
import io.legado.app.help.isEpub
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package io.legado.app.help.webdav
|
package io.legado.app.help
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import io.legado.app.R
|
import io.legado.app.R
|
||||||
+4
-1
@@ -1,4 +1,4 @@
|
|||||||
package io.legado.app.help
|
package io.legado.app.help.book
|
||||||
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import androidx.documentfile.provider.DocumentFile
|
import androidx.documentfile.provider.DocumentFile
|
||||||
@@ -9,6 +9,9 @@ import io.legado.app.data.appDb
|
|||||||
import io.legado.app.data.entities.Book
|
import io.legado.app.data.entities.Book
|
||||||
import io.legado.app.data.entities.BookChapter
|
import io.legado.app.data.entities.BookChapter
|
||||||
import io.legado.app.data.entities.BookSource
|
import io.legado.app.data.entities.BookSource
|
||||||
|
import io.legado.app.help.isEpub
|
||||||
|
import io.legado.app.help.isLocal
|
||||||
|
import io.legado.app.help.isLocalTxt
|
||||||
import io.legado.app.model.analyzeRule.AnalyzeUrl
|
import io.legado.app.model.analyzeRule.AnalyzeUrl
|
||||||
import io.legado.app.model.localBook.LocalBook
|
import io.legado.app.model.localBook.LocalBook
|
||||||
import io.legado.app.utils.*
|
import io.legado.app.utils.*
|
||||||
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
package io.legado.app.help
|
package io.legado.app.help.book
|
||||||
|
|
||||||
import java.util.regex.Pattern
|
import java.util.regex.Pattern
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
@@ -478,7 +478,7 @@ object ContentHelp {
|
|||||||
val patten = Pattern.compile(
|
val patten = Pattern.compile(
|
||||||
"""
|
"""
|
||||||
(?<=["'”“])([^
|
(?<=["'”“])([^
|
||||||
\p{P}]{1,${WORD_MAX_LENGTH}})(?=["'”“])
|
\p{P}]{1,$WORD_MAX_LENGTH})(?=["'”“])
|
||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
)
|
)
|
||||||
//Pattern patten = Pattern.compile("(?<=[\"'”“])([^\n\"'”“]{1,16})(?=[\"'”“])");
|
//Pattern patten = Pattern.compile("(?<=[\"'”“])([^\n\"'”“]{1,16})(?=[\"'”“])");
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package io.legado.app.help
|
package io.legado.app.help.book
|
||||||
|
|
||||||
import com.github.liuyueyi.quick.transfer.ChineseUtils
|
import com.github.liuyueyi.quick.transfer.ChineseUtils
|
||||||
import io.legado.app.constant.AppLog
|
import io.legado.app.constant.AppLog
|
||||||
@@ -6,12 +6,12 @@ import androidx.documentfile.provider.DocumentFile
|
|||||||
import io.legado.app.constant.AppLog
|
import io.legado.app.constant.AppLog
|
||||||
import io.legado.app.constant.PreferKey
|
import io.legado.app.constant.PreferKey
|
||||||
import io.legado.app.data.appDb
|
import io.legado.app.data.appDb
|
||||||
|
import io.legado.app.help.AppWebDav
|
||||||
import io.legado.app.help.DirectLinkUpload
|
import io.legado.app.help.DirectLinkUpload
|
||||||
import io.legado.app.help.config.LocalConfig
|
import io.legado.app.help.config.LocalConfig
|
||||||
import io.legado.app.help.config.ReadBookConfig
|
import io.legado.app.help.config.ReadBookConfig
|
||||||
import io.legado.app.help.config.ThemeConfig
|
import io.legado.app.help.config.ThemeConfig
|
||||||
import io.legado.app.help.coroutine.Coroutine
|
import io.legado.app.help.coroutine.Coroutine
|
||||||
import io.legado.app.help.webdav.AppWebDav
|
|
||||||
import io.legado.app.utils.*
|
import io.legado.app.utils.*
|
||||||
import kotlinx.coroutines.Dispatchers.IO
|
import kotlinx.coroutines.Dispatchers.IO
|
||||||
import kotlinx.coroutines.ensureActive
|
import kotlinx.coroutines.ensureActive
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ import io.legado.app.help.http.okHttpClient
|
|||||||
import io.legado.app.help.http.text
|
import io.legado.app.help.http.text
|
||||||
import io.legado.app.utils.NetworkUtils
|
import io.legado.app.utils.NetworkUtils
|
||||||
import io.legado.app.utils.printOnDebug
|
import io.legado.app.utils.printOnDebug
|
||||||
|
import kotlinx.coroutines.Dispatchers.IO
|
||||||
|
import kotlinx.coroutines.withContext
|
||||||
import okhttp3.Interceptor
|
import okhttp3.Interceptor
|
||||||
import okhttp3.MediaType.Companion.toMediaType
|
import okhttp3.MediaType.Companion.toMediaType
|
||||||
import okhttp3.RequestBody.Companion.asRequestBody
|
import okhttp3.RequestBody.Companion.asRequestBody
|
||||||
@@ -274,16 +276,18 @@ open class WebDav(val path: String, val authorization: Authorization) {
|
|||||||
contentType: String = "application/octet-stream"
|
contentType: String = "application/octet-stream"
|
||||||
) {
|
) {
|
||||||
kotlin.runCatching {
|
kotlin.runCatching {
|
||||||
val file = File(localPath)
|
withContext(IO) {
|
||||||
if (!file.exists()) throw WebDavException("文件不存在")
|
val file = File(localPath)
|
||||||
// 务必注意RequestBody不要嵌套,不然上传时内容可能会被追加多余的文件信息
|
if (!file.exists()) throw WebDavException("文件不存在")
|
||||||
val fileBody = file.asRequestBody(contentType.toMediaType())
|
// 务必注意RequestBody不要嵌套,不然上传时内容可能会被追加多余的文件信息
|
||||||
val url = httpUrl ?: throw WebDavException("url不能为空")
|
val fileBody = file.asRequestBody(contentType.toMediaType())
|
||||||
webDavClient.newCallResponse {
|
val url = httpUrl ?: throw WebDavException("url不能为空")
|
||||||
url(url)
|
webDavClient.newCallResponse {
|
||||||
put(fileBody)
|
url(url)
|
||||||
}.let {
|
put(fileBody)
|
||||||
checkResult(it)
|
}.let {
|
||||||
|
checkResult(it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}.onFailure {
|
}.onFailure {
|
||||||
AppLog.put("WebDav上传失败\n${it.localizedMessage}", it)
|
AppLog.put("WebDav上传失败\n${it.localizedMessage}", it)
|
||||||
@@ -295,13 +299,15 @@ open class WebDav(val path: String, val authorization: Authorization) {
|
|||||||
suspend fun upload(byteArray: ByteArray, contentType: String) {
|
suspend fun upload(byteArray: ByteArray, contentType: String) {
|
||||||
// 务必注意RequestBody不要嵌套,不然上传时内容可能会被追加多余的文件信息
|
// 务必注意RequestBody不要嵌套,不然上传时内容可能会被追加多余的文件信息
|
||||||
kotlin.runCatching {
|
kotlin.runCatching {
|
||||||
val fileBody = byteArray.toRequestBody(contentType.toMediaType())
|
withContext(IO) {
|
||||||
val url = httpUrl ?: throw NoStackTraceException("url不能为空")
|
val fileBody = byteArray.toRequestBody(contentType.toMediaType())
|
||||||
webDavClient.newCallResponse {
|
val url = httpUrl ?: throw NoStackTraceException("url不能为空")
|
||||||
url(url)
|
webDavClient.newCallResponse {
|
||||||
put(fileBody)
|
url(url)
|
||||||
}.let {
|
put(fileBody)
|
||||||
checkResult(it)
|
}.let {
|
||||||
|
checkResult(it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}.onFailure {
|
}.onFailure {
|
||||||
AppLog.put("WebDav上传失败\n${it.localizedMessage}", it)
|
AppLog.put("WebDav上传失败\n${it.localizedMessage}", it)
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import io.legado.app.data.appDb
|
|||||||
import io.legado.app.data.entities.Book
|
import io.legado.app.data.entities.Book
|
||||||
import io.legado.app.data.entities.BookChapter
|
import io.legado.app.data.entities.BookChapter
|
||||||
import io.legado.app.data.entities.BookSource
|
import io.legado.app.data.entities.BookSource
|
||||||
import io.legado.app.help.ContentProcessor
|
import io.legado.app.help.book.ContentProcessor
|
||||||
import io.legado.app.help.coroutine.Coroutine
|
import io.legado.app.help.coroutine.Coroutine
|
||||||
import io.legado.app.service.AudioPlayService
|
import io.legado.app.service.AudioPlayService
|
||||||
import io.legado.app.utils.postEvent
|
import io.legado.app.utils.postEvent
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import io.legado.app.data.entities.Book
|
|||||||
import io.legado.app.data.entities.BookChapter
|
import io.legado.app.data.entities.BookChapter
|
||||||
import io.legado.app.data.entities.BookSource
|
import io.legado.app.data.entities.BookSource
|
||||||
import io.legado.app.exception.ConcurrentException
|
import io.legado.app.exception.ConcurrentException
|
||||||
import io.legado.app.help.BookHelp
|
import io.legado.app.help.book.BookHelp
|
||||||
import io.legado.app.help.isLocal
|
import io.legado.app.help.isLocal
|
||||||
import io.legado.app.model.webBook.WebBook
|
import io.legado.app.model.webBook.WebBook
|
||||||
import io.legado.app.service.CacheBookService
|
import io.legado.app.service.CacheBookService
|
||||||
|
|||||||
@@ -3,13 +3,13 @@ package io.legado.app.model
|
|||||||
import io.legado.app.constant.AppLog
|
import io.legado.app.constant.AppLog
|
||||||
import io.legado.app.data.appDb
|
import io.legado.app.data.appDb
|
||||||
import io.legado.app.data.entities.*
|
import io.legado.app.data.entities.*
|
||||||
import io.legado.app.help.BookHelp
|
import io.legado.app.help.AppWebDav
|
||||||
import io.legado.app.help.ContentProcessor
|
import io.legado.app.help.book.BookHelp
|
||||||
|
import io.legado.app.help.book.ContentProcessor
|
||||||
import io.legado.app.help.config.AppConfig
|
import io.legado.app.help.config.AppConfig
|
||||||
import io.legado.app.help.config.ReadBookConfig
|
import io.legado.app.help.config.ReadBookConfig
|
||||||
import io.legado.app.help.coroutine.Coroutine
|
import io.legado.app.help.coroutine.Coroutine
|
||||||
import io.legado.app.help.isLocal
|
import io.legado.app.help.isLocal
|
||||||
import io.legado.app.help.webdav.AppWebDav
|
|
||||||
import io.legado.app.model.webBook.WebBook
|
import io.legado.app.model.webBook.WebBook
|
||||||
import io.legado.app.service.BaseReadAloudService
|
import io.legado.app.service.BaseReadAloudService
|
||||||
import io.legado.app.ui.book.read.page.entities.TextChapter
|
import io.legado.app.ui.book.read.page.entities.TextChapter
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import android.text.TextUtils
|
|||||||
import io.legado.app.constant.AppLog
|
import io.legado.app.constant.AppLog
|
||||||
import io.legado.app.data.entities.Book
|
import io.legado.app.data.entities.Book
|
||||||
import io.legado.app.data.entities.BookChapter
|
import io.legado.app.data.entities.BookChapter
|
||||||
import io.legado.app.help.BookHelp
|
import io.legado.app.help.book.BookHelp
|
||||||
import io.legado.app.utils.*
|
import io.legado.app.utils.*
|
||||||
import me.ag2s.epublib.domain.EpubBook
|
import me.ag2s.epublib.domain.EpubBook
|
||||||
import me.ag2s.epublib.domain.Resource
|
import me.ag2s.epublib.domain.Resource
|
||||||
|
|||||||
@@ -14,11 +14,11 @@ import io.legado.app.data.entities.Book
|
|||||||
import io.legado.app.data.entities.BookChapter
|
import io.legado.app.data.entities.BookChapter
|
||||||
import io.legado.app.exception.NoStackTraceException
|
import io.legado.app.exception.NoStackTraceException
|
||||||
import io.legado.app.exception.TocEmptyException
|
import io.legado.app.exception.TocEmptyException
|
||||||
import io.legado.app.help.BookHelp
|
import io.legado.app.help.AppWebDav
|
||||||
|
import io.legado.app.help.book.BookHelp
|
||||||
import io.legado.app.help.config.AppConfig
|
import io.legado.app.help.config.AppConfig
|
||||||
import io.legado.app.help.isEpub
|
import io.legado.app.help.isEpub
|
||||||
import io.legado.app.help.isUmd
|
import io.legado.app.help.isUmd
|
||||||
import io.legado.app.help.webdav.AppWebDav
|
|
||||||
import io.legado.app.lib.webdav.WebDav
|
import io.legado.app.lib.webdav.WebDav
|
||||||
import io.legado.app.model.analyzeRule.AnalyzeUrl
|
import io.legado.app.model.analyzeRule.AnalyzeUrl
|
||||||
import io.legado.app.utils.*
|
import io.legado.app.utils.*
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
package io.legado.app.model.remote
|
||||||
|
|
||||||
|
import android.net.Uri
|
||||||
|
import io.legado.app.data.entities.Book
|
||||||
|
import io.legado.app.data.entities.RemoteBook
|
||||||
|
|
||||||
|
abstract class RemoteBookManager {
|
||||||
|
protected val remoteBookFolder: String = "books"
|
||||||
|
|
||||||
|
abstract suspend fun initRemoteContext()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取书籍列表
|
||||||
|
*/
|
||||||
|
@Throws(Exception::class)
|
||||||
|
abstract suspend fun getRemoteBookList(path: String): MutableList<RemoteBook>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上传书籍
|
||||||
|
*/
|
||||||
|
@Throws(Exception::class)
|
||||||
|
abstract suspend fun upload(book: Book)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除书籍
|
||||||
|
*/
|
||||||
|
@Throws(Exception::class)
|
||||||
|
abstract suspend fun delete(remoteBookUrl: String)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Uri:下载到本地的路径
|
||||||
|
*/
|
||||||
|
@Throws(Exception::class)
|
||||||
|
abstract suspend fun getRemoteBook(remoteBook: RemoteBook): Uri
|
||||||
|
}
|
||||||
+10
-21
@@ -1,4 +1,4 @@
|
|||||||
package io.legado.app.help.webdav
|
package io.legado.app.model.remote
|
||||||
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import io.legado.app.constant.AppPattern.bookFileRegex
|
import io.legado.app.constant.AppPattern.bookFileRegex
|
||||||
@@ -6,10 +6,10 @@ import io.legado.app.constant.BookType
|
|||||||
import io.legado.app.data.entities.Book
|
import io.legado.app.data.entities.Book
|
||||||
import io.legado.app.data.entities.RemoteBook
|
import io.legado.app.data.entities.RemoteBook
|
||||||
import io.legado.app.exception.NoStackTraceException
|
import io.legado.app.exception.NoStackTraceException
|
||||||
|
import io.legado.app.help.AppWebDav
|
||||||
import io.legado.app.lib.webdav.WebDav
|
import io.legado.app.lib.webdav.WebDav
|
||||||
import io.legado.app.lib.webdav.WebDavFile
|
import io.legado.app.lib.webdav.WebDavFile
|
||||||
import io.legado.app.model.localBook.LocalBook
|
import io.legado.app.model.localBook.LocalBook
|
||||||
import io.legado.app.ui.book.remote.RemoteBookManager
|
|
||||||
import io.legado.app.utils.NetworkUtils
|
import io.legado.app.utils.NetworkUtils
|
||||||
import io.legado.app.utils.isContentScheme
|
import io.legado.app.utils.isContentScheme
|
||||||
import io.legado.app.utils.readBytes
|
import io.legado.app.utils.readBytes
|
||||||
@@ -32,9 +32,6 @@ object RemoteBookWebDav : RemoteBookManager() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取远程书籍列表
|
|
||||||
*/
|
|
||||||
@Throws(Exception::class)
|
@Throws(Exception::class)
|
||||||
override suspend fun getRemoteBookList(path: String): MutableList<RemoteBook> {
|
override suspend fun getRemoteBookList(path: String): MutableList<RemoteBook> {
|
||||||
val remoteBooks = mutableListOf<RemoteBook>()
|
val remoteBooks = mutableListOf<RemoteBook>()
|
||||||
@@ -70,23 +67,17 @@ object RemoteBookWebDav : RemoteBookManager() {
|
|||||||
return remoteBooks
|
return remoteBooks
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
override suspend fun getRemoteBook(remoteBook: RemoteBook): Uri {
|
||||||
* 下载指定的远程书籍到本地
|
|
||||||
*/
|
|
||||||
override suspend fun getRemoteBook(remoteBook: RemoteBook): Uri? {
|
|
||||||
return AppWebDav.authorization?.let {
|
return AppWebDav.authorization?.let {
|
||||||
val webdav = WebDav(remoteBook.path, it)
|
val webdav = WebDav(remoteBook.path, it)
|
||||||
webdav.downloadInputStream().let { inputStream ->
|
webdav.downloadInputStream().let { inputStream ->
|
||||||
LocalBook.saveBookFile(inputStream, remoteBook.filename)
|
LocalBook.saveBookFile(inputStream, remoteBook.filename)
|
||||||
}
|
}
|
||||||
}
|
} ?: throw NoStackTraceException("webDav没有配置")
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
override suspend fun upload(book: Book) {
|
||||||
* 上传本地导入的书籍到远程
|
if (!NetworkUtils.isAvailable()) throw NoStackTraceException("网络不可用")
|
||||||
*/
|
|
||||||
override suspend fun upload(book: Book): Boolean {
|
|
||||||
if (!NetworkUtils.isAvailable()) return false
|
|
||||||
val localBookUri = Uri.parse(book.bookUrl)
|
val localBookUri = Uri.parse(book.bookUrl)
|
||||||
val putUrl = "$rootBookUrl${File.separator}${book.originName}"
|
val putUrl = "$rootBookUrl${File.separator}${book.originName}"
|
||||||
AppWebDav.authorization?.let {
|
AppWebDav.authorization?.let {
|
||||||
@@ -98,17 +89,15 @@ object RemoteBookWebDav : RemoteBookManager() {
|
|||||||
} else {
|
} else {
|
||||||
WebDav(putUrl, it).upload(localBookUri.path!!)
|
WebDav(putUrl, it).upload(localBookUri.path!!)
|
||||||
}
|
}
|
||||||
}
|
} ?: throw NoStackTraceException("webDav没有配置")
|
||||||
book.origin = BookType.webDavTag + putUrl
|
book.origin = BookType.webDavTag + putUrl
|
||||||
book.save()
|
book.save()
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun delete(remoteBookUrl: String): Boolean {
|
override suspend fun delete(remoteBookUrl: String) {
|
||||||
AppWebDav.authorization?.let {
|
AppWebDav.authorization?.let {
|
||||||
return WebDav(remoteBookUrl, it).delete()
|
WebDav(remoteBookUrl, it).delete()
|
||||||
}
|
} ?: throw NoStackTraceException("webDav没有配置")
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -8,7 +8,7 @@ import io.legado.app.data.entities.BookSource
|
|||||||
import io.legado.app.data.entities.rule.TocRule
|
import io.legado.app.data.entities.rule.TocRule
|
||||||
import io.legado.app.exception.NoStackTraceException
|
import io.legado.app.exception.NoStackTraceException
|
||||||
import io.legado.app.exception.TocEmptyException
|
import io.legado.app.exception.TocEmptyException
|
||||||
import io.legado.app.help.ContentProcessor
|
import io.legado.app.help.book.ContentProcessor
|
||||||
import io.legado.app.model.Debug
|
import io.legado.app.model.Debug
|
||||||
import io.legado.app.model.analyzeRule.AnalyzeRule
|
import io.legado.app.model.analyzeRule.AnalyzeRule
|
||||||
import io.legado.app.model.analyzeRule.AnalyzeUrl
|
import io.legado.app.model.analyzeRule.AnalyzeUrl
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import io.legado.app.data.entities.BookSource
|
|||||||
import io.legado.app.data.entities.rule.ContentRule
|
import io.legado.app.data.entities.rule.ContentRule
|
||||||
import io.legado.app.exception.ContentEmptyException
|
import io.legado.app.exception.ContentEmptyException
|
||||||
import io.legado.app.exception.NoStackTraceException
|
import io.legado.app.exception.NoStackTraceException
|
||||||
import io.legado.app.help.BookHelp
|
import io.legado.app.help.book.BookHelp
|
||||||
import io.legado.app.model.Debug
|
import io.legado.app.model.Debug
|
||||||
import io.legado.app.model.analyzeRule.AnalyzeRule
|
import io.legado.app.model.analyzeRule.AnalyzeRule
|
||||||
import io.legado.app.model.analyzeRule.AnalyzeUrl
|
import io.legado.app.model.analyzeRule.AnalyzeUrl
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import io.legado.app.constant.BookType
|
|||||||
import io.legado.app.data.entities.Book
|
import io.legado.app.data.entities.Book
|
||||||
import io.legado.app.data.entities.BookSource
|
import io.legado.app.data.entities.BookSource
|
||||||
import io.legado.app.exception.NoStackTraceException
|
import io.legado.app.exception.NoStackTraceException
|
||||||
import io.legado.app.help.BookHelp
|
import io.legado.app.help.book.BookHelp
|
||||||
import io.legado.app.model.Debug
|
import io.legado.app.model.Debug
|
||||||
import io.legado.app.model.analyzeRule.AnalyzeRule
|
import io.legado.app.model.analyzeRule.AnalyzeRule
|
||||||
import io.legado.app.utils.DebugLog
|
import io.legado.app.utils.DebugLog
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import io.legado.app.data.entities.BookSource
|
|||||||
import io.legado.app.data.entities.SearchBook
|
import io.legado.app.data.entities.SearchBook
|
||||||
import io.legado.app.data.entities.rule.BookListRule
|
import io.legado.app.data.entities.rule.BookListRule
|
||||||
import io.legado.app.exception.NoStackTraceException
|
import io.legado.app.exception.NoStackTraceException
|
||||||
import io.legado.app.help.BookHelp
|
import io.legado.app.help.book.BookHelp
|
||||||
import io.legado.app.help.getBookType
|
import io.legado.app.help.getBookType
|
||||||
import io.legado.app.model.Debug
|
import io.legado.app.model.Debug
|
||||||
import io.legado.app.model.analyzeRule.AnalyzeRule
|
import io.legado.app.model.analyzeRule.AnalyzeRule
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import io.legado.app.constant.AppPattern
|
|||||||
import io.legado.app.data.appDb
|
import io.legado.app.data.appDb
|
||||||
import io.legado.app.data.entities.BookSource
|
import io.legado.app.data.entities.BookSource
|
||||||
import io.legado.app.exception.NoStackTraceException
|
import io.legado.app.exception.NoStackTraceException
|
||||||
import io.legado.app.help.ContentProcessor
|
import io.legado.app.help.book.ContentProcessor
|
||||||
import io.legado.app.help.config.AppConfig
|
import io.legado.app.help.config.AppConfig
|
||||||
import io.legado.app.help.http.newCallResponseBody
|
import io.legado.app.help.http.newCallResponseBody
|
||||||
import io.legado.app.help.http.okHttpClient
|
import io.legado.app.help.http.okHttpClient
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import io.legado.app.data.entities.BookChapter
|
|||||||
import io.legado.app.data.entities.BookGroup
|
import io.legado.app.data.entities.BookGroup
|
||||||
import io.legado.app.databinding.ActivityCacheBookBinding
|
import io.legado.app.databinding.ActivityCacheBookBinding
|
||||||
import io.legado.app.databinding.DialogEditTextBinding
|
import io.legado.app.databinding.DialogEditTextBinding
|
||||||
import io.legado.app.help.BookHelp
|
import io.legado.app.help.book.BookHelp
|
||||||
import io.legado.app.help.config.AppConfig
|
import io.legado.app.help.config.AppConfig
|
||||||
import io.legado.app.help.isAudio
|
import io.legado.app.help.isAudio
|
||||||
import io.legado.app.lib.dialogs.SelectItem
|
import io.legado.app.lib.dialogs.SelectItem
|
||||||
|
|||||||
@@ -18,11 +18,11 @@ import io.legado.app.data.appDb
|
|||||||
import io.legado.app.data.entities.Book
|
import io.legado.app.data.entities.Book
|
||||||
import io.legado.app.data.entities.BookChapter
|
import io.legado.app.data.entities.BookChapter
|
||||||
import io.legado.app.exception.NoStackTraceException
|
import io.legado.app.exception.NoStackTraceException
|
||||||
import io.legado.app.help.BookHelp
|
import io.legado.app.help.AppWebDav
|
||||||
import io.legado.app.help.ContentProcessor
|
import io.legado.app.help.book.BookHelp
|
||||||
|
import io.legado.app.help.book.ContentProcessor
|
||||||
import io.legado.app.help.config.AppConfig
|
import io.legado.app.help.config.AppConfig
|
||||||
import io.legado.app.help.coroutine.OrderCoroutine
|
import io.legado.app.help.coroutine.OrderCoroutine
|
||||||
import io.legado.app.help.webdav.AppWebDav
|
|
||||||
import io.legado.app.utils.*
|
import io.legado.app.utils.*
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.ensureActive
|
import kotlinx.coroutines.ensureActive
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import io.legado.app.data.entities.BookChapter
|
|||||||
import io.legado.app.data.entities.BookSource
|
import io.legado.app.data.entities.BookSource
|
||||||
import io.legado.app.data.entities.SearchBook
|
import io.legado.app.data.entities.SearchBook
|
||||||
import io.legado.app.databinding.DialogChapterChangeSourceBinding
|
import io.legado.app.databinding.DialogChapterChangeSourceBinding
|
||||||
import io.legado.app.help.BookHelp
|
import io.legado.app.help.book.BookHelp
|
||||||
import io.legado.app.help.config.AppConfig
|
import io.legado.app.help.config.AppConfig
|
||||||
import io.legado.app.lib.dialogs.alert
|
import io.legado.app.lib.dialogs.alert
|
||||||
import io.legado.app.lib.theme.elevation
|
import io.legado.app.lib.theme.elevation
|
||||||
|
|||||||
@@ -23,12 +23,12 @@ import io.legado.app.help.config.AppConfig
|
|||||||
import io.legado.app.help.isAudio
|
import io.legado.app.help.isAudio
|
||||||
import io.legado.app.help.isLocal
|
import io.legado.app.help.isLocal
|
||||||
import io.legado.app.help.isLocalTxt
|
import io.legado.app.help.isLocalTxt
|
||||||
import io.legado.app.help.webdav.RemoteBookWebDav
|
|
||||||
import io.legado.app.lib.dialogs.alert
|
import io.legado.app.lib.dialogs.alert
|
||||||
import io.legado.app.lib.theme.backgroundColor
|
import io.legado.app.lib.theme.backgroundColor
|
||||||
import io.legado.app.lib.theme.bottomBackground
|
import io.legado.app.lib.theme.bottomBackground
|
||||||
import io.legado.app.lib.theme.getPrimaryTextColor
|
import io.legado.app.lib.theme.getPrimaryTextColor
|
||||||
import io.legado.app.model.BookCover
|
import io.legado.app.model.BookCover
|
||||||
|
import io.legado.app.model.remote.RemoteBookWebDav
|
||||||
import io.legado.app.ui.about.AppLogDialog
|
import io.legado.app.ui.about.AppLogDialog
|
||||||
import io.legado.app.ui.association.ImportOnLineBookFileDialog
|
import io.legado.app.ui.association.ImportOnLineBookFileDialog
|
||||||
import io.legado.app.ui.book.audio.AudioPlayActivity
|
import io.legado.app.ui.book.audio.AudioPlayActivity
|
||||||
@@ -213,11 +213,7 @@ class BookInfoActivity :
|
|||||||
waitDialog.setText("上传中.....")
|
waitDialog.setText("上传中.....")
|
||||||
waitDialog.show()
|
waitDialog.show()
|
||||||
try {
|
try {
|
||||||
val isUpload = RemoteBookWebDav.upload(it)
|
RemoteBookWebDav.upload(it)
|
||||||
if (isUpload)
|
|
||||||
toastOnUi(getString(R.string.upload_book_success))
|
|
||||||
else
|
|
||||||
toastOnUi(getString(R.string.upload_book_fail))
|
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
toastOnUi(e.localizedMessage)
|
toastOnUi(e.localizedMessage)
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import io.legado.app.data.entities.Book
|
|||||||
import io.legado.app.data.entities.BookChapter
|
import io.legado.app.data.entities.BookChapter
|
||||||
import io.legado.app.data.entities.BookSource
|
import io.legado.app.data.entities.BookSource
|
||||||
import io.legado.app.exception.NoStackTraceException
|
import io.legado.app.exception.NoStackTraceException
|
||||||
import io.legado.app.help.BookHelp
|
import io.legado.app.help.book.BookHelp
|
||||||
import io.legado.app.help.coroutine.Coroutine
|
import io.legado.app.help.coroutine.Coroutine
|
||||||
import io.legado.app.help.isLocal
|
import io.legado.app.help.isLocal
|
||||||
import io.legado.app.model.BookCover
|
import io.legado.app.model.BookCover
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ import io.legado.app.data.appDb
|
|||||||
import io.legado.app.data.entities.BookChapter
|
import io.legado.app.data.entities.BookChapter
|
||||||
import io.legado.app.databinding.DialogContentEditBinding
|
import io.legado.app.databinding.DialogContentEditBinding
|
||||||
import io.legado.app.databinding.DialogEditTextBinding
|
import io.legado.app.databinding.DialogEditTextBinding
|
||||||
import io.legado.app.help.BookHelp
|
import io.legado.app.help.book.BookHelp
|
||||||
import io.legado.app.help.ContentProcessor
|
import io.legado.app.help.book.ContentProcessor
|
||||||
import io.legado.app.help.isLocal
|
import io.legado.app.help.isLocal
|
||||||
import io.legado.app.lib.dialogs.alert
|
import io.legado.app.lib.dialogs.alert
|
||||||
import io.legado.app.lib.theme.primaryColor
|
import io.legado.app.lib.theme.primaryColor
|
||||||
|
|||||||
@@ -23,12 +23,12 @@ import io.legado.app.data.entities.BookProgress
|
|||||||
import io.legado.app.data.entities.BookSource
|
import io.legado.app.data.entities.BookSource
|
||||||
import io.legado.app.exception.NoStackTraceException
|
import io.legado.app.exception.NoStackTraceException
|
||||||
import io.legado.app.help.*
|
import io.legado.app.help.*
|
||||||
|
import io.legado.app.help.book.BookHelp
|
||||||
import io.legado.app.help.config.AppConfig
|
import io.legado.app.help.config.AppConfig
|
||||||
import io.legado.app.help.config.ReadBookConfig
|
import io.legado.app.help.config.ReadBookConfig
|
||||||
import io.legado.app.help.config.ReadTipConfig
|
import io.legado.app.help.config.ReadTipConfig
|
||||||
import io.legado.app.help.coroutine.Coroutine
|
import io.legado.app.help.coroutine.Coroutine
|
||||||
import io.legado.app.help.storage.Backup
|
import io.legado.app.help.storage.Backup
|
||||||
import io.legado.app.help.webdav.AppWebDav
|
|
||||||
import io.legado.app.lib.dialogs.SelectItem
|
import io.legado.app.lib.dialogs.SelectItem
|
||||||
import io.legado.app.lib.dialogs.alert
|
import io.legado.app.lib.dialogs.alert
|
||||||
import io.legado.app.lib.dialogs.selector
|
import io.legado.app.lib.dialogs.selector
|
||||||
|
|||||||
@@ -15,12 +15,12 @@ import io.legado.app.data.entities.Book
|
|||||||
import io.legado.app.data.entities.BookChapter
|
import io.legado.app.data.entities.BookChapter
|
||||||
import io.legado.app.data.entities.BookProgress
|
import io.legado.app.data.entities.BookProgress
|
||||||
import io.legado.app.exception.NoStackTraceException
|
import io.legado.app.exception.NoStackTraceException
|
||||||
import io.legado.app.help.BookHelp
|
import io.legado.app.help.AppWebDav
|
||||||
import io.legado.app.help.ContentProcessor
|
import io.legado.app.help.book.BookHelp
|
||||||
|
import io.legado.app.help.book.ContentProcessor
|
||||||
import io.legado.app.help.config.AppConfig
|
import io.legado.app.help.config.AppConfig
|
||||||
import io.legado.app.help.coroutine.Coroutine
|
import io.legado.app.help.coroutine.Coroutine
|
||||||
import io.legado.app.help.isLocal
|
import io.legado.app.help.isLocal
|
||||||
import io.legado.app.help.webdav.AppWebDav
|
|
||||||
import io.legado.app.model.ReadAloud
|
import io.legado.app.model.ReadAloud
|
||||||
import io.legado.app.model.ReadBook
|
import io.legado.app.model.ReadBook
|
||||||
import io.legado.app.model.analyzeRule.AnalyzeRule
|
import io.legado.app.model.analyzeRule.AnalyzeRule
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import io.legado.app.constant.PageAnim
|
|||||||
import io.legado.app.data.entities.Book
|
import io.legado.app.data.entities.Book
|
||||||
import io.legado.app.data.entities.BookSource
|
import io.legado.app.data.entities.BookSource
|
||||||
import io.legado.app.exception.NoStackTraceException
|
import io.legado.app.exception.NoStackTraceException
|
||||||
import io.legado.app.help.BookHelp
|
import io.legado.app.help.book.BookHelp
|
||||||
import io.legado.app.help.config.AppConfig
|
import io.legado.app.help.config.AppConfig
|
||||||
import io.legado.app.help.coroutine.Coroutine
|
import io.legado.app.help.coroutine.Coroutine
|
||||||
import io.legado.app.help.isEpub
|
import io.legado.app.help.isEpub
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
package io.legado.app.ui.book.remote
|
|
||||||
|
|
||||||
import android.net.Uri
|
|
||||||
import io.legado.app.data.entities.Book
|
|
||||||
import io.legado.app.data.entities.RemoteBook
|
|
||||||
|
|
||||||
abstract class RemoteBookManager {
|
|
||||||
protected val remoteBookFolder : String = "books"
|
|
||||||
abstract suspend fun initRemoteContext()
|
|
||||||
abstract suspend fun getRemoteBookList(path: String): MutableList<RemoteBook>
|
|
||||||
abstract suspend fun upload(book: Book): Boolean
|
|
||||||
abstract suspend fun delete(remoteBookUrl: String): Boolean
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return String:下载到本地的路径
|
|
||||||
*/
|
|
||||||
abstract suspend fun getRemoteBook(remoteBook: RemoteBook): Uri?
|
|
||||||
}
|
|
||||||
@@ -5,8 +5,8 @@ import io.legado.app.base.BaseViewModel
|
|||||||
import io.legado.app.constant.AppLog
|
import io.legado.app.constant.AppLog
|
||||||
import io.legado.app.constant.BookType
|
import io.legado.app.constant.BookType
|
||||||
import io.legado.app.data.entities.RemoteBook
|
import io.legado.app.data.entities.RemoteBook
|
||||||
import io.legado.app.help.webdav.RemoteBookWebDav
|
|
||||||
import io.legado.app.model.localBook.LocalBook
|
import io.legado.app.model.localBook.LocalBook
|
||||||
|
import io.legado.app.model.remote.RemoteBookWebDav
|
||||||
import io.legado.app.utils.toastOnUi
|
import io.legado.app.utils.toastOnUi
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.channels.awaitClose
|
import kotlinx.coroutines.channels.awaitClose
|
||||||
@@ -96,7 +96,7 @@ class RemoteBookViewModel(application: Application) : BaseViewModel(application)
|
|||||||
execute {
|
execute {
|
||||||
remoteBooks.forEach { remoteBook ->
|
remoteBooks.forEach { remoteBook ->
|
||||||
val downloadBookPath = RemoteBookWebDav.getRemoteBook(remoteBook)
|
val downloadBookPath = RemoteBookWebDav.getRemoteBook(remoteBook)
|
||||||
downloadBookPath?.let {
|
downloadBookPath.let {
|
||||||
val localBook = LocalBook.importFile(it)
|
val localBook = LocalBook.importFile(it)
|
||||||
localBook.origin = BookType.webDavTag + remoteBook.path
|
localBook.origin = BookType.webDavTag + remoteBook.path
|
||||||
localBook.save()
|
localBook.save()
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ import io.legado.app.data.appDb
|
|||||||
import io.legado.app.data.entities.Book
|
import io.legado.app.data.entities.Book
|
||||||
import io.legado.app.data.entities.BookChapter
|
import io.legado.app.data.entities.BookChapter
|
||||||
import io.legado.app.databinding.ActivitySearchContentBinding
|
import io.legado.app.databinding.ActivitySearchContentBinding
|
||||||
import io.legado.app.help.BookHelp
|
|
||||||
import io.legado.app.help.IntentData
|
import io.legado.app.help.IntentData
|
||||||
|
import io.legado.app.help.book.BookHelp
|
||||||
import io.legado.app.help.isLocal
|
import io.legado.app.help.isLocal
|
||||||
import io.legado.app.lib.theme.bottomBackground
|
import io.legado.app.lib.theme.bottomBackground
|
||||||
import io.legado.app.lib.theme.getPrimaryTextColor
|
import io.legado.app.lib.theme.getPrimaryTextColor
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import io.legado.app.base.BaseViewModel
|
|||||||
import io.legado.app.data.appDb
|
import io.legado.app.data.appDb
|
||||||
import io.legado.app.data.entities.Book
|
import io.legado.app.data.entities.Book
|
||||||
import io.legado.app.data.entities.BookChapter
|
import io.legado.app.data.entities.BookChapter
|
||||||
import io.legado.app.help.BookHelp
|
import io.legado.app.help.book.BookHelp
|
||||||
import io.legado.app.help.ContentProcessor
|
import io.legado.app.help.book.ContentProcessor
|
||||||
import io.legado.app.help.config.AppConfig
|
import io.legado.app.help.config.AppConfig
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.ensureActive
|
import kotlinx.coroutines.ensureActive
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import io.legado.app.base.adapter.ItemViewHolder
|
|||||||
import io.legado.app.data.entities.Book
|
import io.legado.app.data.entities.Book
|
||||||
import io.legado.app.data.entities.BookChapter
|
import io.legado.app.data.entities.BookChapter
|
||||||
import io.legado.app.databinding.ItemChapterListBinding
|
import io.legado.app.databinding.ItemChapterListBinding
|
||||||
import io.legado.app.help.ContentProcessor
|
import io.legado.app.help.book.ContentProcessor
|
||||||
import io.legado.app.help.config.AppConfig
|
import io.legado.app.help.config.AppConfig
|
||||||
import io.legado.app.help.coroutine.Coroutine
|
import io.legado.app.help.coroutine.Coroutine
|
||||||
import io.legado.app.lib.theme.ThemeUtils
|
import io.legado.app.lib.theme.ThemeUtils
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import io.legado.app.data.appDb
|
|||||||
import io.legado.app.data.entities.Book
|
import io.legado.app.data.entities.Book
|
||||||
import io.legado.app.data.entities.BookChapter
|
import io.legado.app.data.entities.BookChapter
|
||||||
import io.legado.app.databinding.FragmentChapterListBinding
|
import io.legado.app.databinding.FragmentChapterListBinding
|
||||||
import io.legado.app.help.BookHelp
|
import io.legado.app.help.book.BookHelp
|
||||||
import io.legado.app.help.isLocal
|
import io.legado.app.help.isLocal
|
||||||
import io.legado.app.lib.theme.bottomBackground
|
import io.legado.app.lib.theme.bottomBackground
|
||||||
import io.legado.app.lib.theme.getPrimaryTextColor
|
import io.legado.app.lib.theme.getPrimaryTextColor
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import androidx.preference.Preference
|
|||||||
import io.legado.app.R
|
import io.legado.app.R
|
||||||
import io.legado.app.constant.AppLog
|
import io.legado.app.constant.AppLog
|
||||||
import io.legado.app.constant.PreferKey
|
import io.legado.app.constant.PreferKey
|
||||||
|
import io.legado.app.help.AppWebDav
|
||||||
import io.legado.app.help.config.AppConfig
|
import io.legado.app.help.config.AppConfig
|
||||||
import io.legado.app.help.config.LocalConfig
|
import io.legado.app.help.config.LocalConfig
|
||||||
import io.legado.app.help.coroutine.Coroutine
|
import io.legado.app.help.coroutine.Coroutine
|
||||||
@@ -25,7 +26,6 @@ import io.legado.app.help.storage.Backup
|
|||||||
import io.legado.app.help.storage.BackupConfig
|
import io.legado.app.help.storage.BackupConfig
|
||||||
import io.legado.app.help.storage.ImportOldData
|
import io.legado.app.help.storage.ImportOldData
|
||||||
import io.legado.app.help.storage.Restore
|
import io.legado.app.help.storage.Restore
|
||||||
import io.legado.app.help.webdav.AppWebDav
|
|
||||||
import io.legado.app.lib.dialogs.alert
|
import io.legado.app.lib.dialogs.alert
|
||||||
import io.legado.app.lib.permission.Permissions
|
import io.legado.app.lib.permission.Permissions
|
||||||
import io.legado.app.lib.permission.PermissionsCompat
|
import io.legado.app.lib.permission.PermissionsCompat
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ package io.legado.app.ui.config
|
|||||||
import android.app.Application
|
import android.app.Application
|
||||||
import io.legado.app.R
|
import io.legado.app.R
|
||||||
import io.legado.app.base.BaseViewModel
|
import io.legado.app.base.BaseViewModel
|
||||||
import io.legado.app.help.BookHelp
|
import io.legado.app.help.AppWebDav
|
||||||
import io.legado.app.help.webdav.AppWebDav
|
import io.legado.app.help.book.BookHelp
|
||||||
import io.legado.app.utils.FileUtils
|
import io.legado.app.utils.FileUtils
|
||||||
import io.legado.app.utils.toastOnUi
|
import io.legado.app.utils.toastOnUi
|
||||||
|
|
||||||
|
|||||||
@@ -21,12 +21,12 @@ import io.legado.app.constant.AppConst.appInfo
|
|||||||
import io.legado.app.constant.EventBus
|
import io.legado.app.constant.EventBus
|
||||||
import io.legado.app.constant.PreferKey
|
import io.legado.app.constant.PreferKey
|
||||||
import io.legado.app.databinding.ActivityMainBinding
|
import io.legado.app.databinding.ActivityMainBinding
|
||||||
import io.legado.app.help.BookHelp
|
import io.legado.app.help.AppWebDav
|
||||||
|
import io.legado.app.help.book.BookHelp
|
||||||
import io.legado.app.help.config.AppConfig
|
import io.legado.app.help.config.AppConfig
|
||||||
import io.legado.app.help.config.LocalConfig
|
import io.legado.app.help.config.LocalConfig
|
||||||
import io.legado.app.help.coroutine.Coroutine
|
import io.legado.app.help.coroutine.Coroutine
|
||||||
import io.legado.app.help.storage.Backup
|
import io.legado.app.help.storage.Backup
|
||||||
import io.legado.app.help.webdav.AppWebDav
|
|
||||||
import io.legado.app.lib.dialogs.alert
|
import io.legado.app.lib.dialogs.alert
|
||||||
import io.legado.app.lib.theme.elevation
|
import io.legado.app.lib.theme.elevation
|
||||||
import io.legado.app.lib.theme.primaryColor
|
import io.legado.app.lib.theme.primaryColor
|
||||||
|
|||||||
@@ -9,12 +9,12 @@ import io.legado.app.constant.EventBus
|
|||||||
import io.legado.app.data.appDb
|
import io.legado.app.data.appDb
|
||||||
import io.legado.app.data.entities.Book
|
import io.legado.app.data.entities.Book
|
||||||
import io.legado.app.data.entities.BookSource
|
import io.legado.app.data.entities.BookSource
|
||||||
import io.legado.app.help.BookHelp
|
import io.legado.app.help.AppWebDav
|
||||||
import io.legado.app.help.DefaultData
|
import io.legado.app.help.DefaultData
|
||||||
|
import io.legado.app.help.book.BookHelp
|
||||||
import io.legado.app.help.config.AppConfig
|
import io.legado.app.help.config.AppConfig
|
||||||
import io.legado.app.help.config.LocalConfig
|
import io.legado.app.help.config.LocalConfig
|
||||||
import io.legado.app.help.isLocal
|
import io.legado.app.help.isLocal
|
||||||
import io.legado.app.help.webdav.AppWebDav
|
|
||||||
import io.legado.app.model.CacheBook
|
import io.legado.app.model.CacheBook
|
||||||
import io.legado.app.model.analyzeRule.AnalyzeRule
|
import io.legado.app.model.analyzeRule.AnalyzeRule
|
||||||
import io.legado.app.model.webBook.WebBook
|
import io.legado.app.model.webBook.WebBook
|
||||||
|
|||||||
@@ -19,8 +19,8 @@ import io.legado.app.data.appDb
|
|||||||
import io.legado.app.data.entities.ReplaceRule
|
import io.legado.app.data.entities.ReplaceRule
|
||||||
import io.legado.app.databinding.ActivityReplaceRuleBinding
|
import io.legado.app.databinding.ActivityReplaceRuleBinding
|
||||||
import io.legado.app.databinding.DialogEditTextBinding
|
import io.legado.app.databinding.DialogEditTextBinding
|
||||||
import io.legado.app.help.ContentProcessor
|
|
||||||
import io.legado.app.help.DirectLinkUpload
|
import io.legado.app.help.DirectLinkUpload
|
||||||
|
import io.legado.app.help.book.ContentProcessor
|
||||||
import io.legado.app.help.coroutine.Coroutine
|
import io.legado.app.help.coroutine.Coroutine
|
||||||
import io.legado.app.lib.dialogs.alert
|
import io.legado.app.lib.dialogs.alert
|
||||||
import io.legado.app.lib.theme.primaryColor
|
import io.legado.app.lib.theme.primaryColor
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import com.bumptech.glide.request.RequestOptions
|
|||||||
import io.legado.app.R
|
import io.legado.app.R
|
||||||
import io.legado.app.base.BaseDialogFragment
|
import io.legado.app.base.BaseDialogFragment
|
||||||
import io.legado.app.databinding.DialogPhotoViewBinding
|
import io.legado.app.databinding.DialogPhotoViewBinding
|
||||||
import io.legado.app.help.BookHelp
|
import io.legado.app.help.book.BookHelp
|
||||||
import io.legado.app.help.glide.ImageLoader
|
import io.legado.app.help.glide.ImageLoader
|
||||||
import io.legado.app.help.glide.OkHttpModelLoader
|
import io.legado.app.help.glide.OkHttpModelLoader
|
||||||
import io.legado.app.model.BookCover
|
import io.legado.app.model.BookCover
|
||||||
|
|||||||
Reference in New Issue
Block a user