mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -131,7 +131,7 @@ resourcePlaceholders {
|
||||
|
||||
dependencies {
|
||||
//noinspection GradleDependency
|
||||
coreLibraryDesugaring('com.android.tools:desugar_jdk_libs:1.1.6')
|
||||
coreLibraryDesugaring('com.android.tools:desugar_jdk_libs:1.2.2')
|
||||
testImplementation('junit:junit:4.13.2')
|
||||
androidTestImplementation('androidx.test:runner:1.4.0')
|
||||
androidTestImplementation('androidx.test.espresso:espresso-core:3.4.0')
|
||||
|
||||
@@ -11,6 +11,10 @@
|
||||
* 正文出现缺字漏字、内容缺失、排版错乱等情况,有可能是净化规则或简繁转换出现问题。
|
||||
* 漫画源看书显示乱码,**阅读与其他软件的源并不通用**,请导入阅读的支持的漫画源!
|
||||
|
||||
**2022/09/16**
|
||||
|
||||
* 一些优化
|
||||
|
||||
**2022/09/15**
|
||||
|
||||
* 更新cronet: 105.0.5195.136
|
||||
|
||||
@@ -19,9 +19,11 @@ import io.legado.app.lib.webdav.WebDavException
|
||||
import io.legado.app.lib.webdav.WebDavFile
|
||||
import io.legado.app.ui.widget.dialog.WaitDialog
|
||||
import io.legado.app.utils.*
|
||||
import kotlinx.coroutines.*
|
||||
import kotlinx.coroutines.Dispatchers.IO
|
||||
import kotlinx.coroutines.Dispatchers.Main
|
||||
import kotlinx.coroutines.ensureActive
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.coroutines.withContext
|
||||
import splitties.init.appCtx
|
||||
import java.io.File
|
||||
import java.text.SimpleDateFormat
|
||||
|
||||
@@ -139,8 +139,11 @@ object BookHelp {
|
||||
var bytes = analyzeUrl.getByteArrayAwait()
|
||||
//某些图片被加密,需要进一步解密
|
||||
bookSource?.getContentRule()?.imageDecode?.let {
|
||||
if (it.isBlank()) {
|
||||
return@let
|
||||
}
|
||||
kotlin.runCatching {
|
||||
bookSource?.evalJS(it) {
|
||||
bookSource.evalJS(it) {
|
||||
put("book", book)
|
||||
put("result", bytes)
|
||||
put("src", src)
|
||||
|
||||
@@ -7,8 +7,8 @@ import android.net.Uri
|
||||
import androidx.annotation.DrawableRes
|
||||
import com.bumptech.glide.RequestBuilder
|
||||
import io.legado.app.utils.isAbsUrl
|
||||
import io.legado.app.utils.isDataUrl
|
||||
import io.legado.app.utils.isContentScheme
|
||||
import io.legado.app.utils.isDataUrl
|
||||
import java.io.File
|
||||
|
||||
@Suppress("unused")
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package io.legado.app.ui.about
|
||||
|
||||
import java.text.SimpleDateFormat
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.view.Menu
|
||||
@@ -26,6 +25,7 @@ import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
import kotlinx.coroutines.Dispatchers.IO
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import java.text.SimpleDateFormat
|
||||
|
||||
class ReadRecordActivity : BaseActivity<ActivityReadRecordBinding>() {
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ abstract class BaseAssociationViewModel(application: Application) : BaseViewMode
|
||||
}
|
||||
}
|
||||
|
||||
fun importJson(json: String) {
|
||||
private fun importJson(json: String) {
|
||||
//暂时根据文件内容判断属于什么
|
||||
when {
|
||||
json.contains("sourceUrl") ->
|
||||
|
||||
@@ -7,13 +7,11 @@ import androidx.lifecycle.MutableLiveData
|
||||
import io.legado.app.constant.AppLog
|
||||
import io.legado.app.constant.AppPattern.bookFileRegex
|
||||
import io.legado.app.exception.NoStackTraceException
|
||||
import io.legado.app.help.IntentData
|
||||
import io.legado.app.model.localBook.LocalBook
|
||||
import io.legado.app.utils.inputStream
|
||||
import io.legado.app.utils.isJson
|
||||
import io.legado.app.utils.printOnDebug
|
||||
import java.io.File
|
||||
import java.io.InputStream
|
||||
|
||||
class FileAssociationViewModel(application: Application) : BaseAssociationViewModel(application) {
|
||||
val importBookLiveData = MutableLiveData<Uri>()
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
package io.legado.app.ui.association
|
||||
|
||||
import android.app.Application
|
||||
import androidx.core.net.toUri
|
||||
import io.legado.app.R
|
||||
import io.legado.app.help.config.ReadBookConfig
|
||||
import io.legado.app.help.http.newCallResponseBody
|
||||
import io.legado.app.help.http.okHttpClient
|
||||
import io.legado.app.help.http.text
|
||||
import io.legado.app.utils.FileUtils
|
||||
import io.legado.app.utils.externalCache
|
||||
import okhttp3.MediaType.Companion.toMediaType
|
||||
import splitties.init.appCtx
|
||||
|
||||
class OnLineImportViewModel(app: Application) : BaseAssociationViewModel(app) {
|
||||
|
||||
@@ -72,8 +76,18 @@ class OnLineImportViewModel(app: Application) : BaseAssociationViewModel(app) {
|
||||
importReadConfig(rs.bytes(), finally)
|
||||
}
|
||||
else -> {
|
||||
val json = rs.text("utf-8")
|
||||
importJson(json)
|
||||
val inputStream = rs.byteStream()
|
||||
val file = FileUtils.createFileIfNotExist(
|
||||
appCtx.externalCache,
|
||||
"download",
|
||||
"scheme_import_cache.json"
|
||||
)
|
||||
file.outputStream().use { out ->
|
||||
inputStream.use {
|
||||
it.copyTo(out)
|
||||
}
|
||||
}
|
||||
importJson(file.toUri())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,8 +17,9 @@ class VerificationCodeActivity :
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
intent.getStringExtra("imageUrl")?.let {
|
||||
val sourceOrigin = intent.getStringExtra("sourceOrigin")
|
||||
val sourceName = intent.getStringExtra("sourceName")
|
||||
showDialogFragment(
|
||||
VerificationCodeDialog(it, sourceOrigin)
|
||||
VerificationCodeDialog(it, sourceOrigin, sourceName)
|
||||
)
|
||||
} ?: finish()
|
||||
}
|
||||
|
||||
@@ -200,7 +200,7 @@ class ImportBookActivity : VMBaseActivity<ActivityImportBookBinding, ImportBookV
|
||||
private fun upSort(sort: Int) {
|
||||
viewModel.sort = sort
|
||||
putPrefInt(PreferKey.localBookImportSort, sort)
|
||||
if (scanDocJob?.isCancelled == true || scanDocJob?.isCompleted == true) {
|
||||
if (scanDocJob?.isActive != true) {
|
||||
viewModel.dataCallback?.setItems(adapter.getItems())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,6 @@ import io.legado.app.lib.theme.backgroundColor
|
||||
import io.legado.app.ui.widget.recycler.DragSelectTouchHelper
|
||||
import io.legado.app.ui.widget.recycler.ItemTouchCallback
|
||||
import java.util.*
|
||||
import kotlin.collections.HashSet
|
||||
|
||||
class BookAdapter(context: Context, val callBack: CallBack) :
|
||||
RecyclerAdapter<Book, ItemArrangeBookBinding>(context),
|
||||
|
||||
@@ -15,7 +15,8 @@ import android.view.animation.Animation
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.SeekBar
|
||||
import androidx.appcompat.widget.PopupMenu
|
||||
import androidx.core.view.*
|
||||
import androidx.core.view.isGone
|
||||
import androidx.core.view.isVisible
|
||||
import io.legado.app.R
|
||||
import io.legado.app.constant.PreferKey
|
||||
import io.legado.app.databinding.ViewReadMenuBinding
|
||||
|
||||
@@ -15,7 +15,9 @@ import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.help.coroutine.Coroutine
|
||||
import io.legado.app.model.ReadBook
|
||||
import io.legado.app.model.localBook.EpubFile
|
||||
import io.legado.app.utils.*
|
||||
import io.legado.app.utils.BitmapUtils
|
||||
import io.legado.app.utils.FileUtils
|
||||
import io.legado.app.utils.toastOnUi
|
||||
import kotlinx.coroutines.Dispatchers.IO
|
||||
import kotlinx.coroutines.Dispatchers.Main
|
||||
import kotlinx.coroutines.withContext
|
||||
|
||||
@@ -21,7 +21,6 @@ import io.legado.app.data.entities.BookSource
|
||||
import io.legado.app.databinding.ActivityBookSourceBinding
|
||||
import io.legado.app.databinding.DialogEditTextBinding
|
||||
import io.legado.app.help.DirectLinkUpload
|
||||
import io.legado.app.help.IntentData
|
||||
import io.legado.app.help.config.LocalConfig
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
|
||||
@@ -10,12 +10,10 @@ import com.google.android.flexbox.FlexboxLayout
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.adapter.ItemViewHolder
|
||||
import io.legado.app.base.adapter.RecyclerAdapter
|
||||
import io.legado.app.data.appDb
|
||||
import io.legado.app.data.entities.BookSource
|
||||
import io.legado.app.data.entities.rule.ExploreKind
|
||||
import io.legado.app.databinding.ItemFilletTextBinding
|
||||
import io.legado.app.databinding.ItemFindBookBinding
|
||||
import io.legado.app.help.config.SourceConfig
|
||||
import io.legado.app.help.coroutine.Coroutine
|
||||
import io.legado.app.lib.theme.accentColor
|
||||
import io.legado.app.ui.login.SourceLoginActivity
|
||||
@@ -173,10 +171,7 @@ class ExploreAdapter(context: Context, val callBack: CallBack) :
|
||||
}.onSuccess {
|
||||
callBack.refreshData()
|
||||
}
|
||||
R.id.menu_del -> Coroutine.async(callBack.scope) {
|
||||
appDb.bookSourceDao.delete(source)
|
||||
SourceConfig.removeSource(source.bookSourceUrl)
|
||||
}
|
||||
R.id.menu_del -> callBack.deleteSource(source)
|
||||
}
|
||||
true
|
||||
}
|
||||
@@ -191,5 +186,6 @@ class ExploreAdapter(context: Context, val callBack: CallBack) :
|
||||
fun openExplore(sourceUrl: String, title: String, exploreUrl: String?)
|
||||
fun editSource(sourceUrl: String)
|
||||
fun toTop(source: BookSource)
|
||||
fun deleteSource(source: BookSource)
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,7 @@ import io.legado.app.data.appDb
|
||||
import io.legado.app.data.entities.BookSource
|
||||
import io.legado.app.databinding.FragmentExploreBinding
|
||||
import io.legado.app.help.config.AppConfig
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.lib.theme.primaryTextColor
|
||||
import io.legado.app.ui.book.explore.ExploreShowActivity
|
||||
@@ -183,6 +184,16 @@ class ExploreFragment : VMBaseFragment<ExploreViewModel>(R.layout.fragment_explo
|
||||
viewModel.topSource(source)
|
||||
}
|
||||
|
||||
override fun deleteSource(source: BookSource) {
|
||||
alert(R.string.draw) {
|
||||
setMessage(getString(R.string.sure_del) + "\n" + source.bookSourceName)
|
||||
noButton()
|
||||
yesButton {
|
||||
viewModel.deleteSource(source)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun compressExplore() {
|
||||
if (!adapter.compressExplore()) {
|
||||
if (AppConfig.isEInkMode) {
|
||||
|
||||
@@ -4,6 +4,7 @@ import android.app.Application
|
||||
import io.legado.app.base.BaseViewModel
|
||||
import io.legado.app.data.appDb
|
||||
import io.legado.app.data.entities.BookSource
|
||||
import io.legado.app.help.config.SourceConfig
|
||||
|
||||
class ExploreViewModel(application: Application) : BaseViewModel(application) {
|
||||
|
||||
@@ -15,4 +16,11 @@ class ExploreViewModel(application: Application) : BaseViewModel(application) {
|
||||
}
|
||||
}
|
||||
|
||||
fun deleteSource(source: BookSource) {
|
||||
execute {
|
||||
appDb.bookSourceDao.delete(source)
|
||||
SourceConfig.removeSource(source.bookSourceUrl)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
package io.legado.app.utils
|
||||
|
||||
import android.util.Base64
|
||||
import cn.hutool.crypto.symmetric.SymmetricCrypto
|
||||
import java.security.spec.AlgorithmParameterSpec
|
||||
import javax.crypto.spec.IvParameterSpec
|
||||
import javax.crypto.spec.SecretKeySpec
|
||||
import cn.hutool.crypto.symmetric.SymmetricCrypto
|
||||
|
||||
/**
|
||||
* transformations https://developer.android.google.cn/reference/kotlin/javax/crypto/Cipher?hl=en
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
package io.legado.app.utils
|
||||
|
||||
import io.legado.app.constant.AppPattern.dataUriRegex
|
||||
import android.icu.text.Collator
|
||||
import android.icu.util.ULocale
|
||||
import android.net.Uri
|
||||
import android.text.Editable
|
||||
import io.legado.app.constant.AppPattern.dataUriRegex
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
|
||||
|
||||
@@ -13,64 +13,64 @@
|
||||
app:fitStatusBar="false"
|
||||
app:title="@string/edit_book_source" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:layout_gravity="center_vertical">
|
||||
|
||||
<io.legado.app.lib.theme.view.ThemeCheckBox
|
||||
android:id="@+id/cb_is_enable"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:checked="true"
|
||||
android:text="@string/is_enable" />
|
||||
|
||||
<io.legado.app.lib.theme.view.ThemeCheckBox
|
||||
android:id="@+id/cb_is_enable_explore"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:checked="true"
|
||||
android:text="@string/discovery" />
|
||||
|
||||
<io.legado.app.lib.theme.view.ThemeCheckBox
|
||||
android:id="@+id/cb_is_enable_cookie"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:checked="true"
|
||||
android:text="@string/auto_save_cookie" />
|
||||
|
||||
<io.legado.app.lib.theme.view.ThemeCheckBox
|
||||
android:id="@+id/cb_is_enable_review"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:checked="true"
|
||||
android:text="@string/review" />
|
||||
|
||||
</LinearLayout>
|
||||
<LinearLayout
|
||||
<HorizontalScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
android:scrollbars="none">
|
||||
|
||||
<TextView
|
||||
android:height="30dp"
|
||||
android:gravity="center"
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:text="@string/book_type"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginRight="3dp"
|
||||
tools:ignore="RtlHardcoded" />
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:paddingHorizontal="8dp"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatSpinner
|
||||
android:id="@+id/sp_type"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:entries="@array/book_type"
|
||||
app:theme="@style/Spinner" />
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:text="@string/book_type"
|
||||
tools:ignore="RtlHardcoded" />
|
||||
|
||||
</LinearLayout>
|
||||
<androidx.appcompat.widget.AppCompatSpinner
|
||||
android:id="@+id/sp_type"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:entries="@array/book_type"
|
||||
app:theme="@style/Spinner" />
|
||||
|
||||
<io.legado.app.lib.theme.view.ThemeCheckBox
|
||||
android:id="@+id/cb_is_enable"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:checked="true"
|
||||
android:text="@string/is_enable" />
|
||||
|
||||
<io.legado.app.lib.theme.view.ThemeCheckBox
|
||||
android:id="@+id/cb_is_enable_explore"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:checked="true"
|
||||
android:text="@string/discovery" />
|
||||
|
||||
<io.legado.app.lib.theme.view.ThemeCheckBox
|
||||
android:id="@+id/cb_is_enable_cookie"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:checked="true"
|
||||
android:text="@string/auto_save_cookie" />
|
||||
|
||||
<io.legado.app.lib.theme.view.ThemeCheckBox
|
||||
android:id="@+id/cb_is_enable_review"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:checked="true"
|
||||
android:text="@string/review" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</HorizontalScrollView>
|
||||
|
||||
<com.google.android.material.tabs.TabLayout
|
||||
android:id="@+id/tab_layout"
|
||||
@@ -119,6 +119,7 @@
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
android:layout_height="match_parent"
|
||||
tools:listitem="@layout/item_source_edit" />
|
||||
|
||||
</LinearLayout>
|
||||
@@ -35,7 +35,8 @@
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1">
|
||||
android:layout_weight="1"
|
||||
android:overScrollMode="ifContentScrolls">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -26,7 +26,8 @@
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
android:overScrollMode="ifContentScrolls">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -30,7 +30,8 @@
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
android:layout_height="wrap_content"
|
||||
android:overScrollMode="ifContentScrolls">
|
||||
|
||||
<com.google.android.flexbox.FlexboxLayout
|
||||
android:id="@+id/flexbox"
|
||||
|
||||
@@ -46,7 +46,8 @@
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
android:layout_height="wrap_content"
|
||||
android:overScrollMode="ifContentScrolls">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
android:layout_marginTop="5dp"
|
||||
android:padding="5dp"
|
||||
android:src="@drawable/ic_praise"
|
||||
android:contentDescription="@string/like_source"
|
||||
app:layout_constraintBottom_toTopOf="@+id/iv_bad"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
@@ -27,6 +28,7 @@
|
||||
android:padding="5dp"
|
||||
android:rotationX="180"
|
||||
android:src="@drawable/ic_praise"
|
||||
android:contentDescription="@string/not_like_source"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/iv_good"
|
||||
|
||||
@@ -1016,8 +1016,8 @@
|
||||
<string name="rule_review_content">段评内容(contentRule)</string>
|
||||
<string name="rule_review_quote">段评回复URL(reviewQuoteUrl)</string>
|
||||
<string name="rule_post_time">段评发布时间(postTimeRule)</string>
|
||||
<string name="review_vote_down">点踩URL(voteUpUrl)</string>
|
||||
<string name="review_vote_up">点赞URL(voteDownUrl)</string>
|
||||
<string name="review_vote_down">点踩URL(voteDownUrl)</string>
|
||||
<string name="review_vote_up">点赞URL(voteUpUrl)</string>
|
||||
<string name="post_review_url">发送回复URL(postReviewUrl)</string>
|
||||
<string name="post_quote_url">发送回复段评URL(postQuoteUrl)</string>
|
||||
<string name="delete_review_url">删除段评URL(deleteUrl)</string>
|
||||
@@ -1026,4 +1026,6 @@
|
||||
<string name="show_read_title_addition">show read title addition area</string>
|
||||
<string name="read_bar_style_follow_page">read bar style follow page</string>
|
||||
<string name="rule_image_decode">Decode Image(imageDecode)</string>
|
||||
<string name="like_source">赞</string>
|
||||
<string name="not_like_source">踩</string>
|
||||
</resources>
|
||||
|
||||
@@ -1019,8 +1019,8 @@
|
||||
<string name="rule_review_content">段评内容(contentRule)</string>
|
||||
<string name="rule_post_time">段评发布时间(postTimeRule)</string>
|
||||
<string name="rule_review_quote">段评回复URL(reviewQuoteUrl)</string>
|
||||
<string name="review_vote_down">点踩URL(voteUpUrl)</string>
|
||||
<string name="review_vote_up">点赞URL(voteDownUrl)</string>
|
||||
<string name="review_vote_down">点踩URL(voteDownUrl)</string>
|
||||
<string name="review_vote_up">点赞URL(voteUpUrl)</string>
|
||||
<string name="post_review_url">发送回复URL(postReviewUrl)</string>
|
||||
<string name="post_quote_url">发送回复段评URL(postQuoteUrl)</string>
|
||||
<string name="delete_review_url">删除段评URL(deleteUrl)</string>
|
||||
@@ -1029,4 +1029,6 @@
|
||||
<string name="show_read_title_addition">show read title addition area</string>
|
||||
<string name="read_bar_style_follow_page">read bar style follow page</string>
|
||||
<string name="rule_image_decode">Decode Image(imageDecode)</string>
|
||||
<string name="like_source">赞</string>
|
||||
<string name="not_like_source">踩</string>
|
||||
</resources>
|
||||
|
||||
@@ -1019,8 +1019,8 @@
|
||||
<string name="rule_review_content">段评内容(contentRule)</string>
|
||||
<string name="rule_post_time">段评发布时间(postTimeRule)</string>
|
||||
<string name="rule_review_quote">段评回复URL(reviewQuoteUrl)</string>
|
||||
<string name="review_vote_down">点踩URL(voteUpUrl)</string>
|
||||
<string name="review_vote_up">点赞URL(voteDownUrl)</string>
|
||||
<string name="review_vote_down">点踩URL(voteDownUrl)</string>
|
||||
<string name="review_vote_up">点赞URL(voteUpUrl)</string>
|
||||
<string name="post_review_url">发送回复URL(postReviewUrl)</string>
|
||||
<string name="post_quote_url">发送回复段评URL(postQuoteUrl)</string>
|
||||
<string name="delete_review_url">删除段评URL(deleteUrl)</string>
|
||||
@@ -1029,4 +1029,6 @@
|
||||
<string name="show_read_title_addition">show read title addition area</string>
|
||||
<string name="read_bar_style_follow_page">read bar style follow page</string>
|
||||
<string name="rule_image_decode">Decode Image(imageDecode)</string>
|
||||
<string name="like_source">赞</string>
|
||||
<string name="not_like_source">踩</string>
|
||||
</resources>
|
||||
|
||||
@@ -1016,8 +1016,8 @@
|
||||
<string name="rule_review_content">段评内容(contentRule)</string>
|
||||
<string name="rule_post_time">段评发布时间(postTimeRule)</string>
|
||||
<string name="rule_review_quote">段评回复URL(reviewQuoteUrl)</string>
|
||||
<string name="review_vote_down">点踩URL(voteUpUrl)</string>
|
||||
<string name="review_vote_up">点赞URL(voteDownUrl)</string>
|
||||
<string name="review_vote_down">点踩URL(voteDownUrl)</string>
|
||||
<string name="review_vote_up">点赞URL(voteUpUrl)</string>
|
||||
<string name="post_review_url">发送回复URL(postReviewUrl)</string>
|
||||
<string name="post_quote_url">发送回复段评URL(postQuoteUrl)</string>
|
||||
<string name="delete_review_url">删除段评URL(deleteUrl)</string>
|
||||
@@ -1026,4 +1026,6 @@
|
||||
<string name="show_read_title_addition">展示顶部工具栏附加区域</string>
|
||||
<string name="read_bar_style_follow_page">工具栏样式跟随页面</string>
|
||||
<string name="rule_image_decode">图片解密(imageDecode)</string>
|
||||
<string name="like_source">赞</string>
|
||||
<string name="not_like_source">踩</string>
|
||||
</resources>
|
||||
|
||||
@@ -1018,8 +1018,8 @@
|
||||
<string name="rule_review_content">段评内容(contentRule)</string>
|
||||
<string name="rule_post_time">段评发布时间(postTimeRule)</string>
|
||||
<string name="rule_review_quote">段评回复URL(reviewQuoteUrl)</string>
|
||||
<string name="review_vote_down">点踩URL(voteUpUrl)</string>
|
||||
<string name="review_vote_up">点赞URL(voteDownUrl)</string>
|
||||
<string name="review_vote_down">点踩URL(voteDownUrl)</string>
|
||||
<string name="review_vote_up">点赞URL(voteUpUrl)</string>
|
||||
<string name="post_review_url">发送回复URL(postReviewUrl)</string>
|
||||
<string name="post_quote_url">发送回复段评URL(postQuoteUrl)</string>
|
||||
<string name="delete_review_url">删除段评URL(deleteUrl)</string>
|
||||
@@ -1028,4 +1028,6 @@
|
||||
<string name="show_read_title_addition">展示顶部工具栏附加区域</string>
|
||||
<string name="read_bar_style_follow_page">工具栏样式跟随页面</string>
|
||||
<string name="rule_image_decode">图片解密(imageDecode)</string>
|
||||
<string name="like_source">赞</string>
|
||||
<string name="not_like_source">踩</string>
|
||||
</resources>
|
||||
|
||||
@@ -1018,8 +1018,8 @@
|
||||
<string name="rule_review_content">段评内容(contentRule)</string>
|
||||
<string name="rule_post_time">段评发布时间(postTimeRule)</string>
|
||||
<string name="rule_review_quote">段评回复URL(reviewQuoteUrl)</string>
|
||||
<string name="review_vote_down">点踩URL(voteUpUrl)</string>
|
||||
<string name="review_vote_up">点赞URL(voteDownUrl)</string>
|
||||
<string name="review_vote_down">点踩URL(voteDownUrl)</string>
|
||||
<string name="review_vote_up">点赞URL(voteUpUrl)</string>
|
||||
<string name="post_review_url">发送回复URL(postReviewUrl)</string>
|
||||
<string name="post_quote_url">发送回复段评URL(postQuoteUrl)</string>
|
||||
<string name="delete_review_url">删除段评URL(deleteUrl)</string>
|
||||
@@ -1028,4 +1028,6 @@
|
||||
<string name="show_read_title_addition">展示顶部工具栏附加区域</string>
|
||||
<string name="read_bar_style_follow_page">工具栏样式跟随页面</string>
|
||||
<string name="rule_image_decode">图片解密(imageDecode)</string>
|
||||
<string name="like_source">赞</string>
|
||||
<string name="not_like_source">踩</string>
|
||||
</resources>
|
||||
|
||||
@@ -1019,8 +1019,8 @@
|
||||
<string name="rule_review_content">段评内容(contentRule)</string>
|
||||
<string name="rule_post_time">段评发布时间(postTimeRule)</string>
|
||||
<string name="rule_review_quote">段评回复URL(reviewQuoteUrl)</string>
|
||||
<string name="review_vote_down">点踩URL(voteUpUrl)</string>
|
||||
<string name="review_vote_up">点赞URL(voteDownUrl)</string>
|
||||
<string name="review_vote_down">点踩URL(voteDownUrl)</string>
|
||||
<string name="review_vote_up">点赞URL(voteUpUrl)</string>
|
||||
<string name="post_review_url">发送回复URL(postReviewUrl)</string>
|
||||
<string name="post_quote_url">发送回复段评URL(postQuoteUrl)</string>
|
||||
<string name="delete_review_url">删除段评URL(deleteUrl)</string>
|
||||
@@ -1029,4 +1029,6 @@
|
||||
<string name="show_read_title_addition">show read title addition area</string>
|
||||
<string name="read_bar_style_follow_page">read bar style follow page</string>
|
||||
<string name="rule_image_decode">Decode Image(imageDecode)</string>
|
||||
<string name="like_source">赞</string>
|
||||
<string name="not_like_source">踩</string>
|
||||
</resources>
|
||||
|
||||
@@ -5,7 +5,7 @@ buildscript {
|
||||
kotlin_version = '1.7.10'
|
||||
compose_version = '1.2.1'
|
||||
compose_compiler_version = '1.3.0'
|
||||
agp_version= '7.2.2'
|
||||
agp_version = '7.3.0'
|
||||
exoplayer_version = '2.18.1'
|
||||
splitties_version = '3.0.0'
|
||||
room_version = '2.4.3'
|
||||
|
||||
Reference in New Issue
Block a user