pull/1954/head
kunfei 2 years ago
parent e5447581da
commit 65136bca50
  1. 1666
      app/schemas/io.legado.app.data.AppDatabase/50.json
  2. 4
      app/src/main/assets/updateLog.md
  3. 5
      app/src/main/java/io/legado/app/data/AppDatabase.kt
  4. 10
      app/src/main/java/io/legado/app/data/entities/BookSource.kt
  5. 33
      app/src/main/java/io/legado/app/data/entities/RssSource.kt
  6. 22
      app/src/main/java/io/legado/app/ui/book/info/BookInfoActivity.kt
  7. 14
      app/src/main/java/io/legado/app/ui/rss/article/RssSortActivity.kt
  8. 2
      app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt

File diff suppressed because it is too large Load Diff

@ -11,6 +11,10 @@
* 正文出现缺字漏字、内容缺失、排版错乱等情况,有可能是净化规则或简繁转换出现问题。
* 漫画源看书显示乱码,**阅读与其他软件的源并不通用**,请导入阅读的支持的漫画源!
**2022/06/05**
* 添加源变量说明,输入源变量界面显示说明
**2022/06/01**
* 更新cronet: 102.0.5005.78

@ -20,7 +20,7 @@ val appDb by lazy {
}
@Database(
version = 49,
version = 50,
exportSchema = true,
entities = [Book::class, BookGroup::class, BookSource::class, BookChapter::class,
ReplaceRule::class, SearchBook::class, SearchKeyword::class, Cookie::class,
@ -33,7 +33,8 @@ val appDb by lazy {
AutoMigration(from = 45, to = 46),
AutoMigration(from = 46, to = 47),
AutoMigration(from = 47, to = 48),
AutoMigration(from = 48, to = 49)
AutoMigration(from = 48, to = 49),
AutoMigration(from = 49, to = 50)
]
)
abstract class AppDatabase : RoomDatabase() {

@ -54,6 +54,8 @@ data class BookSource(
var loginCheckJs: String? = null,
// 注释
var bookSourceComment: String? = null,
// 自定义变量说明
var variableComment: String? = null,
// 最后更新时间,用于排序
var lastUpdateTime: Long = 0,
// 响应时间,用于排序
@ -211,6 +213,14 @@ data class BookSource(
}?.joinToString() ?: ""
}
fun getDisplayVariableComment(otherComment: String): String {
return if (variableComment.isNullOrBlank()) {
otherComment
} else {
"${variableComment}\n$otherComment"
}
}
fun equal(source: BookSource) =
equal(bookSourceName, source.bookSourceName)
&& equal(bookSourceUrl, source.bookSourceUrl)

@ -15,22 +15,35 @@ import splitties.init.appCtx
data class RssSource(
@PrimaryKey
var sourceUrl: String = "",
// 名称
var sourceName: String = "",
// 图标
var sourceIcon: String = "",
// 分组
var sourceGroup: String? = null,
// 注释
var sourceComment: String? = null,
// 是否启用
var enabled: Boolean = true,
// 自定义变量说明
var variableComment: String? = null,
@ColumnInfo(defaultValue = "0")
override var enabledCookieJar: Boolean? = false,
override var concurrentRate: String? = null, //并发率
override var header: String? = null, // 请求头
override var loginUrl: String? = null, // 登录地址
override var loginUi: String? = null, //登录UI
var loginCheckJs: String? = null, //登录检测js
//并发率
override var concurrentRate: String? = null,
// 请求头
override var header: String? = null,
// 登录地址
override var loginUrl: String? = null,
//登录UI
override var loginUi: String? = null,
//登录检测js
var loginCheckJs: String? = null,
var sortUrl: String? = null,
var singleUrl: Boolean = false,
/*列表规则*/
var articleStyle: Int = 0, //列表样式,0,1,2
//列表样式,0,1,2
var articleStyle: Int = 0,
var ruleArticles: String? = null,
var ruleNextPage: String? = null,
var ruleTitle: String? = null,
@ -131,6 +144,14 @@ data class RssSource(
}
}
fun getDisplayVariableComment(otherComment: String): String {
return if (variableComment.isNullOrBlank()) {
otherComment
} else {
"${variableComment}\n$otherComment"
}
}
@Suppress("MemberVisibilityCanBePrivate")
companion object {

@ -247,7 +247,11 @@ class BookInfoActivity :
binding.tvToc.text = getString(R.string.toc_s, getString(R.string.loading))
}
chapterList.isNullOrEmpty() -> {
binding.tvToc.text = if (viewModel.isImportBookOnLine) getString(R.string.click_read_button_load) else getString(R.string.toc_s, getString(R.string.error_load_toc))
binding.tvToc.text =
if (viewModel.isImportBookOnLine) getString(R.string.click_read_button_load) else getString(
R.string.toc_s,
getString(R.string.error_load_toc)
)
}
else -> {
viewModel.bookData.value?.let {
@ -358,9 +362,14 @@ class BookInfoActivity :
private fun setSourceVariable() {
launch {
val variable = withContext(IO) { viewModel.bookSource?.getVariable() }
val source = viewModel.bookSource
if (source == null) {
toastOnUi("书源不存在")
return@launch
}
val variable = withContext(IO) { source.getVariable() }
alert(R.string.set_source_variable) {
setMessage("源变量可在js中通过source.getVariable()获取")
setMessage(source.getDisplayVariableComment("源变量可在js中通过source.getVariable()获取"))
val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply {
editView.hint = "source variable"
editView.setText(variable)
@ -379,9 +388,14 @@ class BookInfoActivity :
private fun setBookVariable() {
launch {
val source = viewModel.bookSource
if (source == null) {
toastOnUi("书源不存在")
return@launch
}
val variable = withContext(IO) { viewModel.bookData.value?.getVariable("custom") }
alert(R.string.set_source_variable) {
setMessage("""书籍变量可在js中通过book.getVariable("custom")获取""")
setMessage(source.getDisplayVariableComment("""书籍变量可在js中通过book.getVariable("custom")获取"""))
val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply {
editView.hint = "book variable"
editView.setText(variable)

@ -17,11 +17,8 @@ import io.legado.app.lib.dialogs.alert
import io.legado.app.lib.theme.accentColor
import io.legado.app.ui.login.SourceLoginActivity
import io.legado.app.ui.rss.source.edit.RssSourceEditActivity
import io.legado.app.utils.StartActivityContract
import io.legado.app.utils.gone
import io.legado.app.utils.startActivity
import io.legado.app.utils.*
import io.legado.app.utils.viewbindingdelegate.viewBinding
import io.legado.app.utils.visible
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
@ -106,9 +103,14 @@ class RssSortActivity : VMBaseActivity<ActivityRssArtivlesBinding, RssSortViewMo
private fun setSourceVariable() {
launch {
val variable = withContext(Dispatchers.IO) { viewModel.rssSource?.getVariable() }
val source = viewModel.rssSource
if (source == null) {
toastOnUi("源不存在")
return@launch
}
val variable = withContext(Dispatchers.IO) { source.getVariable() }
alert(R.string.set_source_variable) {
setMessage("源变量可在js中通过source.getVariable()获取")
setMessage(source.getDisplayVariableComment("源变量可在js中通过source.getVariable()获取"))
val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply {
editView.hint = "source variable"
editView.setText(variable)

@ -315,7 +315,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
return true
}
@Suppress("DEPRECATION")
@Suppress("DEPRECATION", "OVERRIDE_DEPRECATION")
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
url?.let {
return shouldOverrideUrlLoading(Uri.parse(it))

Loading…
Cancel
Save