diff --git a/src/components/settings_modal/tabs/filtering_tab.js b/src/components/settings_modal/tabs/filtering_tab.js index 3345cb0c9..3f63b4799 100644 --- a/src/components/settings_modal/tabs/filtering_tab.js +++ b/src/components/settings_modal/tabs/filtering_tab.js @@ -95,22 +95,27 @@ const FilteringTab = { ), muteFiltersDraft () { return Object.entries(this.muteFiltersDraftObject) + }, + muteFiltersExpired () { + const now = Date.now() + return Object + .entries(this.muteFiltersDraftObject) + .filter(([, { expires }]) => expires != null && expires <= now) } }, methods: { ...mapActions(useServerSideStorageStore, ['setPreference', 'unsetPreference', 'pushServerSideStorage']), getDatetimeLocal (timestamp) { const date = new Date(timestamp) + let fmt = new Intl.NumberFormat("en-US", {minimumIntegerDigits: 2}) const datetime = [ date.getFullYear(), '-', - date.getMonth() < 9 ? ('0' + (date.getMonth() + 1)) : (date.getMonth() + 1), - '-', - date.getDate() < 10 ? ('0' + date.getDate()) : date.getDate(), + fmt.format(date.getMonth() + 1), '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('') return datetime }, @@ -164,6 +169,14 @@ const FilteringTab = { this.unsetPreference({ path: 'simple.muteFilters.' + id , value: null }) 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) { const filter = { ...this.muteFiltersDraftObject[id] } if (field === 'expires-never') { diff --git a/src/components/settings_modal/tabs/filtering_tab.scss b/src/components/settings_modal/tabs/filtering_tab.scss index 3f3fa3b58..5b51c5e4d 100644 --- a/src/components/settings_modal/tabs/filtering_tab.scss +++ b/src/components/settings_modal/tabs/filtering_tab.scss @@ -12,11 +12,14 @@ margin: 0.5em; padding: 0.5em; display: grid; - grid-template-columns: fit-content 1fr fit-content; align-items: baseline; grid-gap: 0.5em; } + .never { + margin-left: 0.5em; + } + .filter-name { grid-column: 1 / span 2; grid-row: 1; @@ -63,8 +66,18 @@ justify-content: end; } - .total { - text-align: center; + .muteFiltersActions, + .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; + } } } diff --git a/src/components/settings_modal/tabs/filtering_tab.vue b/src/components/settings_modal/tabs/filtering_tab.vue index 968a7a0e7..6db82d3c4 100644 --- a/src/components/settings_modal/tabs/filtering_tab.vue +++ b/src/components/settings_modal/tabs/filtering_tab.vue @@ -4,8 +4,8 @@ class="filtering-tab" >
+

{{ $t('settings.filter.clutter') }}

+
+
+

{{ $t('settings.filter.mute_filter') }}

diff --git a/src/i18n/en.json b/src/i18n/en.json index f5f451467..01de88223 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -432,7 +432,10 @@ "export": "Export", "regexp_error": "Invalid Regular Expression", "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.", "help": { "word": "Simple and RegExp filters test against post's content and subject.",