add user filtering
This commit is contained in:
parent
76616461e9
commit
ca75891668
4 changed files with 39 additions and 0 deletions
|
|
@ -70,6 +70,7 @@ const FilteringTab = {
|
||||||
checkRegexValid (id) {
|
checkRegexValid (id) {
|
||||||
const filter = this.muteFiltersObject[id]
|
const filter = this.muteFiltersObject[id]
|
||||||
if (filter.type !== 'regexp') return true
|
if (filter.type !== 'regexp') return true
|
||||||
|
if (filter.type !== 'user_regexp') return true
|
||||||
const { value } = filter
|
const { value } = filter
|
||||||
let valid = true
|
let valid = true
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
|
|
@ -128,6 +128,12 @@
|
||||||
<option value="regexp">
|
<option value="regexp">
|
||||||
{{ $t('settings.filter.regexp') }}
|
{{ $t('settings.filter.regexp') }}
|
||||||
</option>
|
</option>
|
||||||
|
<option value="user">
|
||||||
|
{{ $t('settings.filter.user') }}
|
||||||
|
</option>
|
||||||
|
<option value="user_regexp">
|
||||||
|
{{ $t('settings.filter.user_regexp') }}
|
||||||
|
</option>
|
||||||
</Select>
|
</Select>
|
||||||
</div>
|
</div>
|
||||||
<div class="filter-value filter-field">
|
<div class="filter-value filter-field">
|
||||||
|
|
|
||||||
|
|
@ -416,6 +416,8 @@
|
||||||
"type": "Filter type",
|
"type": "Filter type",
|
||||||
"regexp": "RegExp",
|
"regexp": "RegExp",
|
||||||
"plain": "Simple",
|
"plain": "Simple",
|
||||||
|
"user": "User (Simple)",
|
||||||
|
"user_regexp": "User (RegExp)",
|
||||||
"hide": "Hide completely",
|
"hide": "Hide completely",
|
||||||
"name": "Name",
|
"name": "Name",
|
||||||
"value": "Value",
|
"value": "Value",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
export const muteFilterHits = (muteFilters, status) => {
|
export const muteFilterHits = (muteFilters, status) => {
|
||||||
const statusText = status.text.toLowerCase()
|
const statusText = status.text.toLowerCase()
|
||||||
const statusSummary = status.summary.toLowerCase()
|
const statusSummary = status.summary.toLowerCase()
|
||||||
|
const replyToUser = status.in_reply_to_screen_name?.toLowerCase()
|
||||||
|
const poster = status.user.screen_name.toLowerCase()
|
||||||
|
const mentions = (status.attentions || []).map(att => att.screen_name.toLowerCase())
|
||||||
|
|
||||||
|
console.log(status)
|
||||||
|
|
||||||
return muteFilters.toSorted((a,b) => b.order - a.order).map(filter => {
|
return muteFilters.toSorted((a,b) => b.order - a.order).map(filter => {
|
||||||
const { hide, expires, name, value, type, enabled} = filter
|
const { hide, expires, name, value, type, enabled} = filter
|
||||||
|
|
@ -25,6 +30,31 @@ export const muteFilterHits = (muteFilters, status) => {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case 'user': {
|
||||||
|
if (
|
||||||
|
poster.includes(value) ||
|
||||||
|
replyToUser.includes(value) ||
|
||||||
|
mentions.some(mention => mention.includes(value))
|
||||||
|
) {
|
||||||
|
return { hide, name }
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
case 'user_regexp': {
|
||||||
|
try {
|
||||||
|
const re = new RegExp(value, 'i')
|
||||||
|
if (
|
||||||
|
re.test(poster) ||
|
||||||
|
re.test(replyToUser) ||
|
||||||
|
mentions.some(mention => re.test(mention))
|
||||||
|
) {
|
||||||
|
return { hide, name }
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
} catch {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}).filter(_ => _)
|
}).filter(_ => _)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue