aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHenry Jameson <me@hjkos.com>2019-01-17 19:16:45 +0300
committerHenry Jameson <me@hjkos.com>2019-01-17 19:16:45 +0300
commit5251de317dcd67d123109d64a0c39037267e1705 (patch)
tree9b780b8239063558a46430a4735076af963a021e /src
parentd7bd294666cba08b6f6a8d447fbdf4cd59e66b2b (diff)
parent387bf794ffbfb202fc426a578f174e7d6e3681d6 (diff)
Merge branch 'switch-to-string-ids' into favorites
with some changes/merge conflicts resolution * switch-to-string-ids: fixx????? fix notifications? fix lint fix tests, removed one unused function, fix real problem that tests helped to surface added some more explicit to string conversion since BE seem to be sending numbers and it could cause an issue. Remove all explicit and implicit conversions of statusId to number, changed explicit ones so that they convert them to string
Diffstat (limited to 'src')
-rw-r--r--src/components/conversation-page/conversation-page.js4
-rw-r--r--src/components/conversation/conversation.js6
-rw-r--r--src/components/status/status.js3
-rw-r--r--src/modules/statuses.js25
-rw-r--r--src/services/notification_utils/notification_utils.js4
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))
}