From e51c297a7d6e77fca6e1cb822e93d771501caf4d Mon Sep 17 00:00:00 2001
From: FooIbar <118464521+FooIbar@users.noreply.github.com>
Date: Sun, 12 Feb 2023 01:03:53 +0800
Subject: [PATCH] Call getImageLimits() in SettingsActivity's onCreate()
---
.../preference/ImageLimitsPreference.kt | 68 ++++++-------------
.../com/hippo/ehviewer/ui/SettingsActivity.kt | 32 +++++++++
app/src/main/res/values-zh-rCN/strings.xml | 2 +-
app/src/main/res/values/strings.xml | 2 +-
app/src/main/res/xml/eh_settings.xml | 1 -
5 files changed, 53 insertions(+), 52 deletions(-)
diff --git a/app/src/main/java/com/hippo/ehviewer/preference/ImageLimitsPreference.kt b/app/src/main/java/com/hippo/ehviewer/preference/ImageLimitsPreference.kt
index ce2f39680..1c854f474 100644
--- a/app/src/main/java/com/hippo/ehviewer/preference/ImageLimitsPreference.kt
+++ b/app/src/main/java/com/hippo/ehviewer/preference/ImageLimitsPreference.kt
@@ -8,10 +8,7 @@ import android.widget.Button
import androidx.appcompat.app.AlertDialog
import androidx.lifecycle.lifecycleScope
import com.hippo.ehviewer.R
-import com.hippo.ehviewer.client.EhEngine
-import com.hippo.ehviewer.client.parser.HomeParser
import com.hippo.ehviewer.ui.SettingsActivity
-import com.hippo.ehviewer.ui.scene.BaseScene
import com.hippo.preference.DialogPreference
import eu.kanade.tachiyomi.util.lang.launchIO
import eu.kanade.tachiyomi.util.lang.withUIContext
@@ -20,18 +17,11 @@ class ImageLimitsPreference(context: Context, attrs: AttributeSet) :
DialogPreference(context, attrs), View.OnClickListener {
private val mActivity = context as SettingsActivity
private val placeholder = context.getString(R.string.please_wait)
- private val coroutineScope = mActivity.lifecycleScope
private lateinit var resetButton: Button
private lateinit var mDialog: AlertDialog
- private lateinit var mLimits: HomeParser.Limits
- private lateinit var mFunds: HomeParser.Funds
init {
- coroutineScope.launchIO {
- getImageLimits {
- summary = "${mLimits.current} / ${mLimits.maximum}"
- }
- }
+ updateSummary()
}
override fun onPrepareDialogBuilder(builder: AlertDialog.Builder) {
@@ -45,46 +35,40 @@ class ImageLimitsPreference(context: Context, attrs: AttributeSet) :
resetButton = dialog.getButton(DialogInterface.BUTTON_POSITIVE)
resetButton.setOnClickListener(this)
resetButton.isEnabled = false
- if (this::mLimits.isInitialized) {
- bind()
- } else {
- coroutineScope.launchIO {
- getImageLimits(true) {
- bind()
- }
- }
+ launchIOCatching {
+ mActivity.getImageLimits()
}
}
override fun onDialogClosed(positiveResult: Boolean) {
super.onDialogClosed(positiveResult)
- if (this::mLimits.isInitialized) {
- summary = "${mLimits.current} / ${mLimits.maximum}"
- }
+ updateSummary()
}
- private suspend fun getImageLimits(showError: Boolean = false, onSuccess: () -> Unit) {
+ private fun updateSummary() {
+ summary = mActivity.mLimits?.run {
+ mActivity.getString(R.string.image_limits_summary, current, maximum)
+ } ?: mActivity.getString(R.string.image_limits_summary, 0, 0)
+ }
+
+ private fun launchIOCatching(block: suspend () -> Unit) = mActivity.lifecycleScope.launchIO {
runCatching {
- EhEngine.getImageLimits()
+ block()
}.onFailure {
it.printStackTrace()
- if (showError) {
- withUIContext {
- mDialog.setMessage(it.message)
- }
+ withUIContext {
+ mDialog.setMessage(it.message)
}
}.onSuccess {
- mLimits = it.limits
- mFunds = it.funds
withUIContext {
- onSuccess()
+ bind()
}
}
}
private fun bind() {
- val (current, maximum, resetCost) = mLimits
- val (fundsGP, fundsC) = mFunds
+ val (current, maximum, resetCost) = mActivity.mLimits!!
+ val (fundsGP, fundsC) = mActivity.mFunds!!
val cost = if (fundsGP >= resetCost) "$resetCost GP" else "$resetCost Credits"
val message = mActivity.getString(R.string.current_limits, "$current / $maximum", cost) +
"\n" + mActivity.getString(R.string.current_funds, "$fundsGP+", fundsC)
@@ -95,22 +79,8 @@ class ImageLimitsPreference(context: Context, attrs: AttributeSet) :
override fun onClick(v: View) {
resetButton.isEnabled = false
mDialog.setMessage(placeholder)
- coroutineScope.launchIO {
- runCatching {
- EhEngine.resetImageLimits()
- }.onFailure {
- it.printStackTrace()
- withUIContext {
- mDialog.setMessage(it.message)
- }
- }.onSuccess {
- withUIContext {
- mLimits = it ?: HomeParser.Limits(maximum = mLimits.maximum).also {
- mActivity.showTip(R.string.reset_limits_succeed, BaseScene.LENGTH_SHORT)
- }
- bind()
- }
- }
+ launchIOCatching {
+ mActivity.resetImageLimits()
}
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/SettingsActivity.kt b/app/src/main/java/com/hippo/ehviewer/ui/SettingsActivity.kt
index f566f2b4a..21d68f4d6 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/SettingsActivity.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/SettingsActivity.kt
@@ -20,20 +20,38 @@ import android.view.MenuItem
import android.widget.TextView
import androidx.annotation.StringRes
import androidx.fragment.app.FragmentTransaction
+import androidx.lifecycle.lifecycleScope
import androidx.navigation.ActivityNavigator
import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.floatingactionbutton.FloatingActionButton
import com.google.android.material.snackbar.Snackbar
import com.hippo.ehviewer.R
+import com.hippo.ehviewer.client.EhCookieStore
+import com.hippo.ehviewer.client.EhEngine
+import com.hippo.ehviewer.client.parser.HomeParser
import com.hippo.ehviewer.ui.fragment.SettingsFragment
import com.hippo.ehviewer.ui.scene.BaseScene
+import eu.kanade.tachiyomi.util.lang.launchIO
+import eu.kanade.tachiyomi.util.lang.withUIContext
class SettingsActivity : EhActivity() {
private var mFab: FloatingActionButton? = null
private var mContentText: TextView? = null
private var mAppbarLayout: AppBarLayout? = null
+ var mLimits: HomeParser.Limits? = null
+ private set
+ var mFunds: HomeParser.Funds? = null
+ private set
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
+ if (EhCookieStore.hasSignedIn()) {
+ lifecycleScope.launchIO {
+ runCatching {
+ getImageLimits()
+ }.exceptionOrNull()?.printStackTrace()
+ }
+ }
setContentView(R.layout.activity_preference)
setSupportActionBar(findViewById(R.id.toolbar))
mContentText = findViewById(R.id.tip)
@@ -49,6 +67,20 @@ class SettingsActivity : EhActivity() {
}
}
+ suspend fun getImageLimits() = EhEngine.getImageLimits().run {
+ mLimits = limits
+ mFunds = funds
+ }
+
+ suspend fun resetImageLimits() {
+ mLimits =
+ EhEngine.resetImageLimits() ?: HomeParser.Limits(maximum = mLimits!!.maximum).also {
+ withUIContext {
+ showTip(R.string.reset_limits_succeed, BaseScene.LENGTH_SHORT)
+ }
+ }
+ }
+
fun showTip(@StringRes id: Int, length: Int) {
showTip(getString(id), length)
}
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index affc32cc3..4bb7c7355 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -483,7 +483,7 @@
资金:%1$s GP,%2$d Credits
余额不足
图片配额
- 当前图片配额和资金
+ %1$d / %2$d(点击刷新)
当前:%1$s\n重置花费:%2$s
成功重置图片配额
重置
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index a61812e55..8dbb727c7 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -554,7 +554,7 @@
Funds: %1$s GP, %2$d Credits
Insufficient Funds
Image Limits
- Current Image Limits and Funds
+ %1$d / %2$d (Click to refresh)
Current: %1$s\nReset Cost: %2$s
Image limit was successfully reset
Reset
diff --git a/app/src/main/res/xml/eh_settings.xml b/app/src/main/res/xml/eh_settings.xml
index 24800fd68..ab6d4bef2 100644
--- a/app/src/main/res/xml/eh_settings.xml
+++ b/app/src/main/res/xml/eh_settings.xml
@@ -25,7 +25,6 @@