From 0139621aba0a1ada6b5efa2f1277d9b087822afb Mon Sep 17 00:00:00 2001 From: gedoor Date: Thu, 27 Aug 2020 14:56:34 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/model/analyzeRule/AnalyzeUrl.kt | 12 ++++++------ .../legado/app/ui/filechooser/FileChooserDialog.kt | 5 +++-- .../app/ui/replacerule/edit/ReplaceEditDialog.kt | 4 ++-- .../io/legado/app/ui/widget/font/FontSelectDialog.kt | 5 +++-- app/src/main/res/layout/dialog_file_chooser.xml | 7 +++++-- app/src/main/res/layout/dialog_font_select.xml | 7 +++++-- 6 files changed, 24 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt index 3c75a20b3..1a1077da0 100644 --- a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt +++ b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt @@ -3,6 +3,8 @@ package io.legado.app.model.analyzeRule import android.annotation.SuppressLint import android.text.TextUtils import androidx.annotation.Keep +import com.bumptech.glide.load.model.GlideUrl +import com.bumptech.glide.load.model.LazyHeaders import io.legado.app.constant.AppConst.SCRIPT_ENGINE import io.legado.app.constant.AppConst.UA_NAME import io.legado.app.constant.AppConst.userAgent @@ -22,8 +24,6 @@ import java.net.URLEncoder import java.util.* import java.util.regex.Pattern import javax.script.SimpleBindings -import com.bumptech.glide.load.model.GlideUrl -import com.bumptech.glide.load.model.LazyHeaders /** * Created by GKF on 2018/1/24. @@ -394,11 +394,11 @@ class AnalyzeUrl( fun getGlideUrl(): Any? { var glideUrl: Any = url if(headerMap.isNotEmpty()) { - val Headers = LazyHeaders.Builder() - headerMap.forEach {(key, value) -> - Headers.addHeader(key, value) + val headers = LazyHeaders.Builder() + headerMap.forEach {(key, value) -> + headers.addHeader(key, value) } - glideUrl = GlideUrl(url, Headers.build()) + glideUrl = GlideUrl(url, headers.build()) } return glideUrl } diff --git a/app/src/main/java/io/legado/app/ui/filechooser/FileChooserDialog.kt b/app/src/main/java/io/legado/app/ui/filechooser/FileChooserDialog.kt index f1e6a7bc9..fb2e5ac19 100644 --- a/app/src/main/java/io/legado/app/ui/filechooser/FileChooserDialog.kt +++ b/app/src/main/java/io/legado/app/ui/filechooser/FileChooserDialog.kt @@ -12,7 +12,7 @@ import androidx.fragment.app.FragmentManager import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import io.legado.app.R -import io.legado.app.constant.Theme +import io.legado.app.lib.theme.primaryColor import io.legado.app.ui.filechooser.adapter.FileAdapter import io.legado.app.ui.filechooser.adapter.PathAdapter import io.legado.app.ui.widget.recycler.VerticalDivider @@ -93,6 +93,7 @@ class FileChooserDialog : DialogFragment(), override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + tool_bar.setBackgroundColor(primaryColor) view.setBackgroundResource(R.color.background_card) arguments?.let { requestCode = it.getInt("requestCode") @@ -129,7 +130,7 @@ class FileChooserDialog : DialogFragment(), tool_bar.menu.add(menuTitle) } } - tool_bar.menu.applyTint(requireContext(), Theme.getTheme()) + tool_bar.menu.applyTint(requireContext()) tool_bar.setOnMenuItemClickListener(this) } diff --git a/app/src/main/java/io/legado/app/ui/replacerule/edit/ReplaceEditDialog.kt b/app/src/main/java/io/legado/app/ui/replacerule/edit/ReplaceEditDialog.kt index 1ee635f56..4bbfb44be 100644 --- a/app/src/main/java/io/legado/app/ui/replacerule/edit/ReplaceEditDialog.kt +++ b/app/src/main/java/io/legado/app/ui/replacerule/edit/ReplaceEditDialog.kt @@ -15,7 +15,7 @@ import io.legado.app.R import io.legado.app.base.BaseDialogFragment import io.legado.app.constant.AppConst import io.legado.app.data.entities.ReplaceRule -import io.legado.app.lib.theme.bottomBackground +import io.legado.app.lib.theme.primaryColor import io.legado.app.ui.widget.KeyboardToolPop import io.legado.app.utils.applyTint import io.legado.app.utils.getViewModel @@ -65,7 +65,7 @@ class ReplaceEditDialog : BaseDialogFragment(), } override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) { - tool_bar.setBackgroundColor(bottomBackground) + tool_bar.setBackgroundColor(primaryColor) mSoftKeyboardTool = KeyboardToolPop(requireContext(), AppConst.keyboardToolChars, this) tool_bar.inflateMenu(R.menu.replace_edit) tool_bar.menu.applyTint(requireContext()) diff --git a/app/src/main/java/io/legado/app/ui/widget/font/FontSelectDialog.kt b/app/src/main/java/io/legado/app/ui/widget/font/FontSelectDialog.kt index 57611e8ad..b10371864 100644 --- a/app/src/main/java/io/legado/app/ui/widget/font/FontSelectDialog.kt +++ b/app/src/main/java/io/legado/app/ui/widget/font/FontSelectDialog.kt @@ -22,7 +22,7 @@ import io.legado.app.help.AppConfig import io.legado.app.help.permission.Permissions import io.legado.app.help.permission.PermissionsCompat import io.legado.app.lib.dialogs.alert -import io.legado.app.lib.theme.bottomBackground +import io.legado.app.lib.theme.primaryColor import io.legado.app.ui.filechooser.FileChooserDialog import io.legado.app.ui.filechooser.FilePicker import io.legado.app.utils.* @@ -59,9 +59,10 @@ class FontSelectDialog : BaseDialogFragment(), } override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) { - tool_bar.setBackgroundColor(requireContext().bottomBackground) + tool_bar.setBackgroundColor(primaryColor) tool_bar.setTitle(R.string.select_font) tool_bar.inflateMenu(R.menu.font_select) + tool_bar.menu.applyTint(requireContext()) tool_bar.setOnMenuItemClickListener(this) adapter = FontAdapter(requireContext(), this) recycler_view.layoutManager = LinearLayoutManager(context) diff --git a/app/src/main/res/layout/dialog_file_chooser.xml b/app/src/main/res/layout/dialog_file_chooser.xml index 7615ba752..efe1db737 100644 --- a/app/src/main/res/layout/dialog_file_chooser.xml +++ b/app/src/main/res/layout/dialog_file_chooser.xml @@ -1,5 +1,6 @@ + android:layout_height="wrap_content" + android:theme="?attr/actionBarStyle" + app:titleTextAppearance="@style/ToolbarTitle" + app:popupTheme="@style/AppTheme.PopupOverlay" /> + android:layout_height="wrap_content" + android:theme="?attr/actionBarStyle" + app:titleTextAppearance="@style/ToolbarTitle" + app:popupTheme="@style/AppTheme.PopupOverlay" /> Date: Thu, 27 Aug 2020 15:04:11 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt index 1a1077da0..65d513831 100644 --- a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt +++ b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt @@ -50,7 +50,7 @@ class AnalyzeUrl( private var baseUrl: String = "" lateinit var url: String private set - var path: String? = null + lateinit var urlHasQuery: String private set val headerMap = HashMap() private var queryStr: String? = null @@ -174,6 +174,7 @@ class AnalyzeUrl( private fun initUrl() { var urlArray = ruleUrl.split(",[^\\{]*".toRegex(), 2) url = urlArray[0] + urlHasQuery = urlArray[0] NetworkUtils.getBaseUrl(url)?.let { baseUrl = it } @@ -392,13 +393,13 @@ class AnalyzeUrl( @Throws(Exception::class) fun getGlideUrl(): Any? { - var glideUrl: Any = url + var glideUrl: Any = urlHasQuery if(headerMap.isNotEmpty()) { val headers = LazyHeaders.Builder() headerMap.forEach {(key, value) -> headers.addHeader(key, value) } - glideUrl = GlideUrl(url, headers.build()) + glideUrl = GlideUrl(urlHasQuery, headers.build()) } return glideUrl } From ea5e975d08514a705183668b47759a1344bf5c29 Mon Sep 17 00:00:00 2001 From: gedoor Date: Thu, 27 Aug 2020 15:09:05 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/dialog_book_group_picker.xml | 7 +++++-- app/src/main/res/layout/dialog_change_cover.xml | 1 - app/src/main/res/layout/dialog_toc_regex.xml | 7 +++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/src/main/res/layout/dialog_book_group_picker.xml b/app/src/main/res/layout/dialog_book_group_picker.xml index dbf0e1310..95317f693 100644 --- a/app/src/main/res/layout/dialog_book_group_picker.xml +++ b/app/src/main/res/layout/dialog_book_group_picker.xml @@ -1,15 +1,18 @@ + android:layout_height="wrap_content" + android:theme="?attr/actionBarStyle" + app:titleTextAppearance="@style/ToolbarTitle" + app:popupTheme="@style/AppTheme.PopupOverlay" /> + android:layout_height="wrap_content" + android:theme="?attr/actionBarStyle" + app:titleTextAppearance="@style/ToolbarTitle" + app:popupTheme="@style/AppTheme.PopupOverlay" /> Date: Thu, 27 Aug 2020 15:21:42 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt index 65d513831..4ac7227d8 100644 --- a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt +++ b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt @@ -59,10 +59,11 @@ class AnalyzeUrl( private var body: String? = null private var requestBody: RequestBody? = null private var method = RequestMethod.GET + private val splitUrlRegex = Regex(",[^\\{]*") init { baseUrl?.let { - this.baseUrl = it.split(",[^\\{]*".toRegex(), 1)[0] + this.baseUrl = it.split(splitUrlRegex, 1)[0] } headerMapF?.let { headerMap.putAll(it) } //替换参数 @@ -172,7 +173,7 @@ class AnalyzeUrl( * 处理URL */ private fun initUrl() { - var urlArray = ruleUrl.split(",[^\\{]*".toRegex(), 2) + var urlArray = ruleUrl.split(splitUrlRegex, 2) url = urlArray[0] urlHasQuery = urlArray[0] NetworkUtils.getBaseUrl(url)?.let { From 912688069875dd2da2b863df6dc082a525dd453a Mon Sep 17 00:00:00 2001 From: gedoor Date: Thu, 27 Aug 2020 15:22:44 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/updateLog.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/assets/updateLog.md b/app/src/main/assets/updateLog.md index 3b7719f85..650696a06 100644 --- a/app/src/main/assets/updateLog.md +++ b/app/src/main/assets/updateLog.md @@ -3,6 +3,10 @@ * 关注合作公众号 **[小说拾遗]()** 获取好看的小说。 - 旧版数据导入教程:先在旧版阅读(2.x)中进行备份,然后在新版阅读(3.x)【我的】->【备份与恢复】,选择【导入旧版本数据】。 +**2020/08/27** +* 修复主题bug +* 修复封面bug + **2020/08/26** * js添加java.encodeURI(speakText),用于解决js编码时有~的语句朗读不出来 * 修复书名太长删除阅读记录按钮不显示的bug From ef504403b081d474786ebd6cc2fff22f9511e0fe Mon Sep 17 00:00:00 2001 From: gedoor Date: Thu, 27 Aug 2020 17:14:52 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=B0=8F=E8=AF=B4?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/constant/EventBus.kt | 2 +- .../io/legado/app/ui/main/MainActivity.kt | 2 +- .../io/legado/app/ui/main/MainViewModel.kt | 63 ++++++++++++++----- .../ui/main/bookshelf/BookshelfFragment.kt | 2 +- .../ui/main/bookshelf/books/BooksFragment.kt | 2 +- 5 files changed, 50 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/io/legado/app/constant/EventBus.kt b/app/src/main/java/io/legado/app/constant/EventBus.kt index e24ba8000..6fe8b5cea 100644 --- a/app/src/main/java/io/legado/app/constant/EventBus.kt +++ b/app/src/main/java/io/legado/app/constant/EventBus.kt @@ -3,7 +3,7 @@ package io.legado.app.constant object EventBus { const val MEDIA_BUTTON = "mediaButton" const val RECREATE = "RECREATE" - const val UP_BOOK = "sourceDebugLog" + const val UP_BOOK = "upBookToc" const val ALOUD_STATE = "aloud_state" const val TTS_PROGRESS = "ttsStart" const val TTS_DS = "ttsDs" diff --git a/app/src/main/java/io/legado/app/ui/main/MainActivity.kt b/app/src/main/java/io/legado/app/ui/main/MainActivity.kt index 77a98460c..7d6c71134 100644 --- a/app/src/main/java/io/legado/app/ui/main/MainActivity.kt +++ b/app/src/main/java/io/legado/app/ui/main/MainActivity.kt @@ -62,7 +62,7 @@ class MainActivity : VMBaseActivity(R.layout.activity_main), //自动更新书籍 if (AppConfig.autoRefreshBook) { view_pager_main.postDelayed({ - viewModel.upChapterList() + viewModel.upAllBookToc() }, 1000) } view_pager_main.postDelayed({ diff --git a/app/src/main/java/io/legado/app/ui/main/MainViewModel.kt b/app/src/main/java/io/legado/app/ui/main/MainViewModel.kt index b0122bc8b..3917769b0 100644 --- a/app/src/main/java/io/legado/app/ui/main/MainViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/main/MainViewModel.kt @@ -18,13 +18,18 @@ import io.legado.app.utils.fromJsonObject import io.legado.app.utils.postEvent import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.asCoroutineDispatcher -import kotlinx.coroutines.delay +import java.util.concurrent.ConcurrentHashMap +import java.util.concurrent.CopyOnWriteArraySet import java.util.concurrent.Executors class MainViewModel(application: Application) : BaseViewModel(application) { - private var upTocPool = - Executors.newFixedThreadPool(AppConfig.threadCount).asCoroutineDispatcher() - val updateList = hashSetOf() + val threadCount = AppConfig.threadCount + private var upTocPool = Executors.newFixedThreadPool(threadCount).asCoroutineDispatcher() + val updateList = CopyOnWriteArraySet() + private val bookMap = ConcurrentHashMap() + + @Volatile + private var usePoolCount = 0 override fun onCleared() { super.onCleared() @@ -36,18 +41,31 @@ class MainViewModel(application: Application) : BaseViewModel(application) { upTocPool = Executors.newFixedThreadPool(AppConfig.threadCount).asCoroutineDispatcher() } - fun upChapterList() { + fun upAllBookToc() { execute { - upChapterList(App.db.bookDao().hasUpdateBooks) + upToc(App.db.bookDao().hasUpdateBooks) + } + } + + fun upToc(books: List) { + books.filter { + it.origin != BookType.local && it.canUpdate + }.forEach { + bookMap[it.bookUrl] = it + } + for (i in 0 until threadCount) { + if (usePoolCount < threadCount) { + usePoolCount++ + updateToc() + } } } - fun upChapterList(books: List) { + private fun updateToc() { execute { - books.filter { - it.origin != BookType.local && it.canUpdate - }.forEach { book -> - if (!updateList.contains(book.bookUrl)) { + bookMap.forEach { bookEntry -> + if (!updateList.contains(bookEntry.key)) { + val book = bookEntry.value App.db.bookSourceDao().getBookSource(book.origin)?.let { bookSource -> synchronized(this) { updateList.add(book.bookUrl) @@ -56,28 +74,39 @@ class MainViewModel(application: Application) : BaseViewModel(application) { WebBook(bookSource).getChapterList(book, context = upTocPool) .timeout(300000) .onSuccess(IO) { - synchronized(this) { - updateList.remove(book.bookUrl) - postEvent(EventBus.UP_BOOK, book.bookUrl) - } App.db.bookDao().update(book) App.db.bookChapterDao().delByBook(book.bookUrl) App.db.bookChapterDao().insert(*it.toTypedArray()) } .onError { + it.printStackTrace() + } + .onFinally { synchronized(this) { + bookMap.remove(bookEntry.key) updateList.remove(book.bookUrl) postEvent(EventBus.UP_BOOK, book.bookUrl) + upNext() } - it.printStackTrace() } + } ?: synchronized(this) { + bookMap.remove(bookEntry.key) + upNext() } + return@forEach } - delay(50) } } } + private fun upNext() { + if (bookMap.size > updateList.size) { + updateToc() + } else { + usePoolCount-- + } + } + fun initRss() { execute { val url = "https://gitee.com/alanskycn/yuedu/raw/master/JS/RSS/rssSource" diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfFragment.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfFragment.kt index 9abfddbd4..4444f33d7 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfFragment.kt @@ -78,7 +78,7 @@ class BookshelfFragment : VMBaseFragment(R.layout.fragment_b val group = bookGroups[tab_layout.selectedTabPosition] val fragment = fragmentMap[group.groupId] fragment?.getBooks()?.let { - activityViewModel.upChapterList(it) + activityViewModel.upToc(it) } } R.id.menu_bookshelf_layout -> configBookshelf() diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/BooksFragment.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/BooksFragment.kt index c03292011..ebbe310e8 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/books/BooksFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/books/BooksFragment.kt @@ -66,7 +66,7 @@ class BooksFragment : BaseFragment(R.layout.fragment_books), refresh_layout.setColorSchemeColors(accentColor) refresh_layout.setOnRefreshListener { refresh_layout.isRefreshing = false - activityViewModel.upChapterList(booksAdapter.getItems()) + activityViewModel.upToc(booksAdapter.getItems()) } val bookshelfLayout = getPrefInt(PreferKey.bookshelfLayout) if (bookshelfLayout == 0) { From c4303af5749a48dfa745981947cc946b70545c2b Mon Sep 17 00:00:00 2001 From: gedoor Date: Thu, 27 Aug 2020 17:37:31 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=B0=8F=E8=AF=B4?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/ui/main/MainViewModel.kt | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/main/MainViewModel.kt b/app/src/main/java/io/legado/app/ui/main/MainViewModel.kt index 3917769b0..fbacdd448 100644 --- a/app/src/main/java/io/legado/app/ui/main/MainViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/main/MainViewModel.kt @@ -48,29 +48,31 @@ class MainViewModel(application: Application) : BaseViewModel(application) { } fun upToc(books: List) { - books.filter { - it.origin != BookType.local && it.canUpdate - }.forEach { - bookMap[it.bookUrl] = it - } - for (i in 0 until threadCount) { - if (usePoolCount < threadCount) { - usePoolCount++ - updateToc() + execute { + books.filter { + it.origin != BookType.local && it.canUpdate + }.forEach { + bookMap[it.bookUrl] = it + } + for (i in 0 until threadCount) { + if (usePoolCount < threadCount) { + usePoolCount++ + updateToc() + } } } } private fun updateToc() { - execute { + synchronized(this) { bookMap.forEach { bookEntry -> if (!updateList.contains(bookEntry.key)) { val book = bookEntry.value + synchronized(this) { + updateList.add(book.bookUrl) + postEvent(EventBus.UP_BOOK, book.bookUrl) + } App.db.bookSourceDao().getBookSource(book.origin)?.let { bookSource -> - synchronized(this) { - updateList.add(book.bookUrl) - postEvent(EventBus.UP_BOOK, book.bookUrl) - } WebBook(bookSource).getChapterList(book, context = upTocPool) .timeout(300000) .onSuccess(IO) { @@ -91,6 +93,8 @@ class MainViewModel(application: Application) : BaseViewModel(application) { } } ?: synchronized(this) { bookMap.remove(bookEntry.key) + updateList.remove(book.bookUrl) + postEvent(EventBus.UP_BOOK, book.bookUrl) upNext() } return@forEach From 1496927823df3235c86110c0542988a31c9f4b52 Mon Sep 17 00:00:00 2001 From: gedoor Date: Thu, 27 Aug 2020 22:05:19 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=8D=A2=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../changesource/ChangeSourceViewModel.kt | 100 +++++++++++------- 1 file changed, 63 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt index da58200c5..2997b0780 100644 --- a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt @@ -10,30 +10,35 @@ import io.legado.app.base.BaseViewModel import io.legado.app.constant.AppPattern import io.legado.app.constant.PreferKey import io.legado.app.data.entities.Book +import io.legado.app.data.entities.BookSource import io.legado.app.data.entities.SearchBook import io.legado.app.help.AppConfig -import io.legado.app.help.coroutine.Coroutine +import io.legado.app.help.coroutine.CompositeCoroutine import io.legado.app.model.WebBook import io.legado.app.utils.getPrefBoolean import kotlinx.coroutines.Dispatchers.IO +import kotlinx.coroutines.ExecutorCoroutineDispatcher import kotlinx.coroutines.asCoroutineDispatcher import org.jetbrains.anko.debug +import java.util.concurrent.CopyOnWriteArraySet import java.util.concurrent.Executors class ChangeSourceViewModel(application: Application) : BaseViewModel(application) { - private var searchPool = - Executors.newFixedThreadPool(AppConfig.threadCount).asCoroutineDispatcher() + val threadCount = AppConfig.threadCount + private lateinit var searchPool: ExecutorCoroutineDispatcher val handler = Handler() val searchStateData = MutableLiveData() val searchBooksLiveData = MutableLiveData>() var name: String = "" var author: String = "" - private var task: Coroutine<*>? = null + private var tasks = CompositeCoroutine() private var screenKey: String = "" - private val searchBooks = hashSetOf() + private var bookSourceList = arrayListOf() + private val searchBooks = CopyOnWriteArraySet() private var postTime = 0L private val sendRunnable = Runnable { upAdapter() } - + @Volatile + private var searchIndex = -1 fun initData(arguments: Bundle?) { arguments?.let { bundle -> @@ -46,13 +51,17 @@ class ChangeSourceViewModel(application: Application) : BaseViewModel(applicatio } } + private fun initSearchPool() { + searchPool = Executors.newFixedThreadPool(threadCount).asCoroutineDispatcher() + } + fun loadDbSearchBook() { execute { App.db.searchBookDao().getByNameAuthorEnable(name, author).let { searchBooks.addAll(it) if (it.size <= 1) { upAdapter() - search() + startSearch() } else { upAdapter() } @@ -83,38 +92,53 @@ class ChangeSourceViewModel(application: Application) : BaseViewModel(applicatio upAdapter() } - fun search() { - task = execute { - val bookSourceList = App.db.bookSourceDao().allEnabled - for (item in bookSourceList) { - //task取消时自动取消 by (scope = this@execute) - WebBook(item).searchBook(name, scope = this@execute, context = searchPool) - .timeout(30000L) - .onSuccess(IO) { - it.forEach { searchBook -> - if (searchBook.name == name && searchBook.author == author) { - if (context.getPrefBoolean(PreferKey.changeSourceLoadToc)) { - if (searchBook.tocUrl.isEmpty()) { - loadBookInfo(searchBook.toBook()) - } else { - loadChapter(searchBook.toBook()) - } + private fun startSearch() { + execute { + bookSourceList.clear() + bookSourceList.addAll(App.db.bookSourceDao().allEnabled) + searchStateData.postValue(true) + initSearchPool() + for (i in 0 until threadCount) { + search() + } + } + } + + private fun search() { + synchronized(this) { + searchIndex++ + val source = bookSourceList[searchIndex] + val task = WebBook(source).searchBook(name, scope = this, context = searchPool) + .timeout(60000L) + .onSuccess(IO) { + it.forEach { searchBook -> + if (searchBook.name == name && searchBook.author == author) { + if (context.getPrefBoolean(PreferKey.changeSourceLoadToc)) { + if (searchBook.tocUrl.isEmpty()) { + loadBookInfo(searchBook.toBook()) } else { - searchFinish(searchBook) + loadChapter(searchBook.toBook()) } - return@onSuccess + } else { + searchFinish(searchBook) } + return@forEach } } - } - }.onStart { - searchStateData.postValue(true) - }.onCancel { - searchStateData.postValue(false) - } - - task?.invokeOnCompletion { - searchStateData.postValue(false) + } + .onFinally { + synchronized(this) { + if (searchIndex < bookSourceList.lastIndex) { + search() + } else { + searchIndex++ + } + if (searchIndex >= bookSourceList.lastIndex + threadCount) { + searchStateData.postValue(false) + } + } + } + tasks.add(task) } } @@ -166,10 +190,12 @@ class ChangeSourceViewModel(application: Application) : BaseViewModel(applicatio } fun stopSearch() { - if (task?.isActive == true) { - task?.cancel() + if (tasks.isEmpty) { + startSearch() } else { - search() + tasks.clear() + searchPool.close() + searchStateData.postValue(false) } } From 2442e747d387ba94887a775397188149411beb2e Mon Sep 17 00:00:00 2001 From: gedoor Date: Thu, 27 Aug 2020 22:10:23 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/io/legado/app/model/Debug.kt | 2 ++ app/src/main/java/io/legado/app/model/{ => rss}/Rss.kt | 2 +- .../io/legado/app/model/{ => webBook}/SearchBookModel.kt | 2 +- .../main/java/io/legado/app/model/{ => webBook}/WebBook.kt | 7 ++----- app/src/main/java/io/legado/app/service/DownloadService.kt | 2 +- app/src/main/java/io/legado/app/service/help/AudioPlay.kt | 2 +- .../main/java/io/legado/app/service/help/CheckSource.kt | 2 +- app/src/main/java/io/legado/app/service/help/ReadBook.kt | 2 +- .../main/java/io/legado/app/ui/audio/AudioPlayViewModel.kt | 2 +- .../legado/app/ui/book/changecover/ChangeCoverViewModel.kt | 2 +- .../app/ui/book/changesource/ChangeSourceViewModel.kt | 2 +- .../io/legado/app/ui/book/explore/ExploreShowViewModel.kt | 2 +- .../java/io/legado/app/ui/book/info/BookInfoViewModel.kt | 2 +- .../java/io/legado/app/ui/book/read/ReadBookViewModel.kt | 2 +- .../java/io/legado/app/ui/book/search/SearchViewModel.kt | 2 +- .../app/ui/book/source/debug/BookSourceDebugModel.kt | 2 +- app/src/main/java/io/legado/app/ui/main/MainViewModel.kt | 2 +- .../io/legado/app/ui/main/bookshelf/BookshelfViewModel.kt | 2 +- .../io/legado/app/ui/rss/article/RssArticlesViewModel.kt | 2 +- .../java/io/legado/app/ui/rss/read/ReadRssViewModel.kt | 2 +- .../io/legado/app/web/controller/BookshelfController.kt | 2 +- .../io/legado/app/web/controller/SourceDebugWebSocket.kt | 2 +- 22 files changed, 24 insertions(+), 25 deletions(-) rename app/src/main/java/io/legado/app/model/{ => rss}/Rss.kt (98%) rename app/src/main/java/io/legado/app/model/{ => webBook}/SearchBookModel.kt (98%) rename app/src/main/java/io/legado/app/model/{ => webBook}/WebBook.kt (96%) diff --git a/app/src/main/java/io/legado/app/model/Debug.kt b/app/src/main/java/io/legado/app/model/Debug.kt index 85c87812c..795170985 100644 --- a/app/src/main/java/io/legado/app/model/Debug.kt +++ b/app/src/main/java/io/legado/app/model/Debug.kt @@ -6,6 +6,8 @@ import io.legado.app.data.entities.BookChapter import io.legado.app.data.entities.RssArticle import io.legado.app.data.entities.RssSource import io.legado.app.help.coroutine.CompositeCoroutine +import io.legado.app.model.rss.Rss +import io.legado.app.model.webBook.WebBook import io.legado.app.utils.htmlFormat import io.legado.app.utils.isAbsUrl import java.text.SimpleDateFormat diff --git a/app/src/main/java/io/legado/app/model/Rss.kt b/app/src/main/java/io/legado/app/model/rss/Rss.kt similarity index 98% rename from app/src/main/java/io/legado/app/model/Rss.kt rename to app/src/main/java/io/legado/app/model/rss/Rss.kt index 7b6d2e266..f9ea78195 100644 --- a/app/src/main/java/io/legado/app/model/Rss.kt +++ b/app/src/main/java/io/legado/app/model/rss/Rss.kt @@ -1,4 +1,4 @@ -package io.legado.app.model +package io.legado.app.model.rss import io.legado.app.data.entities.RssArticle import io.legado.app.data.entities.RssSource diff --git a/app/src/main/java/io/legado/app/model/SearchBookModel.kt b/app/src/main/java/io/legado/app/model/webBook/SearchBookModel.kt similarity index 98% rename from app/src/main/java/io/legado/app/model/SearchBookModel.kt rename to app/src/main/java/io/legado/app/model/webBook/SearchBookModel.kt index 1f6cac065..0cb36d1c7 100644 --- a/app/src/main/java/io/legado/app/model/SearchBookModel.kt +++ b/app/src/main/java/io/legado/app/model/webBook/SearchBookModel.kt @@ -1,4 +1,4 @@ -package io.legado.app.model +package io.legado.app.model.webBook import io.legado.app.App import io.legado.app.data.entities.SearchBook diff --git a/app/src/main/java/io/legado/app/model/WebBook.kt b/app/src/main/java/io/legado/app/model/webBook/WebBook.kt similarity index 96% rename from app/src/main/java/io/legado/app/model/WebBook.kt rename to app/src/main/java/io/legado/app/model/webBook/WebBook.kt index cb1742132..cdf5553ee 100644 --- a/app/src/main/java/io/legado/app/model/WebBook.kt +++ b/app/src/main/java/io/legado/app/model/webBook/WebBook.kt @@ -1,15 +1,12 @@ -package io.legado.app.model +package io.legado.app.model.webBook import io.legado.app.data.entities.Book import io.legado.app.data.entities.BookChapter import io.legado.app.data.entities.BookSource import io.legado.app.data.entities.SearchBook import io.legado.app.help.coroutine.Coroutine +import io.legado.app.model.Debug import io.legado.app.model.analyzeRule.AnalyzeUrl -import io.legado.app.model.webBook.BookChapterList -import io.legado.app.model.webBook.BookContent -import io.legado.app.model.webBook.BookInfo -import io.legado.app.model.webBook.BookList import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/io/legado/app/service/DownloadService.kt b/app/src/main/java/io/legado/app/service/DownloadService.kt index b21d4e36e..047e8d643 100644 --- a/app/src/main/java/io/legado/app/service/DownloadService.kt +++ b/app/src/main/java/io/legado/app/service/DownloadService.kt @@ -16,7 +16,7 @@ import io.legado.app.help.BookHelp import io.legado.app.help.IntentHelp import io.legado.app.help.coroutine.CompositeCoroutine import io.legado.app.help.coroutine.Coroutine -import io.legado.app.model.WebBook +import io.legado.app.model.webBook.WebBook import io.legado.app.service.help.Download import io.legado.app.utils.postEvent import kotlinx.coroutines.Dispatchers.IO diff --git a/app/src/main/java/io/legado/app/service/help/AudioPlay.kt b/app/src/main/java/io/legado/app/service/help/AudioPlay.kt index 7c8d120b3..06bb6b5a9 100644 --- a/app/src/main/java/io/legado/app/service/help/AudioPlay.kt +++ b/app/src/main/java/io/legado/app/service/help/AudioPlay.kt @@ -6,7 +6,7 @@ import androidx.lifecycle.MutableLiveData import io.legado.app.constant.IntentAction import io.legado.app.constant.Status import io.legado.app.data.entities.Book -import io.legado.app.model.WebBook +import io.legado.app.model.webBook.WebBook import io.legado.app.service.AudioPlayService object AudioPlay { diff --git a/app/src/main/java/io/legado/app/service/help/CheckSource.kt b/app/src/main/java/io/legado/app/service/help/CheckSource.kt index c387e526c..7ae99e667 100644 --- a/app/src/main/java/io/legado/app/service/help/CheckSource.kt +++ b/app/src/main/java/io/legado/app/service/help/CheckSource.kt @@ -7,7 +7,7 @@ import io.legado.app.R import io.legado.app.constant.IntentAction import io.legado.app.data.entities.BookSource import io.legado.app.help.coroutine.Coroutine -import io.legado.app.model.WebBook +import io.legado.app.model.webBook.WebBook import io.legado.app.service.CheckSourceService import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers diff --git a/app/src/main/java/io/legado/app/service/help/ReadBook.kt b/app/src/main/java/io/legado/app/service/help/ReadBook.kt index e15af105b..0d7c4c982 100644 --- a/app/src/main/java/io/legado/app/service/help/ReadBook.kt +++ b/app/src/main/java/io/legado/app/service/help/ReadBook.kt @@ -13,7 +13,7 @@ import io.legado.app.help.AppConfig import io.legado.app.help.BookHelp import io.legado.app.help.IntentDataHelp import io.legado.app.help.coroutine.Coroutine -import io.legado.app.model.WebBook +import io.legado.app.model.webBook.WebBook import io.legado.app.service.BaseReadAloudService import io.legado.app.ui.book.read.page.entities.TextChapter import io.legado.app.ui.book.read.page.provider.ChapterProvider diff --git a/app/src/main/java/io/legado/app/ui/audio/AudioPlayViewModel.kt b/app/src/main/java/io/legado/app/ui/audio/AudioPlayViewModel.kt index 124fd710f..4c1a5a85b 100644 --- a/app/src/main/java/io/legado/app/ui/audio/AudioPlayViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/audio/AudioPlayViewModel.kt @@ -8,7 +8,7 @@ import io.legado.app.base.BaseViewModel import io.legado.app.data.entities.Book import io.legado.app.data.entities.BookChapter import io.legado.app.help.BookHelp -import io.legado.app.model.WebBook +import io.legado.app.model.webBook.WebBook import io.legado.app.service.help.AudioPlay import kotlinx.coroutines.Dispatchers diff --git a/app/src/main/java/io/legado/app/ui/book/changecover/ChangeCoverViewModel.kt b/app/src/main/java/io/legado/app/ui/book/changecover/ChangeCoverViewModel.kt index 0c91fe0f9..835c3a885 100644 --- a/app/src/main/java/io/legado/app/ui/book/changecover/ChangeCoverViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/changecover/ChangeCoverViewModel.kt @@ -9,7 +9,7 @@ import io.legado.app.constant.AppPattern import io.legado.app.data.entities.SearchBook import io.legado.app.help.AppConfig import io.legado.app.help.coroutine.Coroutine -import io.legado.app.model.WebBook +import io.legado.app.model.webBook.WebBook import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.asCoroutineDispatcher import java.util.concurrent.Executors diff --git a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt index 2997b0780..4b50151ef 100644 --- a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt @@ -14,7 +14,7 @@ import io.legado.app.data.entities.BookSource import io.legado.app.data.entities.SearchBook import io.legado.app.help.AppConfig import io.legado.app.help.coroutine.CompositeCoroutine -import io.legado.app.model.WebBook +import io.legado.app.model.webBook.WebBook import io.legado.app.utils.getPrefBoolean import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.ExecutorCoroutineDispatcher diff --git a/app/src/main/java/io/legado/app/ui/book/explore/ExploreShowViewModel.kt b/app/src/main/java/io/legado/app/ui/book/explore/ExploreShowViewModel.kt index bd22b3968..9e7b8dd11 100644 --- a/app/src/main/java/io/legado/app/ui/book/explore/ExploreShowViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/explore/ExploreShowViewModel.kt @@ -7,7 +7,7 @@ import io.legado.app.App import io.legado.app.base.BaseViewModel import io.legado.app.data.entities.BookSource import io.legado.app.data.entities.SearchBook -import io.legado.app.model.WebBook +import io.legado.app.model.webBook.WebBook import kotlinx.coroutines.Dispatchers.IO class ExploreShowViewModel(application: Application) : BaseViewModel(application) { diff --git a/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt b/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt index 3a36170e4..8f2ed64c2 100644 --- a/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt @@ -9,7 +9,7 @@ import io.legado.app.base.BaseViewModel import io.legado.app.data.entities.Book import io.legado.app.data.entities.BookChapter import io.legado.app.help.BookHelp -import io.legado.app.model.WebBook +import io.legado.app.model.webBook.WebBook import io.legado.app.model.localBook.LocalBook import io.legado.app.service.help.ReadBook import kotlinx.coroutines.Dispatchers.IO diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt index d7fb413f0..249141890 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt @@ -10,7 +10,7 @@ import io.legado.app.data.entities.BookChapter import io.legado.app.help.AppConfig import io.legado.app.help.BookHelp import io.legado.app.help.IntentDataHelp -import io.legado.app.model.WebBook +import io.legado.app.model.webBook.WebBook import io.legado.app.model.localBook.LocalBook import io.legado.app.service.BaseReadAloudService import io.legado.app.service.help.ReadAloud diff --git a/app/src/main/java/io/legado/app/ui/book/search/SearchViewModel.kt b/app/src/main/java/io/legado/app/ui/book/search/SearchViewModel.kt index 318937697..e06c6f81a 100644 --- a/app/src/main/java/io/legado/app/ui/book/search/SearchViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/search/SearchViewModel.kt @@ -8,7 +8,7 @@ import io.legado.app.base.BaseViewModel import io.legado.app.constant.PreferKey import io.legado.app.data.entities.SearchBook import io.legado.app.data.entities.SearchKeyword -import io.legado.app.model.SearchBookModel +import io.legado.app.model.webBook.SearchBookModel import io.legado.app.utils.getPrefBoolean import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.isActive diff --git a/app/src/main/java/io/legado/app/ui/book/source/debug/BookSourceDebugModel.kt b/app/src/main/java/io/legado/app/ui/book/source/debug/BookSourceDebugModel.kt index b17ec5e9f..c7755401d 100644 --- a/app/src/main/java/io/legado/app/ui/book/source/debug/BookSourceDebugModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/source/debug/BookSourceDebugModel.kt @@ -4,7 +4,7 @@ import android.app.Application import io.legado.app.App import io.legado.app.base.BaseViewModel import io.legado.app.model.Debug -import io.legado.app.model.WebBook +import io.legado.app.model.webBook.WebBook class BookSourceDebugModel(application: Application) : BaseViewModel(application), Debug.Callback { diff --git a/app/src/main/java/io/legado/app/ui/main/MainViewModel.kt b/app/src/main/java/io/legado/app/ui/main/MainViewModel.kt index fbacdd448..452e77c18 100644 --- a/app/src/main/java/io/legado/app/ui/main/MainViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/main/MainViewModel.kt @@ -11,7 +11,7 @@ import io.legado.app.help.AppConfig import io.legado.app.help.DefaultValueHelp import io.legado.app.help.http.HttpHelper import io.legado.app.help.storage.Restore -import io.legado.app.model.WebBook +import io.legado.app.model.webBook.WebBook import io.legado.app.utils.FileUtils import io.legado.app.utils.GSON import io.legado.app.utils.fromJsonObject diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfViewModel.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfViewModel.kt index dda342015..ae1287842 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfViewModel.kt @@ -7,7 +7,7 @@ import io.legado.app.base.BaseViewModel import io.legado.app.data.entities.Book import io.legado.app.data.entities.BookGroup import io.legado.app.data.entities.BookSource -import io.legado.app.model.WebBook +import io.legado.app.model.webBook.WebBook import io.legado.app.utils.NetworkUtils import kotlinx.coroutines.Dispatchers.IO diff --git a/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesViewModel.kt b/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesViewModel.kt index 8ab79c861..44f125ef2 100644 --- a/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesViewModel.kt @@ -7,7 +7,7 @@ import io.legado.app.App import io.legado.app.base.BaseViewModel import io.legado.app.data.entities.RssArticle import io.legado.app.data.entities.RssSource -import io.legado.app.model.Rss +import io.legado.app.model.rss.Rss import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext diff --git a/app/src/main/java/io/legado/app/ui/rss/read/ReadRssViewModel.kt b/app/src/main/java/io/legado/app/ui/rss/read/ReadRssViewModel.kt index f5fa3f97b..11b4ba940 100644 --- a/app/src/main/java/io/legado/app/ui/rss/read/ReadRssViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/rss/read/ReadRssViewModel.kt @@ -17,7 +17,7 @@ import io.legado.app.data.entities.RssArticle import io.legado.app.data.entities.RssSource import io.legado.app.data.entities.RssStar import io.legado.app.help.http.HttpHelper -import io.legado.app.model.Rss +import io.legado.app.model.rss.Rss import io.legado.app.model.analyzeRule.AnalyzeUrl import io.legado.app.utils.DocumentUtils import io.legado.app.utils.FileUtils diff --git a/app/src/main/java/io/legado/app/web/controller/BookshelfController.kt b/app/src/main/java/io/legado/app/web/controller/BookshelfController.kt index 9871ff72a..203bb37da 100644 --- a/app/src/main/java/io/legado/app/web/controller/BookshelfController.kt +++ b/app/src/main/java/io/legado/app/web/controller/BookshelfController.kt @@ -4,7 +4,7 @@ import io.legado.app.App import io.legado.app.constant.PreferKey import io.legado.app.data.entities.Book import io.legado.app.help.BookHelp -import io.legado.app.model.WebBook +import io.legado.app.model.webBook.WebBook import io.legado.app.service.help.ReadBook import io.legado.app.utils.GSON import io.legado.app.utils.fromJsonObject diff --git a/app/src/main/java/io/legado/app/web/controller/SourceDebugWebSocket.kt b/app/src/main/java/io/legado/app/web/controller/SourceDebugWebSocket.kt index 77b4384c1..ae3172d2f 100644 --- a/app/src/main/java/io/legado/app/web/controller/SourceDebugWebSocket.kt +++ b/app/src/main/java/io/legado/app/web/controller/SourceDebugWebSocket.kt @@ -6,7 +6,7 @@ import fi.iki.elonen.NanoWSD import io.legado.app.App import io.legado.app.R import io.legado.app.model.Debug -import io.legado.app.model.WebBook +import io.legado.app.model.webBook.WebBook import io.legado.app.utils.GSON import io.legado.app.utils.fromJsonObject import io.legado.app.utils.isJson