diff --git a/src/modules/api.js b/src/modules/api.js index 6c896c79..1003a3f5 100644 --- a/src/modules/api.js +++ b/src/modules/api.js @@ -3,6 +3,16 @@ import { WSConnectionStatus } from '../services/api/api.service.js' const retryTimeout = (multiplier) => 1000 * multiplier +const isVisible = (store, message, visibility) => { + if (visibility === 'all') { + return true + } else if (visibility === 'following') { + return store.getters.relationship(message.in_reply_to_user_id).following + } else if (visibility === 'self') { + return message.in_reply_to_user_id === store.rootState.users.currentUser.id + } + return false +} const api = { state: { retryMultiplier: 1, @@ -85,20 +95,21 @@ const api = { state.mastoUserSocket.addEventListener( 'message', ({ detail: message }) => { + const replyVisibility = rootState.config.replyVisibility if (!message) return // pings if (message.event === 'notification') { dispatch('addNewNotifications', { notifications: [message.notification], older: false }) - } else if (message.event === 'update') { + } else if (message.event === 'update' && isVisible(store, message.status, replyVisibility)) { dispatch('addNewStatuses', { statuses: [message.status], userId: false, showImmediately: timelineData.visibleStatuses.length === 0, timeline: 'friends' }) - } else if (message.event === 'status.update') { + } else if (message.event === 'status.update' && isVisible(store, message.status, replyVisibility)) { dispatch('addNewStatuses', { statuses: [message.status], userId: false, diff --git a/src/modules/config.js b/src/modules/config.js index e0530101..2934f2c5 100644 --- a/src/modules/config.js +++ b/src/modules/config.js @@ -72,7 +72,7 @@ export const defaultState = { highlight: {}, interfaceLanguage: browserLocale, hideScopeNotice: false, - useStreamingApi: true, + useStreamingApi: false, sidebarRight: undefined, // instance default scopeCopy: undefined, // instance default subjectLineBehavior: undefined, // instance default