diff options
| author | dave <starpumadev@gmail.com> | 2019-03-18 14:42:09 -0400 |
|---|---|---|
| committer | dave <starpumadev@gmail.com> | 2019-03-18 14:42:09 -0400 |
| commit | 13e727b5eebb60330bc87c7ccc70109683c5b963 (patch) | |
| tree | dbe517feea60a3d43cf758ed8fb82501ac6b06c3 | |
| parent | 060d3b0713307dc247a2bf4b0d4bc957ffab97f6 (diff) | |
#436: sync notification with timeline
| -rw-r--r-- | src/components/notification/notification.vue | 16 | ||||
| -rw-r--r-- | src/modules/statuses.js | 5 | ||||
| -rw-r--r-- | src/services/entity_normalizer/entity_normalizer.service.js | 10 |
3 files changed, 19 insertions, 12 deletions
diff --git a/src/components/notification/notification.vue b/src/components/notification/notification.vue index fa931fb6..7d88c90b 100644 --- a/src/components/notification/notification.vue +++ b/src/components/notification/notification.vue @@ -6,15 +6,15 @@ > </status> <div class="non-mention" :class="[userClass, { highlighted: userStyle }]" :style="[ userStyle ]"v-else> - <a class='avatar-container' :href="notification.action.user.statusnet_profile_url" @click.stop.prevent.capture="toggleUserExpanded"> - <UserAvatar :compact="true" :betterShadow="betterShadow" :src="notification.action.user.profile_image_url_original"/> + <a class='avatar-container' :href="notification.action.account.statusnet_profile_url" @click.stop.prevent.capture="toggleUserExpanded"> + <UserAvatar :compact="true" :betterShadow="betterShadow" :src="notification.action.account.profile_image_url_original"/> </a> <div class='notification-right'> - <UserCard :user="notification.action.user" :rounded="true" :bordered="true" v-if="userExpanded"/> + <UserCard :user="notification.action.account" :rounded="true" :bordered="true" v-if="userExpanded"/> <span class="notification-details"> <div class="name-and-action"> - <span class="username" v-if="!!notification.action.user.name_html" :title="'@'+notification.action.user.screen_name" v-html="notification.action.user.name_html"></span> - <span class="username" v-else :title="'@'+notification.action.user.screen_name">{{ notification.action.user.name }}</span> + <span class="username" v-if="!!notification.action.account.name_html" :title="'@'+notification.action.account.screen_name" v-html="notification.action.account.name_html"></span> + <span class="username" v-else :title="'@'+notification.action.account.screen_name">{{ notification.action.account.name }}</span> <span v-if="notification.type === 'like'"> <i class="fa icon-star lit"></i> <small>{{$t('notifications.favorited_you')}}</small> @@ -30,18 +30,18 @@ </div> <div class="timeago" v-if="notification.type === 'follow'"> <span class="faint"> - <timeago :since="notification.action.created_at" :auto-update="240"></timeago> + <timeago :since="notification.action.notified_at" :auto-update="240"></timeago> </span> </div> <div class="timeago" v-else> <router-link v-if="notification.status" :to="{ name: 'conversation', params: { id: notification.status.id } }" class="faint-link"> - <timeago :since="notification.action.created_at" :auto-update="240"></timeago> + <timeago :since="notification.action.notified_at" :auto-update="240"></timeago> </router-link> </div> </span> <div class="follow-text" v-if="notification.type === 'follow'"> <router-link :to="userProfileLink(notification.action.user)"> - @{{notification.action.user.screen_name}} + @{{notification.action.account.screen_name}} </router-link> </div> <template v-else> diff --git a/src/modules/statuses.js b/src/modules/statuses.js index e18b0d1f..f14b8703 100644 --- a/src/modules/statuses.js +++ b/src/modules/statuses.js @@ -271,7 +271,12 @@ const addNewStatuses = (state, { statuses, showImmediately = false, timeline, us } const addNewNotifications = (state, { dispatch, notifications, older, visibleNotificationTypes }) => { + 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 + // 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 = notification.id > state.notifications.maxId diff --git a/src/services/entity_normalizer/entity_normalizer.service.js b/src/services/entity_normalizer/entity_normalizer.service.js index 36a9508a..3bd42b94 100644 --- a/src/services/entity_normalizer/entity_normalizer.service.js +++ b/src/services/entity_normalizer/entity_normalizer.service.js @@ -180,8 +180,8 @@ export const parseStatus = (data) => { // Missing!! fix in UI? // output.in_reply_to_screen_name = ??? - // Not exactly the same but works - output.statusnet_conversation_id = data.id + // It breaks the conversation when combined with notification + // output.statusnet_conversation_id = data.id if (output.type === 'retweet') { output.retweeted_status = parseStatus(data.reblog) @@ -218,7 +218,6 @@ export const parseStatus = (data) => { output.in_reply_to_status_id = data.in_reply_to_status_id output.in_reply_to_user_id = data.in_reply_to_user_id output.in_reply_to_screen_name = data.in_reply_to_screen_name - output.statusnet_conversation_id = data.statusnet_conversation_id if (output.type === 'retweet') { @@ -266,6 +265,8 @@ export const parseFollow = (data) => { output.visibility = true output.created_at = new Date(data.created_at) output.user = parseUser(data.account) + output.notified_at = output.created_at + output.account = output.user return output } @@ -286,7 +287,8 @@ export const parseNotification = (data) => { : parseStatus(data.status) if (data.type === 'reblog' || data.type === 'favourite') { output.status.user = parseUser(data.account) - output.status.created_at = new Date(data.created_at) + output.status.account = parseUser(data.account) + output.status.notified_at = new Date(data.created_at) } output.action = output.status // not sure output.from_profile = parseUser(data.account) |
