diff --git a/src/components/notification/notification.js b/src/components/notification/notification.js index c4e219724..aa3f3561b 100644 --- a/src/components/notification/notification.js +++ b/src/components/notification/notification.js @@ -18,6 +18,7 @@ import { useMergedConfigStore } from 'src/stores/merged_config.js' import { useOAuthStore } from 'src/stores/oauth.js' import { useUserHighlightStore } from 'src/stores/user_highlight.js' import { useUsersStore } from 'src/stores/users.js' +import { useStatusesStore } from 'src/stores/statuses.js' import { approveUser, denyUser } from 'src/api/user.js' import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator' @@ -182,6 +183,11 @@ const Notification = { }, }, computed: { + status() { + if (this.notification.status) { + return useStatusesStore().allStatuses.get(this.notification.status.id) + } + }, userClass() { return highlightClass(this.notification.from_profile) }, diff --git a/src/components/notification/notification.vue b/src/components/notification/notification.vue index c526eef79..8e5c2d25b 100644 --- a/src/components/notification/notification.vue +++ b/src/components/notification/notification.vue @@ -6,7 +6,7 @@ @@ -261,7 +261,7 @@ diff --git a/src/services/notifications_fetcher/notifications_fetcher.service.js b/src/services/notifications_fetcher/notifications_fetcher.service.js index 7c20ea2da..146ae5a2c 100644 --- a/src/services/notifications_fetcher/notifications_fetcher.service.js +++ b/src/services/notifications_fetcher/notifications_fetcher.service.js @@ -22,10 +22,7 @@ const mastoApiNotificationTypes = new Set([ 'pleroma:report', ]) -const fetchAndUpdate = ( - { credentials }, - { older = false, sinceId } -) => { +const fetchAndUpdate = ({ credentials }, { older = false, sinceId }) => { useNotificationsStore().setLoading(true) const args = { credentials } const timelineData = useNotificationsStore() @@ -115,7 +112,6 @@ const fetchNotifications = ({ args, older }) => { }) } - const notificationsFetcher = (credentials) => { const state = { interval: null, diff --git a/src/stores/notifications.js b/src/stores/notifications.js index ed334306d..c03479c68 100644 --- a/src/stores/notifications.js +++ b/src/stores/notifications.js @@ -1,5 +1,15 @@ import { defineStore } from 'pinia' +import { useI18nStore } from 'src/stores/i18n.js' +import { useMergedConfigStore } from 'src/stores/merged_config.js' +import { useOAuthStore } from 'src/stores/oauth.js' +import { useReportsStore } from 'src/stores/reports.js' +import { useStatusesStore } from 'src/stores/statuses.js' +import { useStreamingStore } from 'src/stores/streaming.js' +import { useSyncConfigStore } from 'src/stores/sync_config.js' +import { useUsersStore } from 'src/stores/users.js' + +import { dismissNotification, markNotificationsAsSeen } from 'src/api/user.js' import { closeAllDesktopNotifications, closeDesktopNotification, @@ -11,17 +21,6 @@ import { import { isStatusNotification } from 'src/services/notification_utils/notification_utils_sw.js' import notificationsFetcher from 'src/services/notifications_fetcher/notifications_fetcher.service.js' -import { useI18nStore } from 'src/stores/i18n.js' -import { useMergedConfigStore } from 'src/stores/merged_config.js' -import { useOAuthStore } from 'src/stores/oauth.js' -import { useReportsStore } from 'src/stores/reports.js' -import { useStatusesStore } from 'src/stores/statuses.js' -import { useSyncConfigStore } from 'src/stores/sync_config.js' -import { useStreamingStore } from 'src/stores/streaming.js' -import { useUsersStore } from 'src/stores/users.js' - -import { dismissNotification, markNotificationsAsSeen } from 'src/api/user.js' - export const defaultState = () => ({ desktopNotificationSilence: true, maxId: '', @@ -42,8 +41,7 @@ export const useNotificationsStore = defineStore('notifications', { attachSocket() { const et = new EventTarget() const handleNotificationMessage = ({ data, timestamp }) => { - console.log(data) - this.addNewNotifications({ statuses: [data.notification], timestamp }) + this.addNewNotifications({ data: [data.notification], timestamp }) } const notificationHandler = ({ detail: message }) => { handleNotificationMessage(message) @@ -56,7 +54,7 @@ export const useNotificationsStore = defineStore('notifications', { openHandler, closeHandler, notificationHandler, - } + }, } et.addEventListener('notification', notificationHandler) @@ -72,10 +70,7 @@ export const useNotificationsStore = defineStore('notifications', { // Initially there's set flag to silence all desktop notifications so // that there won't spam of them when user just opened up the FE we // reset that flag after a while to show new notifications once again. - setTimeout( - () => this.desktopNotificationSilence = false, - 10000, - ) + setTimeout(() => (this.desktopNotificationSilence = false), 10000) if (this.fetcher) throw new Error('Fetcher already exists!') this.fetcher = notificationsFetcher(useOAuthStore().token) @@ -87,7 +82,8 @@ export const useNotificationsStore = defineStore('notifications', { } useStreamingStore().removeSubscriber(this.socket) - const { openHandler, closeHandler, notificationHandler } = timeline.socket.handlers + const { openHandler, closeHandler, notificationHandler } = + this.socket.handlers this.socket.et.removeEventListener('notification', openHandler) this.socket.et.removeEventListener('notification', closeHandler) @@ -111,11 +107,19 @@ export const useNotificationsStore = defineStore('notifications', { this.startFetching('Socket disconnected') }, startFetching(reason) { - console.debug('[Notifications] Starting fetching notifications', 'Reason:', reason) + console.debug( + '[Notifications] Starting fetching notifications', + 'Reason:', + reason, + ) this.fetcher.startFetching() }, stopFetching(reason) { - console.debug('[Notifications] Stopped fetching notifications', 'Reason:', reason) + console.debug( + '[Notifications] Stopped fetching notifications', + 'Reason:', + reason, + ) this.fetcher.stopFetching() }, diff --git a/src/stores/statuses.js b/src/stores/statuses.js index d508eeeca..581721a9e 100644 --- a/src/stores/statuses.js +++ b/src/stores/statuses.js @@ -93,8 +93,9 @@ export const useStatusesStore = defineStore('statuses', { const socket = { et, handlers: { - handleUpdate, handleDelete - } + handleUpdate, + handleDelete, + }, } et.addEventListener('update', handleUpdate) @@ -106,7 +107,10 @@ export const useStatusesStore = defineStore('statuses', { }, resetStatuses() { this.socket.et.removeEventListener('update', this.socket.handleUpdate) - this.socket.et.removeEventListener('status.update', this.socket.handleUpdate) + this.socket.et.removeEventListener( + 'status.update', + this.socket.handleUpdate, + ) this.socket.et.removeEventListener('delete', this.socket.handleDelete) const emptyState = defaultState() diff --git a/src/stores/timelines.js b/src/stores/timelines.js index c820e1d7b..e138b7d1d 100644 --- a/src/stores/timelines.js +++ b/src/stores/timelines.js @@ -100,9 +100,12 @@ export const useTimelinesStore = defineStore('timelines', { if (streamName) { const et = new EventTarget() const openHandler = () => this.onStreamConnect(timelineName, argument) - const closeHandler = () => this.onStreamDisconnect(timelineName, argument) - const messageHandler = () => ({ detail: message }) => - this.onStreamMessage(timelineName, argument, message) + const closeHandler = () => + this.onStreamDisconnect(timelineName, argument) + const messageHandler = + () => + ({ detail: message }) => + this.onStreamMessage(timelineName, argument, message) et.addEventListener('open', openHandler) et.addEventListener('close', closeHandler) @@ -118,7 +121,7 @@ export const useTimelinesStore = defineStore('timelines', { openHandler, closeHandler, messageHandler, - } + }, } useStreamingStore().addSubscriber(timeline.socket) @@ -131,12 +134,14 @@ export const useTimelinesStore = defineStore('timelines', { this.stopFetchingTimeline(timelineName, 'Timeline deactivation') } - if (data.socket) { + if (timeline.socket) { useStreamingStore().removeSubscriber(timeline.socket) - const { openHandler, closeHandler, messageHandler } = timeline.socket.handlers - et.removeEventListener('open', openHandler) - et.removeEventListener('close', closeHandler) - et.removeEventListener('message', messageHandler) + + const { openHandler, closeHandler, messageHandler } = + timeline.socket.handlers + timeline.socket.et.removeEventListener('open', openHandler) + timeline.socket.et.removeEventListener('close', closeHandler) + timeline.socket.et.removeEventListener('message', messageHandler) } this[timelineName] = emptyTl(timelineName) @@ -247,12 +252,23 @@ export const useTimelinesStore = defineStore('timelines', { this.startFetchingTimeline(timeline, argument, 'Socket disconnected') }, startFetchingTimeline(timelineName, argument, reason) { - console.debug('[Timelines] Starting fetching timeline', timelineName, argument, 'Reason:', reason) + console.debug( + '[Timelines] Starting fetching timeline', + timelineName, + argument, + 'Reason:', + reason, + ) const timeline = this[timelineName] timeline.fetcher.startFetching() }, stopFetchingTimeline(timelineName, reason) { - console.debug('[Timelines] Stopped fetching timeline', timelineName, 'Reason:', reason) + console.debug( + '[Timelines] Stopped fetching timeline', + timelineName, + 'Reason:', + reason, + ) const timeline = this[timelineName] timeline.fetcher.stopFetching() }, @@ -287,8 +303,6 @@ export const useTimelinesStore = defineStore('timelines', { this.updateTimelineExtremes(timeline, [...timeline.statuses.keys()]) }, - clearTimeline(timeline) { - }, queueFlush(timeline, id) { this[timeline].flushMarker = id },