Refine EhFilter API
This commit is contained in:
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)
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user