Refine EhFilter API

This commit is contained in:
tarsin committed 2023-07-01 11:37:00 +08:00
1 parent ef891ea23d
commit f3e1400d4c
4 files changed
+26 -25

No files matched your search

@@ -32,6 +32,21 @@ object EhFilter {
val commenterFilterList = mutableStateListOf<Filter>()
val commentFilterList = mutableStateListOf<Filter>()
fun Filter.remember() = EhDB.addFilter(this).also { if (it) memorizeFilter(this) }
fun Filter.trigger() = EhDB.triggerFilter(this)
fun Filter.forget() {
EhDB.deleteFilter(this)
when (mode) {
MODE_TITLE -> titleFilterList.remove(this)
MODE_TAG -> tagFilterList.remove(this)
MODE_TAG_NAMESPACE -> tagNamespaceFilterList.remove(this)
MODE_UPLOADER -> uploaderFilterList.remove(this)
MODE_COMMENTER -> commenterFilterList.remove(this)
MODE_COMMENT -> commentFilterList.remove(this)
else -> error("Unknown mode: " + mode)
}
}
const val MODE_TITLE = 0
const val MODE_UPLOADER = 1
const val MODE_TAG = 2
@@ -55,22 +70,6 @@ object EhFilter {
}
}
fun addFilter(filter: Filter) = EhDB.addFilter(filter).also { if (it) memorizeFilter(filter) }
fun triggerFilter(filter: Filter) = EhDB.triggerFilter(filter)
fun deleteFilter(filter: Filter) {
EhDB.deleteFilter(filter)
when (filter.mode) {
MODE_TITLE -> titleFilterList.remove(filter)
MODE_TAG -> tagFilterList.remove(filter)
MODE_TAG_NAMESPACE -> tagNamespaceFilterList.remove(filter)
MODE_UPLOADER -> uploaderFilterList.remove(filter)
MODE_COMMENTER -> commenterFilterList.remove(filter)
MODE_COMMENT -> commentFilterList.remove(filter)
else -> error("Unknown mode: " + filter.mode)
}
}
private fun spiltTag(tag: String) = tag.run {
val index = indexOf(':')
if (index < 0) null to this else substring(0, index) to substring(index + 1)
@@ -58,6 +58,7 @@ import androidx.viewbinding.ViewBinding
import com.hippo.ehviewer.R
import com.hippo.ehviewer.client.EhEngine
import com.hippo.ehviewer.client.EhFilter
import com.hippo.ehviewer.client.EhFilter.remember
import com.hippo.ehviewer.client.EhUrl
import com.hippo.ehviewer.client.data.GalleryComment
import com.hippo.ehviewer.client.data.GalleryCommentList
@@ -304,8 +305,7 @@ class GalleryCommentsScene : BaseToolbarScene(), View.OnClickListener, OnRefresh
BaseDialogBuilder(context)
.setMessage(getString(R.string.filter_the_commenter, commenter))
.setPositiveButton(android.R.string.ok) { _: DialogInterface?, _: Int ->
val filter = Filter(EhFilter.MODE_COMMENTER, commenter)
EhFilter.addFilter(filter)
Filter(EhFilter.MODE_COMMENTER, commenter).remember()
hideComment(position)
showTip(R.string.filter_added, LENGTH_SHORT)
}
@@ -116,6 +116,7 @@ import com.hippo.ehviewer.Settings
import com.hippo.ehviewer.client.EhCookieStore
import com.hippo.ehviewer.client.EhEngine
import com.hippo.ehviewer.client.EhFilter
import com.hippo.ehviewer.client.EhFilter.remember
import com.hippo.ehviewer.client.EhTagDatabase
import com.hippo.ehviewer.client.EhTagDatabase.isTranslatable
import com.hippo.ehviewer.client.EhTagDatabase.namespaceToPrefix
@@ -1227,8 +1228,7 @@ class GalleryDetailScene : BaseScene(), DownloadInfoListener {
BaseDialogBuilder(context)
.setMessage(getString(R.string.filter_the_tag, tag))
.setPositiveButton(android.R.string.ok) { _: DialogInterface?, _: Int ->
val filter = Filter(EhFilter.MODE_TAG, tag)
EhFilter.addFilter(filter)
Filter(EhFilter.MODE_TAG, tag).remember()
showTip(R.string.filter_added, LENGTH_SHORT)
}
.setNegativeButton(android.R.string.cancel, null)
@@ -1334,8 +1334,7 @@ class GalleryDetailScene : BaseScene(), DownloadInfoListener {
BaseDialogBuilder(context)
.setMessage(getString(R.string.filter_the_uploader, uploader))
.setPositiveButton(android.R.string.ok) { _: DialogInterface?, _: Int ->
val filter = Filter(EhFilter.MODE_UPLOADER, uploader)
EhFilter.addFilter(filter)
Filter(EhFilter.MODE_UPLOADER, uploader).remember()
showTip(R.string.filter_added, LENGTH_SHORT)
}
.setNegativeButton(android.R.string.cancel, null)
@@ -40,6 +40,9 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.hippo.ehviewer.R
import com.hippo.ehviewer.client.EhFilter
import com.hippo.ehviewer.client.EhFilter.forget
import com.hippo.ehviewer.client.EhFilter.remember
import com.hippo.ehviewer.client.EhFilter.trigger
import com.hippo.ehviewer.dao.Filter
import com.hippo.ehviewer.databinding.DialogAddFilterBinding
import com.hippo.ehviewer.ui.LocalNavController
@@ -80,7 +83,7 @@ fun FilterScreen() {
}
}
binding.textInputLayout.run {
if (!EhFilter.addFilter(Filter(mArray.indexOf(text1), text!!))) {
if (!Filter(mArray.indexOf(text1), text!!).remember()) {
error = context.getString(R.string.label_text_exist)
return
} else {
@@ -138,7 +141,7 @@ fun FilterScreen() {
checked = filter.enable,
onCheckedChange = {
coroutineScope.launch {
EhFilter.triggerFilter(filter)
filter.trigger()
filterCheckBoxRecomposeScope.invalidate()
}
},
@@ -146,7 +149,7 @@ fun FilterScreen() {
Text(text = filter.text)
Spacer(modifier = Modifier.weight(1F))
IconButton(
onClick = { BaseDialogBuilder(context).setMessage(context.getString(R.string.delete_filter, filter.text)).setPositiveButton(R.string.delete) { _, which -> if (DialogInterface.BUTTON_POSITIVE == which) { coroutineScope.launch { EhFilter.deleteFilter(filter) } } }.setNegativeButton(android.R.string.cancel, null).show() },
onClick = { BaseDialogBuilder(context).setMessage(context.getString(R.string.delete_filter, filter.text)).setPositiveButton(R.string.delete) { _, which -> if (DialogInterface.BUTTON_POSITIVE == which) { coroutineScope.launch { filter.forget() } } }.setNegativeButton(android.R.string.cancel, null).show() },
) {
Icon(imageVector = Icons.Default.Delete, contentDescription = null)
}