added option to make filter case-sensitive
This commit is contained in:
parent
7c593e4898
commit
085fa28e3e
5 changed files with 56 additions and 13 deletions
|
|
@ -58,6 +58,7 @@ const FilteringTab = {
|
||||||
hide = false,
|
hide = false,
|
||||||
name = '',
|
name = '',
|
||||||
value = '',
|
value = '',
|
||||||
|
caseSensitive = false,
|
||||||
} = data
|
} = data
|
||||||
|
|
||||||
this.createFilter({
|
this.createFilter({
|
||||||
|
|
@ -66,6 +67,7 @@ const FilteringTab = {
|
||||||
hide,
|
hide,
|
||||||
name,
|
name,
|
||||||
value,
|
value,
|
||||||
|
caseSensitive,
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
onImportFailure(result) {
|
onImportFailure(result) {
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,16 @@
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
> label.checkbox {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: subgrid;
|
||||||
|
grid-template-rows: subgrid;
|
||||||
|
grid-column: 1 / span 2;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
.filter-field-value {
|
.filter-field-value {
|
||||||
|
display: flex;
|
||||||
grid-column: 2 / span 2;
|
grid-column: 2 / span 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -254,6 +254,20 @@
|
||||||
:value="filter[1].value"
|
:value="filter[1].value"
|
||||||
@input="updateFilter(filter[0], 'value', $event.target.value)"
|
@input="updateFilter(filter[0], 'value', $event.target.value)"
|
||||||
>
|
>
|
||||||
|
{{ ' ' }}
|
||||||
|
</div>
|
||||||
|
<div class="filter-value filter-field">
|
||||||
|
<Checkbox
|
||||||
|
:id="'filterCaseSensitive' + filter[0]"
|
||||||
|
:model-value="filter[1].caseSensitive"
|
||||||
|
:name="'filterCaseSensitive' + filter[0]"
|
||||||
|
class="input-inset input-boolean case-sensitive"
|
||||||
|
@update:model-value="updateFilter(filter[0], 'caseSensitive', $event)"
|
||||||
|
>
|
||||||
|
<template #before>
|
||||||
|
{{ $t('settings.filter.case_sensitive') }}
|
||||||
|
</template>
|
||||||
|
</Checkbox>
|
||||||
</div>
|
</div>
|
||||||
<div class="filter-expires filter-field">
|
<div class="filter-expires filter-field">
|
||||||
<label
|
<label
|
||||||
|
|
|
||||||
|
|
@ -440,6 +440,7 @@
|
||||||
"plain": "Simple",
|
"plain": "Simple",
|
||||||
"user": "User (Simple)",
|
"user": "User (Simple)",
|
||||||
"user_regexp": "User (RegExp)",
|
"user_regexp": "User (RegExp)",
|
||||||
|
"case_sensitive": "Case-sensitive",
|
||||||
"hide": "Hide completely",
|
"hide": "Hide completely",
|
||||||
"name": "Name",
|
"name": "Name",
|
||||||
"value": "Value",
|
"value": "Value",
|
||||||
|
|
|
||||||
|
|
@ -10,24 +10,32 @@ export const muteFilterHits = (muteFilters, status) => {
|
||||||
return muteFilters
|
return muteFilters
|
||||||
.toSorted((a, b) => b.order - a.order)
|
.toSorted((a, b) => b.order - a.order)
|
||||||
.map((filter) => {
|
.map((filter) => {
|
||||||
const { hide, expires, name, value, type, enabled } = filter
|
const { hide, expires, name, value, type, enabled, caseSensitive = false } = filter
|
||||||
if (!enabled) return false
|
if (!enabled) return false
|
||||||
if (value === '') return false
|
if (value === '') return false
|
||||||
if (expires !== null && expires < Date.now()) return false
|
if (expires !== null && expires < Date.now()) return false
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'word': {
|
case 'word': {
|
||||||
const lowercaseValue = value.toLowerCase()
|
let match = false
|
||||||
if (
|
if (caseSensitive) {
|
||||||
statusText.toLowerCase().includes(lowercaseValue) ||
|
match =
|
||||||
statusSummary.toLowerCase().includes(lowercaseValue)
|
statusText.includes(value) ||
|
||||||
) {
|
statusSummary.includes(value)
|
||||||
|
} else {
|
||||||
|
const lowercaseValue = value.toLowerCase()
|
||||||
|
match =
|
||||||
|
statusText.toLowerCase().includes(lowercaseValue) ||
|
||||||
|
statusSummary.toLowerCase().includes(lowercaseValue)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (match) {
|
||||||
return { hide, name }
|
return { hide, name }
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
case 'regexp': {
|
case 'regexp': {
|
||||||
try {
|
try {
|
||||||
const re = new RegExp(value, 'i')
|
const re = new RegExp(value, caseSensitive ? '' : 'i')
|
||||||
if (re.test(statusText) || re.test(statusSummary)) {
|
if (re.test(statusText) || re.test(statusSummary)) {
|
||||||
return { hide, name }
|
return { hide, name }
|
||||||
}
|
}
|
||||||
|
|
@ -37,18 +45,27 @@ export const muteFilterHits = (muteFilters, status) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 'user': {
|
case 'user': {
|
||||||
if (
|
let match = false
|
||||||
poster.includes(value) ||
|
if (caseSensitive) {
|
||||||
replyToUser.includes(value) ||
|
match =
|
||||||
mentions.some((mention) => mention.includes(value))
|
poster.includes(value) ||
|
||||||
) {
|
replyToUser.includes(value) ||
|
||||||
|
mentions.some((mention) => mention.includes(value))
|
||||||
|
} else {
|
||||||
|
const lowercaseValue = value.toLowerCase()
|
||||||
|
match =
|
||||||
|
poster.toLowerCase().includes(lowercaseValue) ||
|
||||||
|
replyToUser.toLowerCase().includes(lowercaseValue) ||
|
||||||
|
mentions.some((mention) => mention.toLowerCase().includes(lowercaseValue))
|
||||||
|
}
|
||||||
|
if (match) {
|
||||||
return { hide, name }
|
return { hide, name }
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
case 'user_regexp': {
|
case 'user_regexp': {
|
||||||
try {
|
try {
|
||||||
const re = new RegExp(value, 'i')
|
const re = new RegExp(value, caseSensitive ? '' : 'i')
|
||||||
if (
|
if (
|
||||||
re.test(poster) ||
|
re.test(poster) ||
|
||||||
re.test(replyToUser) ||
|
re.test(replyToUser) ||
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue