refs #2258 Apply filter to account timeline

This commit is contained in:
AkiraFukushima 2021-05-22 14:53:30 +09:00
parent 968921b8fd
commit 6c8dc8743a
No known key found for this signature in database
GPG Key ID: B6E51BAC4DE1A957
5 changed files with 26 additions and 8 deletions

View File

@ -1,14 +1,17 @@
<template>
<div class="tabs" id="sidebar_tabs">
<el-tabs v-model="activeName" @tab-click="handleClick" stretch>
<el-tab-pane label="Posts" name="posts"><Posts :account="account" :buffer="buffer" /></el-tab-pane>
<el-tab-pane label="Posts and replies" name="posts_and_replies"><PostsAndReplies :account="account" :buffer="buffer" /></el-tab-pane>
<el-tab-pane label="Media" name="media"><Media :account="account" :buffer="buffer" /></el-tab-pane>
<el-tab-pane label="Posts" name="posts"><Posts :account="account" :buffer="buffer" :filters="filters" /></el-tab-pane>
<el-tab-pane label="Posts and replies" name="posts_and_replies"
><PostsAndReplies :account="account" :buffer="buffer" :filters="filters"
/></el-tab-pane>
<el-tab-pane label="Media" name="media"><Media :account="account" :buffer="buffer" :filters="filters" /></el-tab-pane>
</el-tabs>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
import Posts from './Timeline/Posts'
import PostsAndReplies from './Timeline/PostsAndReplies'
import Media from './Timeline/Media'
@ -28,6 +31,9 @@ export default {
buffer: 200
}
},
computed: {
...mapGetters('TimelineSpace/Contents/SideBar/AccountProfile/Timeline', ['filters'])
},
mounted() {
const timeline = document.getElementById('sidebar_tabs')
if (timeline !== undefined && timeline !== null) {

View File

@ -8,6 +8,7 @@
:key="item.id"
:focused="item.uri + item.id === focusedId"
:overlaid="modalOpened"
:filters="filters"
v-on:update="updateToot"
v-on:delete="deleteToot"
@focusNext="focusNext"
@ -30,7 +31,7 @@ import { Event } from '~/src/renderer/components/event'
export default {
name: 'media',
props: ['account', 'buffer'],
props: ['account', 'buffer', 'filters'],
components: { Toot },
data() {
return {

View File

@ -7,6 +7,7 @@
:focused="message.uri + message.id === focusedId"
:pinned="true"
:overlaid="modalOpened"
:filters="filters"
v-on:update="updatePinnedToot"
v-on:delete="deleteToot"
@focusNext="focusNext"
@ -24,6 +25,7 @@
:key="item.id"
:focused="item.uri + item.id === focusedId"
:overlaid="modalOpened"
:filters="filters"
v-on:update="updateToot"
v-on:delete="deleteToot"
@focusNext="focusNext"
@ -46,7 +48,7 @@ import { Event } from '~/src/renderer/components/event'
export default {
name: 'posts',
props: ['account', 'buffer'],
props: ['account', 'buffer', 'filters'],
components: { Toot },
data() {
return {

View File

@ -8,6 +8,7 @@
:key="item.id"
:focused="item.uri + item.id === focusedId"
:overlaid="modalOpened"
:filters="filters"
v-on:update="updateToot"
v-on:delete="deleteToot"
@focusNext="focusNext"
@ -30,7 +31,7 @@ import { Event } from '~/src/renderer/components/event'
export default {
name: 'posts-and-replies',
props: ['account', 'buffer'],
props: ['account', 'buffer', 'filters'],
components: { Toot },
data() {
return {

View File

@ -1,9 +1,10 @@
import { Module } from 'vuex'
import { GetterTree, Module } from 'vuex'
import { RootState } from '@/store'
import Posts, { PostsState } from './Timeline/Posts'
import PostsAndReplies, { PostsAndRepliesState } from './Timeline/PostsAndReplies'
import Media, { MediaState } from './Timeline/Media'
import { FilterContext } from 'megalodon'
export type TimelineState = {}
@ -17,6 +18,12 @@ export type TimelineModuleState = TimelineModule & TimelineState
const state = (): TimelineState => ({})
const getters: GetterTree<TimelineState, RootState> = {
filters: (_state, _getters, rootState) => {
return rootState.TimelineSpace.filters.filter(f => f.context.includes(FilterContext.Account) && !f.irreversible)
}
}
const Timeline: Module<TimelineState, RootState> = {
namespaced: true,
modules: {
@ -24,7 +31,8 @@ const Timeline: Module<TimelineState, RootState> = {
PostsAndReplies,
Media
},
state: state
state: state,
getters: getters
}
export default Timeline