diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/components/conversation-page/conversation-page.js | 4 | ||||
| -rw-r--r-- | src/components/conversation/conversation.js | 6 | ||||
| -rw-r--r-- | src/components/status/status.js | 3 | ||||
| -rw-r--r-- | src/modules/statuses.js | 25 | ||||
| -rw-r--r-- | src/services/notification_utils/notification_utils.js | 4 |
5 files changed, 23 insertions, 19 deletions
diff --git a/src/components/conversation-page/conversation-page.js b/src/components/conversation-page/conversation-page.js index beffa5bb..bdf84d0c 100644 --- a/src/components/conversation-page/conversation-page.js +++ b/src/components/conversation-page/conversation-page.js @@ -1,5 +1,5 @@ import Conversation from '../conversation/conversation.vue' -import { find, toInteger } from 'lodash' +import { find } from 'lodash' const conversationPage = { components: { @@ -7,7 +7,7 @@ const conversationPage = { }, computed: { statusoid () { - const id = toInteger(this.$route.params.id) + const id = String(this.$route.params.id) const statuses = this.$store.state.statuses.allStatuses const status = find(statuses, {id}) diff --git a/src/components/conversation/conversation.js b/src/components/conversation/conversation.js index 7bad14a5..237de7e5 100644 --- a/src/components/conversation/conversation.js +++ b/src/components/conversation/conversation.js @@ -33,7 +33,7 @@ const conversation = { replies () { let i = 1 return reduce(this.conversation, (result, {id, in_reply_to_status_id}) => { - const irid = Number(in_reply_to_status_id) + const irid = String(in_reply_to_status_id) if (irid) { result[irid] = result[irid] || [] result[irid].push({ @@ -70,7 +70,7 @@ const conversation = { } }, getReplies (id) { - id = Number(id) + id = String(id) return this.replies[id] || [] }, focused (id) { @@ -81,7 +81,7 @@ const conversation = { } }, setHighlight (id) { - this.highlight = Number(id) + this.highlight = String(id) } } } diff --git a/src/components/status/status.js b/src/components/status/status.js index 73d53694..b648ab70 100644 --- a/src/components/status/status.js +++ b/src/components/status/status.js @@ -270,7 +270,7 @@ const Status = { }, replyEnter (id, event) { this.showPreview = true - const targetId = Number(id) + const targetId = id const statuses = this.$store.state.statuses.allStatuses if (!this.preview) { @@ -295,7 +295,6 @@ const Status = { }, watch: { 'highlight': function (id) { - id = Number(id) if (this.status.id === id) { let rect = this.$el.getBoundingClientRect() if (rect.top < 100) { diff --git a/src/modules/statuses.js b/src/modules/statuses.js index 2ece12ba..baeef8bf 100644 --- a/src/modules/statuses.js +++ b/src/modules/statuses.js @@ -1,4 +1,4 @@ -import { remove, slice, sortBy, toInteger, each, find, flatten, maxBy, minBy, merge, last, isArray } from 'lodash' +import { remove, slice, each, find, maxBy, minBy, merge, last, isArray } from 'lodash' import apiService from '../services/api/api.service.js' // import parse from '../services/status_parser/status_parser.js' @@ -62,11 +62,10 @@ const visibleNotificationTypes = (rootState) => { ].filter(_ => _) } -export const findMaxId = (...args) => { - return (maxBy(flatten(args), 'id') || {}).id -} - const mergeOrAdd = (arr, obj, item) => { + // For sequential IDs BE passes numbers as numbers, we want them as strings. + item.id = String(item.id) + const oldItem = obj[item.id] if (oldItem) { @@ -84,9 +83,11 @@ const mergeOrAdd = (arr, obj, item) => { } } +const sortById = (a, b) => a.id > b.id ? -1 : 1 + const sortTimeline = (timeline) => { - timeline.visibleStatuses = sortBy(timeline.visibleStatuses, ({id}) => -id) - timeline.statuses = sortBy(timeline.statuses, ({id}) => -id) + timeline.visibleStatuses = timeline.visibleStatuses.sort(sortById) + timeline.statuses = timeline.statuses.sort(sortById) timeline.minVisibleId = (last(timeline.visibleStatuses) || {}).id return timeline } @@ -162,7 +163,7 @@ const addNewStatuses = (state, { statuses, showImmediately = false, timeline, us } const favoriteStatus = (favorite, counter) => { - const status = find(allStatuses, { id: toInteger(favorite.in_reply_to_status_id) }) + const status = find(allStatuses, { id: String(favorite.in_reply_to_status_id) }) if (status) { // This is our favorite, so the relevant bit. if (favorite.user.id === user.id) { @@ -258,8 +259,12 @@ const addNewNotifications = (state, { dispatch, notifications, older, visibleNot // Only add a new notification if we don't have one for the same action if (!state.notifications.idStore.hasOwnProperty(notification.id)) { - state.notifications.maxId = Math.max(notification.id, state.notifications.maxId) - state.notifications.minId = Math.min(notification.id, state.notifications.minId) + state.notifications.maxId = notification.id > state.notifications.maxId + ? notification.id + : state.notifications.maxId + state.notifications.minId = notification.id < state.notifications.minId + ? notification.id + : state.notifications.minId state.notifications.data.push(notification) state.notifications.idStore[notification.id] = notification diff --git a/src/services/notification_utils/notification_utils.js b/src/services/notification_utils/notification_utils.js index f5ac0d47..c3879677 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(_ => _)) export const visibleNotificationsFromStore = store => { - // Don't know why, but sortBy([seen, -action.id]) doesn't work. - let sortedNotifications = sortBy(notificationsFromStore(store), ({action}) => -action.id) + // map is just to clone the array since sort mutates it and it causes some issues + let sortedNotifications = notificationsFromStore(store).map(_ => _).sort((a, b) => a.action.id > b.action.id ? -1 : 1) sortedNotifications = sortBy(sortedNotifications, 'seen') return sortedNotifications.filter((notification) => visibleTypes(store).includes(notification.type)) } |
