kunfei před 4 roky
rodič
revize
cc4de72a17
43 změnil soubory, kde provedl 128 přidání a 117 odebrání
  1. 2 2
      app/src/main/java/io/legado/app/App.kt
  2. 3 3
      app/src/main/java/io/legado/app/api/controller/BookController.kt
  3. 2 2
      app/src/main/java/io/legado/app/data/entities/Book.kt
  4. 1 1
      app/src/main/java/io/legado/app/help/AppWebDav.kt
  5. 0 0
      app/src/main/java/io/legado/app/help/book/BookExtensions.kt
  6. 4 1
      app/src/main/java/io/legado/app/help/book/BookHelp.kt
  7. 2 2
      app/src/main/java/io/legado/app/help/book/ContentHelp.kt
  8. 1 1
      app/src/main/java/io/legado/app/help/book/ContentProcessor.kt
  9. 1 1
      app/src/main/java/io/legado/app/help/storage/Backup.kt
  10. 23 17
      app/src/main/java/io/legado/app/lib/webdav/WebDav.kt
  11. 1 1
      app/src/main/java/io/legado/app/model/AudioPlay.kt
  12. 1 1
      app/src/main/java/io/legado/app/model/CacheBook.kt
  13. 3 3
      app/src/main/java/io/legado/app/model/ReadBook.kt
  14. 1 1
      app/src/main/java/io/legado/app/model/localBook/EpubFile.kt
  15. 2 2
      app/src/main/java/io/legado/app/model/localBook/LocalBook.kt
  16. 35 0
      app/src/main/java/io/legado/app/model/remote/RemoteBookManager.kt
  17. 10 21
      app/src/main/java/io/legado/app/model/remote/RemoteBookWebDav.kt
  18. 1 1
      app/src/main/java/io/legado/app/model/webBook/BookChapterList.kt
  19. 1 1
      app/src/main/java/io/legado/app/model/webBook/BookContent.kt
  20. 1 1
      app/src/main/java/io/legado/app/model/webBook/BookInfo.kt
  21. 1 1
      app/src/main/java/io/legado/app/model/webBook/BookList.kt
  22. 1 1
      app/src/main/java/io/legado/app/ui/association/ImportBookSourceViewModel.kt
  23. 1 1
      app/src/main/java/io/legado/app/ui/book/cache/CacheActivity.kt
  24. 3 3
      app/src/main/java/io/legado/app/ui/book/cache/CacheViewModel.kt
  25. 1 1
      app/src/main/java/io/legado/app/ui/book/changesource/ChangeChapterSourceDialog.kt
  26. 2 6
      app/src/main/java/io/legado/app/ui/book/info/BookInfoActivity.kt
  27. 1 1
      app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt
  28. 2 2
      app/src/main/java/io/legado/app/ui/book/read/ContentEditDialog.kt
  29. 1 1
      app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt
  30. 3 3
      app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt
  31. 1 1
      app/src/main/java/io/legado/app/ui/book/read/page/provider/ImageProvider.kt
  32. 0 18
      app/src/main/java/io/legado/app/ui/book/remote/RemoteBookManager.kt
  33. 2 2
      app/src/main/java/io/legado/app/ui/book/remote/RemoteBookViewModel.kt
  34. 1 1
      app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentActivity.kt
  35. 2 2
      app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentViewModel.kt
  36. 1 1
      app/src/main/java/io/legado/app/ui/book/toc/ChapterListAdapter.kt
  37. 1 1
      app/src/main/java/io/legado/app/ui/book/toc/ChapterListFragment.kt
  38. 1 1
      app/src/main/java/io/legado/app/ui/config/BackupConfigFragment.kt
  39. 2 2
      app/src/main/java/io/legado/app/ui/config/ConfigViewModel.kt
  40. 2 2
      app/src/main/java/io/legado/app/ui/main/MainActivity.kt
  41. 2 2
      app/src/main/java/io/legado/app/ui/main/MainViewModel.kt
  42. 1 1
      app/src/main/java/io/legado/app/ui/replace/ReplaceRuleActivity.kt
  43. 1 1
      app/src/main/java/io/legado/app/ui/widget/dialog/PhotoDialog.kt

+ 2 - 2
app/src/main/java/io/legado/app/App.kt

@@ -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

+ 3 - 3
app/src/main/java/io/legado/app/api/controller/BookController.kt

@@ -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

+ 2 - 2
app/src/main/java/io/legado/app/data/entities/Book.kt

@@ -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.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.isEpub
 import io.legado.app.help.isEpub

+ 1 - 1
app/src/main/java/io/legado/app/help/webdav/AppWebDav.kt → app/src/main/java/io/legado/app/help/AppWebDav.kt

@@ -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

+ 0 - 0
app/src/main/java/io/legado/app/help/BookExtensions.kt → app/src/main/java/io/legado/app/help/book/BookExtensions.kt


+ 4 - 1
app/src/main/java/io/legado/app/help/BookHelp.kt → app/src/main/java/io/legado/app/help/book/BookHelp.kt

@@ -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
app/src/main/java/io/legado/app/help/ContentHelp.kt → app/src/main/java/io/legado/app/help/book/ContentHelp.kt

@@ -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
app/src/main/java/io/legado/app/help/ContentProcessor.kt → app/src/main/java/io/legado/app/help/book/ContentProcessor.kt

@@ -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

+ 1 - 1
app/src/main/java/io/legado/app/help/storage/Backup.kt

@@ -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

+ 23 - 17
app/src/main/java/io/legado/app/lib/webdav/WebDav.kt

@@ -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)
-            if (!file.exists()) throw WebDavException("文件不存在")
-            // 务必注意RequestBody不要嵌套,不然上传时内容可能会被追加多余的文件信息
-            val fileBody = file.asRequestBody(contentType.toMediaType())
-            val url = httpUrl ?: throw WebDavException("url不能为空")
-            webDavClient.newCallResponse {
-                url(url)
-                put(fileBody)
-            }.let {
-                checkResult(it)
+            withContext(IO) {
+                val file = File(localPath)
+                if (!file.exists()) throw WebDavException("文件不存在")
+                // 务必注意RequestBody不要嵌套,不然上传时内容可能会被追加多余的文件信息
+                val fileBody = file.asRequestBody(contentType.toMediaType())
+                val url = httpUrl ?: throw WebDavException("url不能为空")
+                webDavClient.newCallResponse {
+                    url(url)
+                    put(fileBody)
+                }.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())
-            val url = httpUrl ?: throw NoStackTraceException("url不能为空")
-            webDavClient.newCallResponse {
-                url(url)
-                put(fileBody)
-            }.let {
-                checkResult(it)
+            withContext(IO) {
+                val fileBody = byteArray.toRequestBody(contentType.toMediaType())
+                val url = httpUrl ?: throw NoStackTraceException("url不能为空")
+                webDavClient.newCallResponse {
+                    url(url)
+                    put(fileBody)
+                }.let {
+                    checkResult(it)
+                }
             }
             }
         }.onFailure {
         }.onFailure {
             AppLog.put("WebDav上传失败\n${it.localizedMessage}", it)
             AppLog.put("WebDav上传失败\n${it.localizedMessage}", it)

+ 1 - 1
app/src/main/java/io/legado/app/model/AudioPlay.kt

@@ -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

+ 1 - 1
app/src/main/java/io/legado/app/model/CacheBook.kt

@@ -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 - 3
app/src/main/java/io/legado/app/model/ReadBook.kt

@@ -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.ContentProcessor
+import io.legado.app.help.AppWebDav
+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

+ 1 - 1
app/src/main/java/io/legado/app/model/localBook/EpubFile.kt

@@ -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

+ 2 - 2
app/src/main/java/io/legado/app/model/localBook/LocalBook.kt

@@ -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.*

+ 35 - 0
app/src/main/java/io/legado/app/model/remote/RemoteBookManager.kt

@@ -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
app/src/main/java/io/legado/app/help/webdav/RemoteBookWebDav.kt → app/src/main/java/io/legado/app/model/remote/RemoteBookWebDav.kt

@@ -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): Boolean {
-        if (!NetworkUtils.isAvailable()) return false
+    override suspend fun upload(book: Book) {
+        if (!NetworkUtils.isAvailable()) throw NoStackTraceException("网络不可用")
         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()
-        }
-        return false
+            WebDav(remoteBookUrl, it).delete()
+        } ?: throw NoStackTraceException("webDav没有配置")
     }
     }
 
 
 }
 }

+ 1 - 1
app/src/main/java/io/legado/app/model/webBook/BookChapterList.kt

@@ -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

+ 1 - 1
app/src/main/java/io/legado/app/model/webBook/BookContent.kt

@@ -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

+ 1 - 1
app/src/main/java/io/legado/app/model/webBook/BookInfo.kt

@@ -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

+ 1 - 1
app/src/main/java/io/legado/app/model/webBook/BookList.kt

@@ -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

+ 1 - 1
app/src/main/java/io/legado/app/ui/association/ImportBookSourceViewModel.kt

@@ -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

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/cache/CacheActivity.kt

@@ -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

+ 3 - 3
app/src/main/java/io/legado/app/ui/book/cache/CacheViewModel.kt

@@ -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.ContentProcessor
+import io.legado.app.help.AppWebDav
+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

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/changesource/ChangeChapterSourceDialog.kt

@@ -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

+ 2 - 6
app/src/main/java/io/legado/app/ui/book/info/BookInfoActivity.kt

@@ -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)
-                            if (isUpload)
-                                toastOnUi(getString(R.string.upload_book_success))
-                            else
-                                toastOnUi(getString(R.string.upload_book_fail))
+                            RemoteBookWebDav.upload(it)
                         } catch (e: Exception) {
                         } catch (e: Exception) {
                             toastOnUi(e.localizedMessage)
                             toastOnUi(e.localizedMessage)
                         } finally {
                         } finally {

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt

@@ -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

+ 2 - 2
app/src/main/java/io/legado/app/ui/book/read/ContentEditDialog.kt

@@ -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.ContentProcessor
+import io.legado.app.help.book.BookHelp
+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

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt

@@ -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

+ 3 - 3
app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt

@@ -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.ContentProcessor
+import io.legado.app.help.AppWebDav
+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

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/read/page/provider/ImageProvider.kt

@@ -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

+ 0 - 18
app/src/main/java/io/legado/app/ui/book/remote/RemoteBookManager.kt

@@ -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?
-}

+ 2 - 2
app/src/main/java/io/legado/app/ui/book/remote/RemoteBookViewModel.kt

@@ -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()

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentActivity.kt

@@ -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

+ 2 - 2
app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentViewModel.kt

@@ -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.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 kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.ensureActive
 import kotlinx.coroutines.ensureActive

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/toc/ChapterListAdapter.kt

@@ -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

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/toc/ChapterListFragment.kt

@@ -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

+ 1 - 1
app/src/main/java/io/legado/app/ui/config/BackupConfigFragment.kt

@@ -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

+ 2 - 2
app/src/main/java/io/legado/app/ui/config/ConfigViewModel.kt

@@ -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.webdav.AppWebDav
+import io.legado.app.help.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
 
 

+ 2 - 2
app/src/main/java/io/legado/app/ui/main/MainActivity.kt

@@ -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

+ 2 - 2
app/src/main/java/io/legado/app/ui/main/MainViewModel.kt

@@ -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

+ 1 - 1
app/src/main/java/io/legado/app/ui/replace/ReplaceRuleActivity.kt

@@ -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

+ 1 - 1
app/src/main/java/io/legado/app/ui/widget/dialog/PhotoDialog.kt

@@ -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