aboutsummaryrefslogtreecommitdiff
path: root/src/modules/statuses.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/statuses.js')
-rw-r--r--src/modules/statuses.js32
1 files changed, 29 insertions, 3 deletions
diff --git a/src/modules/statuses.js b/src/modules/statuses.js
index a5a0374e..aab198d8 100644
--- a/src/modules/statuses.js
+++ b/src/modules/statuses.js
@@ -8,6 +8,15 @@ export const defaultState = {
notifications: [],
favorites: new Set(),
timelines: {
+ mentions: {
+ statuses: [],
+ faves: [],
+ visibleStatuses: [],
+ newStatusCount: 0,
+ maxId: 0,
+ minVisibleId: 0,
+ loading: false
+ },
public: {
statuses: [],
faves: [],
@@ -94,6 +103,14 @@ const mergeOrAdd = (arr, item) => {
}
}
+const sortTimeline = (timeline) => {
+ timeline.visibleStatuses = sortBy(timeline.visibleStatuses, ({id}) => -id)
+ timeline.statuses = sortBy(timeline.statuses, ({id}) => -id)
+ timeline.minVisibleId = (last(timeline.statuses) || {}).id
+
+ return timeline
+}
+
const addNewStatuses = (state, { statuses, showImmediately = false, timeline, user = {}, noIdUpdate = false }) => {
// Sanity check
if (!isArray(statuses)) {
@@ -120,7 +137,18 @@ const addNewStatuses = (state, { statuses, showImmediately = false, timeline, us
addNotification({ type: 'repeat', status: status.retweeted_status, action: status })
}
+ // We are mentioned in a post
if (statusType(status) === 'status' && find(status.attentions, { id: user.id })) {
+ const mentions = state.timelines.mentions
+
+ // Add the mention to the mentions timeline
+ if (timelineObject !== mentions) {
+ mergeOrAdd(mentions.statuses, status)
+ mentions.newStatusCount += 1
+
+ sortTimeline(mentions)
+ }
+
addNotification({ type: 'mention', status, action: status })
}
}
@@ -216,9 +244,7 @@ const addNewStatuses = (state, { statuses, showImmediately = false, timeline, us
// Keep the visible statuses sorted
if (timeline) {
- timelineObject.visibleStatuses = sortBy(timelineObject.visibleStatuses, ({id}) => -id)
- timelineObject.statuses = sortBy(timelineObject.statuses, ({id}) => -id)
- timelineObject.minVisibleId = (last(timelineObject.statuses) || {}).id
+ sortTimeline(timelineObject)
}
}