Merge branch 'sss-objects' into shigusegubu-themes3
This commit is contained in:
commit
afbf63412d
4 changed files with 243 additions and 189 deletions
|
|
@ -95,22 +95,27 @@ const FilteringTab = {
|
||||||
),
|
),
|
||||||
muteFiltersDraft () {
|
muteFiltersDraft () {
|
||||||
return Object.entries(this.muteFiltersDraftObject)
|
return Object.entries(this.muteFiltersDraftObject)
|
||||||
|
},
|
||||||
|
muteFiltersExpired () {
|
||||||
|
const now = Date.now()
|
||||||
|
return Object
|
||||||
|
.entries(this.muteFiltersDraftObject)
|
||||||
|
.filter(([, { expires }]) => expires != null && expires <= now)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapActions(useServerSideStorageStore, ['setPreference', 'unsetPreference', 'pushServerSideStorage']),
|
...mapActions(useServerSideStorageStore, ['setPreference', 'unsetPreference', 'pushServerSideStorage']),
|
||||||
getDatetimeLocal (timestamp) {
|
getDatetimeLocal (timestamp) {
|
||||||
const date = new Date(timestamp)
|
const date = new Date(timestamp)
|
||||||
|
let fmt = new Intl.NumberFormat("en-US", {minimumIntegerDigits: 2})
|
||||||
const datetime = [
|
const datetime = [
|
||||||
date.getFullYear(),
|
date.getFullYear(),
|
||||||
'-',
|
'-',
|
||||||
date.getMonth() < 9 ? ('0' + (date.getMonth() + 1)) : (date.getMonth() + 1),
|
fmt.format(date.getMonth() + 1),
|
||||||
'-',
|
|
||||||
date.getDate() < 10 ? ('0' + date.getDate()) : date.getDate(),
|
|
||||||
'T',
|
'T',
|
||||||
date.getHours() < 10 ? ('0' + date.getHours()) : date.getHours(),
|
fmt.format(date.getHours()),
|
||||||
':',
|
':',
|
||||||
date.getMinutes() < 10 ? ('0' + date.getMinutes()) : date.getMinutes(),
|
fmt.format(date.getMinutes())
|
||||||
].join('')
|
].join('')
|
||||||
return datetime
|
return datetime
|
||||||
},
|
},
|
||||||
|
|
@ -164,6 +169,14 @@ const FilteringTab = {
|
||||||
this.unsetPreference({ path: 'simple.muteFilters.' + id , value: null })
|
this.unsetPreference({ path: 'simple.muteFilters.' + id , value: null })
|
||||||
this.pushServerSideStorage()
|
this.pushServerSideStorage()
|
||||||
},
|
},
|
||||||
|
purgeExpiredFilters () {
|
||||||
|
this.muteFiltersExpired.forEach(([id]) => {
|
||||||
|
console.log(id)
|
||||||
|
delete this.muteFiltersDraftObject[id]
|
||||||
|
this.unsetPreference({ path: 'simple.muteFilters.' + id , value: null })
|
||||||
|
})
|
||||||
|
this.pushServerSideStorage()
|
||||||
|
},
|
||||||
updateFilter(id, field, value) {
|
updateFilter(id, field, value) {
|
||||||
const filter = { ...this.muteFiltersDraftObject[id] }
|
const filter = { ...this.muteFiltersDraftObject[id] }
|
||||||
if (field === 'expires-never') {
|
if (field === 'expires-never') {
|
||||||
|
|
|
||||||
|
|
@ -12,11 +12,14 @@
|
||||||
margin: 0.5em;
|
margin: 0.5em;
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: fit-content 1fr fit-content;
|
|
||||||
align-items: baseline;
|
align-items: baseline;
|
||||||
grid-gap: 0.5em;
|
grid-gap: 0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.never {
|
||||||
|
margin-left: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
.filter-name {
|
.filter-name {
|
||||||
grid-column: 1 / span 2;
|
grid-column: 1 / span 2;
|
||||||
grid-row: 1;
|
grid-row: 1;
|
||||||
|
|
@ -63,8 +66,18 @@
|
||||||
justify-content: end;
|
justify-content: end;
|
||||||
}
|
}
|
||||||
|
|
||||||
.total {
|
.muteFiltersActions,
|
||||||
text-align: center;
|
.muteFiltersActionsBottom {
|
||||||
|
display: grid;
|
||||||
|
align-items: baseline;
|
||||||
|
grid-auto-flow: column;
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
grid-gap: 0.5em;
|
||||||
|
margin: 0.5em 0;
|
||||||
|
|
||||||
|
.total {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,8 @@
|
||||||
class="filtering-tab"
|
class="filtering-tab"
|
||||||
>
|
>
|
||||||
<div class="setting-item">
|
<div class="setting-item">
|
||||||
|
<h2>{{ $t('settings.filter.clutter') }}</h2>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<h2>{{ $t('settings.filter.clutter') }}</h2>
|
|
||||||
<li>
|
<li>
|
||||||
<ChoiceSetting
|
<ChoiceSetting
|
||||||
v-if="user"
|
v-if="user"
|
||||||
|
|
@ -17,12 +17,18 @@
|
||||||
</ChoiceSetting>
|
</ChoiceSetting>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<BooleanSetting expert="1" path="hidePostStats">
|
<BooleanSetting
|
||||||
|
expert="1"
|
||||||
|
path="hidePostStats"
|
||||||
|
>
|
||||||
{{ $t('settings.hide_post_stats') }}
|
{{ $t('settings.hide_post_stats') }}
|
||||||
</BooleanSetting>
|
</BooleanSetting>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<BooleanSetting expert="1" path="hideUserStats">
|
<BooleanSetting
|
||||||
|
expert="1"
|
||||||
|
path="hideUserStats"
|
||||||
|
>
|
||||||
{{ $t('settings.hide_user_stats') }}
|
{{ $t('settings.hide_user_stats') }}
|
||||||
</BooleanSetting>
|
</BooleanSetting>
|
||||||
</li>
|
</li>
|
||||||
|
|
@ -70,8 +76,10 @@
|
||||||
</BooleanSetting>
|
</BooleanSetting>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="setting-item">
|
||||||
|
<h2>{{ $t('settings.filter.mute_filter') }}</h2>
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<h2>{{ $t('settings.filter.mute_filter') }}</h2>
|
|
||||||
<li>
|
<li>
|
||||||
<BooleanSetting path="hideFilteredStatuses">
|
<BooleanSetting path="hideFilteredStatuses">
|
||||||
{{ $t('settings.hide_muted_statuses') }}
|
{{ $t('settings.hide_muted_statuses') }}
|
||||||
|
|
@ -119,182 +127,11 @@
|
||||||
{{ $t('settings.mute_sensitive_posts') }}
|
{{ $t('settings.mute_sensitive_posts') }}
|
||||||
</BooleanSetting>
|
</BooleanSetting>
|
||||||
</li>
|
</li>
|
||||||
<div class="muteFilterContainer">
|
<li>
|
||||||
<div
|
<h3>{{ $t('settings.filter.custom_filters') }}</h3>
|
||||||
v-for="filter in muteFiltersDraft"
|
<p class="muteFiltersActions">
|
||||||
:key="filter[0]"
|
|
||||||
class="mute-filter"
|
|
||||||
:style="{ order: filter[1].order }"
|
|
||||||
>
|
|
||||||
<div class="filter-name">
|
|
||||||
<label
|
|
||||||
:for="'filterName' + filter[0]"
|
|
||||||
>
|
|
||||||
{{ $t('settings.filter.name') }}
|
|
||||||
</label>
|
|
||||||
{{ ' ' }}
|
|
||||||
<input
|
|
||||||
:id="'filterName' + filter[0]"
|
|
||||||
class="input"
|
|
||||||
:value="filter[1].name"
|
|
||||||
@input="updateFilter(filter[0], 'name', $event.target.value)"
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
<div class="filter-enabled">
|
|
||||||
<Checkbox
|
|
||||||
:id="'filterHide' + filter[0]"
|
|
||||||
:model-value="filter[1].hide"
|
|
||||||
:name="'filterHide' + filter[0]"
|
|
||||||
@update:model-value="updateFilter(filter[0], 'hide', $event)"
|
|
||||||
>
|
|
||||||
{{ $t('settings.filter.hide') }}
|
|
||||||
</Checkbox>
|
|
||||||
{{ ' ' }}
|
|
||||||
<Checkbox
|
|
||||||
:id="'filterEnabled' + filter[0]"
|
|
||||||
:model-value="filter[1].enabled"
|
|
||||||
:name="'filterEnabled' + filter[0]"
|
|
||||||
@update:model-value="updateFilter(filter[0], 'enabled', $event)"
|
|
||||||
>
|
|
||||||
{{ $t('settings.enabled') }}
|
|
||||||
</Checkbox>
|
|
||||||
</div>
|
|
||||||
<div class="filter-type filter-field">
|
|
||||||
<label :for="'filterType' + filter[0]">
|
|
||||||
<HelpIndicator>
|
|
||||||
<p>
|
|
||||||
{{ $t('settings.filter.help.word') }}
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
{{ $t('settings.filter.help.user') }}
|
|
||||||
</p>
|
|
||||||
<i18n-t
|
|
||||||
keypath="settings.filter.help.regexp"
|
|
||||||
tag="p"
|
|
||||||
>
|
|
||||||
<template #link>
|
|
||||||
<a
|
|
||||||
:href="$t('settings.filter.help.regexp_url')"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
{{ $t('settings.filter.help.regexp_link') }}
|
|
||||||
</a>
|
|
||||||
</template>
|
|
||||||
</i18n-t>
|
|
||||||
</HelpIndicator>
|
|
||||||
{{ $t('settings.filter.type') }}
|
|
||||||
</label>
|
|
||||||
<Select
|
|
||||||
:id="'filterType' + filter[0]"
|
|
||||||
class="filter-field-value"
|
|
||||||
:model-value="filter[1].type"
|
|
||||||
@update:model-value="updateFilter(filter[0], 'type', $event)"
|
|
||||||
>
|
|
||||||
<option value="word">
|
|
||||||
{{ $t('settings.filter.plain') }}
|
|
||||||
</option>
|
|
||||||
<option value="regexp">
|
|
||||||
{{ $t('settings.filter.regexp') }}
|
|
||||||
</option>
|
|
||||||
<option value="user">
|
|
||||||
{{ $t('settings.filter.user') }}
|
|
||||||
</option>
|
|
||||||
<option value="user_regexp">
|
|
||||||
{{ $t('settings.filter.user_regexp') }}
|
|
||||||
</option>
|
|
||||||
</Select>
|
|
||||||
</div>
|
|
||||||
<div class="filter-value filter-field">
|
|
||||||
<label
|
|
||||||
:for="'filterValue' + filter[0]"
|
|
||||||
>
|
|
||||||
{{ $t('settings.filter.value') }}
|
|
||||||
</label>
|
|
||||||
{{ ' ' }}
|
|
||||||
<input
|
|
||||||
:id="'filterValue' + filter[0]"
|
|
||||||
class="input filter-field-value"
|
|
||||||
:value="filter[1].value"
|
|
||||||
@input="updateFilter(filter[0], 'value', $event.target.value)"
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
<div class="filter-expires filter-field">
|
|
||||||
<label
|
|
||||||
:for="'filterExpires' + filter[0]"
|
|
||||||
>
|
|
||||||
{{ $t('settings.filter.expires') }}
|
|
||||||
</label>
|
|
||||||
{{ ' ' }}
|
|
||||||
<div class="filter-field-value">
|
|
||||||
<input
|
|
||||||
:id="'filterExpires' + filter[0]"
|
|
||||||
class="input"
|
|
||||||
:class="{ disabled: filter[1].expires === null }"
|
|
||||||
type="datetime-local"
|
|
||||||
:disabled="filter[1].expires === null"
|
|
||||||
:value="filter[1].expires ? getDatetimeLocal(filter[1].expires) : null"
|
|
||||||
@input="updateFilter(filter[0], 'expires', $event.target.value)"
|
|
||||||
>
|
|
||||||
{{ ' ' }}
|
|
||||||
<Checkbox
|
|
||||||
:id="'filterExpiresNever' + filter[0]"
|
|
||||||
:model-value="filter[1].expires === null"
|
|
||||||
:name="'filterExpiresNever' + filter[0]"
|
|
||||||
class="input-inset input-boolean"
|
|
||||||
@update:model-value="updateFilter(filter[0], 'expires-never', $event)"
|
|
||||||
>
|
|
||||||
{{ $t('settings.filter.never_expires') }}
|
|
||||||
</Checkbox>
|
|
||||||
<span
|
|
||||||
v-if="filter[1].expires !== null && Date.now() > filter[1].expires"
|
|
||||||
class="alert neutral"
|
|
||||||
>
|
|
||||||
{{ $t('settings.filter.expired') }}
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
v-if="!checkRegexValid(filter[0])"
|
|
||||||
class="alert error"
|
|
||||||
>
|
|
||||||
{{ $t('settings.filter.regexp_error') }}
|
|
||||||
</div>
|
|
||||||
<div class="filter-buttons">
|
|
||||||
<button
|
|
||||||
class="delete-button button-default -danger"
|
|
||||||
type="button"
|
|
||||||
@click="deleteFilter(filter[0])"
|
|
||||||
>
|
|
||||||
{{ $t('settings.filter.delete') }}
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="export-button button-default"
|
|
||||||
type="button"
|
|
||||||
@click="exportFilter(filter[0])"
|
|
||||||
>
|
|
||||||
{{ $t('settings.filter.export') }}
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="copy-button button-default"
|
|
||||||
type="button"
|
|
||||||
@click="copyFilter(filter[0])"
|
|
||||||
>
|
|
||||||
{{ $t('settings.filter.copy') }}
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="save-button button-default"
|
|
||||||
:class="{ disabled: !muteFiltersDraftDirty[filter[0]] }"
|
|
||||||
:disabled="!muteFiltersDraftDirty[filter[0]]"
|
|
||||||
type="button"
|
|
||||||
@click="saveFilter(filter[0])"
|
|
||||||
>
|
|
||||||
{{ $t('settings.filter.save') }}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="mute-filter new-filter">
|
|
||||||
<span class="total">
|
<span class="total">
|
||||||
{{ $t('settings.filter.count', { count: muteFiltersDraft.length }) }}
|
{{ $t('settings.filter.total_count', { count: muteFiltersDraft.length }) }}
|
||||||
</span>
|
</span>
|
||||||
<button
|
<button
|
||||||
class="add-button button-default"
|
class="add-button button-default"
|
||||||
|
|
@ -310,8 +147,196 @@
|
||||||
>
|
>
|
||||||
{{ $t('settings.filter.import') }}
|
{{ $t('settings.filter.import') }}
|
||||||
</button>
|
</button>
|
||||||
|
</p>
|
||||||
|
<div class="muteFilterContainer">
|
||||||
|
<div
|
||||||
|
v-for="filter in muteFiltersDraft"
|
||||||
|
:key="filter[0]"
|
||||||
|
class="mute-filter"
|
||||||
|
:style="{ order: filter[1].order }"
|
||||||
|
>
|
||||||
|
<div class="filter-name">
|
||||||
|
<label
|
||||||
|
:for="'filterName' + filter[0]"
|
||||||
|
>
|
||||||
|
{{ $t('settings.filter.name') }}
|
||||||
|
</label>
|
||||||
|
{{ ' ' }}
|
||||||
|
<input
|
||||||
|
:id="'filterName' + filter[0]"
|
||||||
|
class="input"
|
||||||
|
:value="filter[1].name"
|
||||||
|
@input="updateFilter(filter[0], 'name', $event.target.value)"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
v-if="filter[1].expires !== null && Date.now() > filter[1].expires"
|
||||||
|
class="alert neutral"
|
||||||
|
>
|
||||||
|
{{ $t('settings.filter.expired') }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="filter-enabled">
|
||||||
|
<Checkbox
|
||||||
|
:id="'filterHide' + filter[0]"
|
||||||
|
:model-value="filter[1].hide"
|
||||||
|
:name="'filterHide' + filter[0]"
|
||||||
|
@update:model-value="updateFilter(filter[0], 'hide', $event)"
|
||||||
|
>
|
||||||
|
{{ $t('settings.filter.hide') }}
|
||||||
|
</Checkbox>
|
||||||
|
{{ ' ' }}
|
||||||
|
<Checkbox
|
||||||
|
:id="'filterEnabled' + filter[0]"
|
||||||
|
:model-value="filter[1].enabled"
|
||||||
|
:name="'filterEnabled' + filter[0]"
|
||||||
|
@update:model-value="updateFilter(filter[0], 'enabled', $event)"
|
||||||
|
>
|
||||||
|
{{ $t('settings.enabled') }}
|
||||||
|
</Checkbox>
|
||||||
|
</div>
|
||||||
|
<div class="filter-type filter-field">
|
||||||
|
<label :for="'filterType' + filter[0]">
|
||||||
|
<HelpIndicator>
|
||||||
|
<p>
|
||||||
|
{{ $t('settings.filter.help.word') }}
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
{{ $t('settings.filter.help.user') }}
|
||||||
|
</p>
|
||||||
|
<i18n-t
|
||||||
|
keypath="settings.filter.help.regexp"
|
||||||
|
tag="p"
|
||||||
|
>
|
||||||
|
<template #link>
|
||||||
|
<a
|
||||||
|
:href="$t('settings.filter.help.regexp_url')"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
{{ $t('settings.filter.help.regexp_link') }}
|
||||||
|
</a>
|
||||||
|
</template>
|
||||||
|
</i18n-t>
|
||||||
|
</HelpIndicator>
|
||||||
|
{{ $t('settings.filter.type') }}
|
||||||
|
</label>
|
||||||
|
<Select
|
||||||
|
:id="'filterType' + filter[0]"
|
||||||
|
class="filter-field-value"
|
||||||
|
:model-value="filter[1].type"
|
||||||
|
@update:model-value="updateFilter(filter[0], 'type', $event)"
|
||||||
|
>
|
||||||
|
<option value="word">
|
||||||
|
{{ $t('settings.filter.plain') }}
|
||||||
|
</option>
|
||||||
|
<option value="regexp">
|
||||||
|
{{ $t('settings.filter.regexp') }}
|
||||||
|
</option>
|
||||||
|
<option value="user">
|
||||||
|
{{ $t('settings.filter.user') }}
|
||||||
|
</option>
|
||||||
|
<option value="user_regexp">
|
||||||
|
{{ $t('settings.filter.user_regexp') }}
|
||||||
|
</option>
|
||||||
|
</Select>
|
||||||
|
</div>
|
||||||
|
<div class="filter-value filter-field">
|
||||||
|
<label
|
||||||
|
:for="'filterValue' + filter[0]"
|
||||||
|
>
|
||||||
|
{{ $t('settings.filter.value') }}
|
||||||
|
</label>
|
||||||
|
{{ ' ' }}
|
||||||
|
<input
|
||||||
|
:id="'filterValue' + filter[0]"
|
||||||
|
class="input filter-field-value"
|
||||||
|
:value="filter[1].value"
|
||||||
|
@input="updateFilter(filter[0], 'value', $event.target.value)"
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<div class="filter-expires filter-field">
|
||||||
|
<label
|
||||||
|
:for="'filterExpires' + filter[0]"
|
||||||
|
>
|
||||||
|
{{ $t('settings.filter.expires') }}
|
||||||
|
</label>
|
||||||
|
{{ ' ' }}
|
||||||
|
<div class="filter-field-value">
|
||||||
|
<input
|
||||||
|
:id="'filterExpires' + filter[0]"
|
||||||
|
class="input"
|
||||||
|
:class="{ disabled: filter[1].expires === null }"
|
||||||
|
type="datetime-local"
|
||||||
|
:disabled="filter[1].expires === null"
|
||||||
|
:value="filter[1].expires ? getDatetimeLocal(filter[1].expires) : null"
|
||||||
|
@input="updateFilter(filter[0], 'expires', $event.target.value)"
|
||||||
|
>
|
||||||
|
{{ ' ' }}
|
||||||
|
<Checkbox
|
||||||
|
:id="'filterExpiresNever' + filter[0]"
|
||||||
|
:model-value="filter[1].expires === null"
|
||||||
|
:name="'filterExpiresNever' + filter[0]"
|
||||||
|
class="input-inset input-boolean never"
|
||||||
|
@update:model-value="updateFilter(filter[0], 'expires-never', $event)"
|
||||||
|
>
|
||||||
|
{{ $t('settings.filter.never_expires') }}
|
||||||
|
</Checkbox>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
v-if="!checkRegexValid(filter[0])"
|
||||||
|
class="alert error"
|
||||||
|
>
|
||||||
|
{{ $t('settings.filter.regexp_error') }}
|
||||||
|
</div>
|
||||||
|
<div class="filter-buttons">
|
||||||
|
<button
|
||||||
|
class="delete-button button-default -danger"
|
||||||
|
type="button"
|
||||||
|
@click="deleteFilter(filter[0])"
|
||||||
|
>
|
||||||
|
{{ $t('settings.filter.delete') }}
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="export-button button-default"
|
||||||
|
type="button"
|
||||||
|
@click="exportFilter(filter[0])"
|
||||||
|
>
|
||||||
|
{{ $t('settings.filter.export') }}
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="copy-button button-default"
|
||||||
|
type="button"
|
||||||
|
@click="copyFilter(filter[0])"
|
||||||
|
>
|
||||||
|
{{ $t('settings.filter.copy') }}
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="save-button button-default"
|
||||||
|
:class="{ disabled: !muteFiltersDraftDirty[filter[0]] }"
|
||||||
|
:disabled="!muteFiltersDraftDirty[filter[0]]"
|
||||||
|
type="button"
|
||||||
|
@click="saveFilter(filter[0])"
|
||||||
|
>
|
||||||
|
{{ $t('settings.filter.save') }}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<p class="muteFiltersActionsBottom">
|
||||||
|
<span class="total">
|
||||||
|
{{ $t('settings.filter.expired_count', { count: muteFiltersExpired.length }) }}
|
||||||
|
</span>
|
||||||
|
<button
|
||||||
|
class="add-button button-default"
|
||||||
|
type="button"
|
||||||
|
:class="{ disabled: muteFiltersExpired.length === 0 }"
|
||||||
|
:disabled="muteFiltersExpired.length === 0"
|
||||||
|
@click="purgeExpiredFilters()"
|
||||||
|
>
|
||||||
|
{{ $t('settings.filter.purge_expired') }}
|
||||||
|
</button>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -432,7 +432,10 @@
|
||||||
"export": "Export",
|
"export": "Export",
|
||||||
"regexp_error": "Invalid Regular Expression",
|
"regexp_error": "Invalid Regular Expression",
|
||||||
"never_expires": "Never",
|
"never_expires": "Never",
|
||||||
"count": "{count} filter|{count} filters",
|
"total_count": "Total {count} custom filter|Total {count} custom filters",
|
||||||
|
"expired_count": "{count} expired filter|{count} expired filters",
|
||||||
|
"custom_filters": "Custom filters",
|
||||||
|
"purge_expired": "Remove expired filters",
|
||||||
"import_failure": "The selected file is not a supported Pleroma filter.",
|
"import_failure": "The selected file is not a supported Pleroma filter.",
|
||||||
"help": {
|
"help": {
|
||||||
"word": "Simple and RegExp filters test against post's content and subject.",
|
"word": "Simple and RegExp filters test against post's content and subject.",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue