From cd9a7dd48802fff8942ae607a23677cfb43a7b14 Mon Sep 17 00:00:00 2001 From: dave Date: Tue, 12 Mar 2019 17:16:57 -0400 Subject: #436: integrate mastoAPI notifications --- src/modules/statuses.js | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'src/modules/statuses.js') diff --git a/src/modules/statuses.js b/src/modules/statuses.js index 6b512fa3..fde783a5 100644 --- a/src/modules/statuses.js +++ b/src/modules/statuses.js @@ -1,4 +1,4 @@ -import { remove, slice, each, find, maxBy, minBy, merge, first, last, isArray } from 'lodash' +import { remove, slice, each, find, findIndex, maxBy, minBy, merge, first, last, isArray } from 'lodash' import apiService from '../services/api/api.service.js' // import parse from '../services/status_parser/status_parser.js' @@ -390,6 +390,27 @@ export const mutations = { notification.seen = true }) }, + clearNotifications (state) { + state.notifications.data = [] + state.notifications.idStore = {} + state.notifications.maxId = 0 + state.notifications.minId = 0 + }, + dismissNotifications (state, { id }) { + const { data } = state.notifications + const idx = findIndex(data, { id }) + + if (idx !== -1) { + const notification = data[idx] + data.splice(idx, 1) + delete state.notifications.idStore[id] + if (state.notifications.maxId === notification.id) { + state.notifications.maxId = data.length ? maxBy(data, 'id').id : 0 + } else if (state.notifications.minId === notification.id) { + state.notifications.minId = data.length ? minBy(data, 'id').id : 0 + } + } + }, queueFlush (state, { timeline, id }) { state.timelines[timeline].flushMarker = id } @@ -474,6 +495,19 @@ const statuses = { id: rootState.statuses.notifications.maxId, credentials: rootState.users.currentUser.credentials }) + }, + clearNotifications ({ rootState, commit }) { + commit('clearNotifications') + apiService.clearNotifications({ + credentials: rootState.users.currentUser.credentials + }) + }, + dismissNotifications ({ rootState, commit }, { id }) { + commit('dismissNotifications', { id }) + apiService.dismissNotifications({ + id, + credentials: rootState.users.currentUser.credentials + }) } }, mutations -- cgit v1.2.3-70-g09d2 From e5e1d4c643d6b69217fb9a62b60f3f9c94ef4714 Mon Sep 17 00:00:00 2001 From: dave Date: Thu, 14 Mar 2019 07:55:39 -0400 Subject: #436: fix notification order, follow type link issue, duplicate key --- src/components/notification/notification.vue | 7 ++++++- src/components/notifications/notifications.vue | 2 +- src/modules/statuses.js | 8 ++++---- src/services/entity_normalizer/entity_normalizer.service.js | 2 +- src/services/notification_utils/notification_utils.js | 6 +++--- 5 files changed, 15 insertions(+), 10 deletions(-) (limited to 'src/modules/statuses.js') diff --git a/src/components/notification/notification.vue b/src/components/notification/notification.vue index 87b0fde2..6e8e9844 100644 --- a/src/components/notification/notification.vue +++ b/src/components/notification/notification.vue @@ -30,7 +30,12 @@ {{$t('notifications.followed_you')}} -
+
+ + + +
+
diff --git a/src/components/notifications/notifications.vue b/src/components/notifications/notifications.vue index 6438361d..5a5f8ed8 100644 --- a/src/components/notifications/notifications.vue +++ b/src/components/notifications/notifications.vue @@ -13,7 +13,7 @@
-
+
diff --git a/src/modules/statuses.js b/src/modules/statuses.js index fde783a5..4cc3907d 100644 --- a/src/modules/statuses.js +++ b/src/modules/statuses.js @@ -269,11 +269,11 @@ const addNewStatuses = (state, { statuses, showImmediately = false, timeline, us } const addNewNotifications = (state, { dispatch, notifications, older, visibleNotificationTypes }) => { - const allStatuses = state.allStatuses - const allStatusesObject = state.allStatusesObject + // const allStatuses = state.allStatuses + // const allStatusesObject = state.allStatusesObject each(notifications, (notification) => { - notification.action = mergeOrAdd(allStatuses, allStatusesObject, notification.action).item - notification.status = notification.status && mergeOrAdd(allStatuses, allStatusesObject, notification.status).item + // notification.action = mergeOrAdd(allStatuses, allStatusesObject, notification.action).item + // notification.status = notification.status && mergeOrAdd(allStatuses, allStatusesObject, notification.status).item // Only add a new notification if we don't have one for the same action if (!state.notifications.idStore.hasOwnProperty(notification.id)) { diff --git a/src/services/entity_normalizer/entity_normalizer.service.js b/src/services/entity_normalizer/entity_normalizer.service.js index 5444a1e3..4ca7f56b 100644 --- a/src/services/entity_normalizer/entity_normalizer.service.js +++ b/src/services/entity_normalizer/entity_normalizer.service.js @@ -275,7 +275,7 @@ export const parseNotification = (data) => { output.status = output.type === 'follow' ? parseFollow(data) : parseStatus(data.status) - if (data.type === 'reblog') { + if (data.type === 'reblog' || data.type === 'favourite') { output.status.user = parseUser(data.account) output.status.created_at = new Date(data.created_at) } diff --git a/src/services/notification_utils/notification_utils.js b/src/services/notification_utils/notification_utils.js index cd8f3f9e..8afd114e 100644 --- a/src/services/notification_utils/notification_utils.js +++ b/src/services/notification_utils/notification_utils.js @@ -10,8 +10,8 @@ export const visibleTypes = store => ([ ].filter(_ => _)) const sortById = (a, b) => { - const seqA = Number(a.action.id) - const seqB = Number(b.action.id) + const seqA = Number(a.id) + const seqB = Number(b.id) const isSeqA = !Number.isNaN(seqA) const isSeqB = !Number.isNaN(seqB) if (isSeqA && isSeqB) { @@ -21,7 +21,7 @@ const sortById = (a, b) => { } else if (!isSeqA && isSeqB) { return -1 } else { - return a.action.id > b.action.id ? -1 : 1 + return a.id > b.id ? -1 : 1 } } -- cgit v1.2.3-70-g09d2 From 52326e65515317be4815aaef320965313f84d64b Mon Sep 17 00:00:00 2001 From: dave Date: Thu, 14 Mar 2019 11:57:24 -0400 Subject: #436: remove clear & dismiss UI updates --- src/components/notification/notification.js | 3 --- src/components/notification/notification.vue | 5 ---- src/components/notifications/notifications.js | 3 --- src/components/notifications/notifications.vue | 3 +-- src/components/status/status.js | 6 +---- src/components/status/status.vue | 3 --- src/i18n/en.json | 2 -- src/modules/statuses.js | 36 +------------------------- src/services/api/api.service.js | 25 +----------------- 9 files changed, 4 insertions(+), 82 deletions(-) (limited to 'src/modules/statuses.js') diff --git a/src/components/notification/notification.js b/src/components/notification/notification.js index c86f22bb..fe5b7018 100644 --- a/src/components/notification/notification.js +++ b/src/components/notification/notification.js @@ -21,9 +21,6 @@ const Notification = { }, userProfileLink (user) { return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames) - }, - dismiss () { - this.$store.dispatch('dismissNotifications', { id: this.notification.id }) } }, computed: { diff --git a/src/components/notification/notification.vue b/src/components/notification/notification.vue index 6e8e9844..fa931fb6 100644 --- a/src/components/notification/notification.vue +++ b/src/components/notification/notification.vue @@ -3,8 +3,6 @@ v-if="notification.type === 'mention'" :compact="true" :statusoid="notification.status" - isNotification="true" - @dismissNotification="dismiss" >
@@ -40,9 +38,6 @@
- - -
diff --git a/src/components/status/status.js b/src/components/status/status.js index 4cd26be3..9e18fe15 100644 --- a/src/components/status/status.js +++ b/src/components/status/status.js @@ -25,8 +25,7 @@ const Status = { 'replies', 'isPreview', 'noHeading', - 'inlineExpanded', - 'isNotification' + 'inlineExpanded' ], data () { return { @@ -366,9 +365,6 @@ const Status = { setMedia () { const attachments = this.attachmentSize === 'hide' ? this.status.attachments : this.galleryAttachments return () => this.$store.dispatch('setMedia', attachments) - }, - dismissNotification () { - this.$emit('dismissNotification') } }, watch: { diff --git a/src/components/status/status.vue b/src/components/status/status.vue index 28a44346..1f6d0325 100644 --- a/src/components/status/status.vue +++ b/src/components/status/status.vue @@ -52,9 +52,6 @@ - - -