优化
Some checks are pending
Test Build / prepare (push) Waiting to run
Test Build / build (app, release) (push) Blocked by required conditions
Test Build / build (app, releaseA) (push) Blocked by required conditions
Test Build / prerelease (push) Blocked by required conditions
Test Build / lanzou (push) Blocked by required conditions
Test Build / test_Branch (push) Blocked by required conditions
Test Build / telegram (push) Blocked by required conditions

This commit is contained in:
Horis
2025-02-07 14:04:29 +08:00
parent d9baf024fe
commit 762f912374
6 changed files with 122 additions and 0 deletions

View File

@@ -7,6 +7,7 @@ import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.widget.Toolbar
import androidx.fragment.app.viewModels
import com.bumptech.glide.load.DataSource
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.load.engine.GlideException
@@ -19,6 +20,7 @@ import io.legado.app.databinding.DialogVerificationCodeViewBinding
import io.legado.app.help.glide.ImageLoader
import io.legado.app.help.glide.OkHttpModelLoader
import io.legado.app.help.source.SourceVerificationHelp
import io.legado.app.lib.dialogs.alert
import io.legado.app.lib.theme.primaryColor
import io.legado.app.model.ImageProvider
import io.legado.app.ui.widget.dialog.PhotoDialog
@@ -49,6 +51,7 @@ class VerificationCodeDialog() : BaseDialogFragment(R.layout.dialog_verification
}
val binding by viewBinding(DialogVerificationCodeViewBinding::bind)
val viewModel by viewModels<VerificationCodeViewModel>()
override fun onStart() {
super.onStart()
@@ -60,6 +63,7 @@ class VerificationCodeDialog() : BaseDialogFragment(R.layout.dialog_verification
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?): Unit = binding.run {
initMenu()
val arguments = arguments ?: return@run
viewModel.initData(arguments)
toolBar.setBackgroundColor(primaryColor)
toolBar.subtitle = arguments.getString("sourceName")
sourceOrigin = arguments.getString("sourceOrigin")
@@ -119,6 +123,24 @@ class VerificationCodeDialog() : BaseDialogFragment(R.layout.dialog_verification
SourceVerificationHelp.setResult(sourceOrigin!!, verificationCode)
dismiss()
}
R.id.menu_disable_source -> {
viewModel.disableSource {
dismiss()
}
}
R.id.menu_delete_source -> {
alert(R.string.draw) {
setMessage(getString(R.string.sure_del) + "\n" + viewModel.sourceName)
noButton()
yesButton {
viewModel.deleteSource {
dismiss()
}
}
}
}
}
return false
}

View File

@@ -0,0 +1,34 @@
package io.legado.app.ui.association
import android.app.Application
import android.os.Bundle
import io.legado.app.base.BaseViewModel
import io.legado.app.data.appDb
class VerificationCodeViewModel(app: Application): BaseViewModel(app) {
var sourceOrigin = ""
var sourceName = ""
fun initData(arguments: Bundle) {
sourceName = arguments.getString("sourceName") ?: ""
sourceOrigin = arguments.getString("sourceOrigin") ?: ""
}
fun disableSource(block: () -> Unit) {
execute {
appDb.bookSourceDao.enable(sourceOrigin, false)
}.onSuccess {
block.invoke()
}
}
fun deleteSource(block: () -> Unit) {
execute {
appDb.bookSourceDao.delete(sourceOrigin)
}.onSuccess {
block.invoke()
}
}
}

View File

@@ -30,6 +30,7 @@ import io.legado.app.help.config.AppConfig
import io.legado.app.help.http.CookieStore
import io.legado.app.help.source.SourceVerificationHelp
import io.legado.app.lib.dialogs.SelectItem
import io.legado.app.lib.dialogs.alert
import io.legado.app.lib.theme.accentColor
import io.legado.app.model.Download
import io.legado.app.ui.association.OnLineImportActivity
@@ -102,6 +103,14 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
return super.onCompatCreateOptionsMenu(menu)
}
override fun onPrepareOptionsMenu(menu: Menu): Boolean {
if (viewModel.sourceOrigin.isNotEmpty()) {
menu.findItem(R.id.menu_disable_source)?.isVisible = true
menu.findItem(R.id.menu_delete_source)?.isVisible = true
}
return super.onPrepareOptionsMenu(menu)
}
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.menu_open_in_browser -> openUrl(viewModel.baseUrl)
@@ -117,6 +126,23 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
}
R.id.menu_full_screen -> toggleFullScreen()
R.id.menu_disable_source -> {
viewModel.disableSource {
finish()
}
}
R.id.menu_delete_source -> {
alert(R.string.draw) {
setMessage(getString(R.string.sure_del) + "\n" + viewModel.sourceName)
noButton()
yesButton {
viewModel.deleteSource {
finish()
}
}
}
}
}
return super.onCompatOptionsItemSelected(item)
}

View File

@@ -33,6 +33,7 @@ class WebViewModel(application: Application) : BaseViewModel(application) {
val headerMap: HashMap<String, String> = hashMapOf()
var sourceVerificationEnable: Boolean = false
var refetchAfterSuccess: Boolean = true
var sourceName: String = ""
var sourceOrigin: String = ""
fun initData(
@@ -43,6 +44,7 @@ class WebViewModel(application: Application) : BaseViewModel(application) {
this@WebViewModel.intent = intent
val url = intent.getStringExtra("url")
?: throw NoStackTraceException("url不能为空")
sourceName = intent.getStringExtra("sourceName") ?: ""
sourceOrigin = intent.getStringExtra("sourceOrigin") ?: ""
sourceVerificationEnable = intent.getBooleanExtra("sourceVerificationEnable", false)
refetchAfterSuccess = intent.getBooleanExtra("refetchAfterSuccess", true)
@@ -123,4 +125,20 @@ class WebViewModel(application: Application) : BaseViewModel(application) {
}
}
fun disableSource(block: () -> Unit) {
execute {
appDb.bookSourceDao.enable(sourceOrigin, false)
}.onSuccess {
block.invoke()
}
}
fun deleteSource(block: () -> Unit) {
execute {
appDb.bookSourceDao.delete(sourceOrigin)
}.onSuccess {
block.invoke()
}
}
}

View File

@@ -10,4 +10,14 @@
android:title="@string/ok"
app:showAsAction="always" />
<item
android:id="@+id/menu_disable_source"
android:title="@string/disable_source"
app:showAsAction="never" />
<item
android:id="@+id/menu_delete_source"
android:title="@string/delete_source"
app:showAsAction="never" />
</menu>

View File

@@ -23,4 +23,16 @@
android:title="@string/full_screen"
app:showAsAction="never" />
<item
android:id="@+id/menu_disable_source"
android:title="@string/disable_source"
android:visible="false"
app:showAsAction="never" />
<item
android:id="@+id/menu_delete_source"
android:title="@string/delete_source"
android:visible="false"
app:showAsAction="never" />
</menu>