aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/components/status/status.js18
-rw-r--r--src/components/status/status.vue12
-rw-r--r--src/components/who_to_follow_panel/who_to_follow_panel.js6
-rw-r--r--src/services/api/api.service.js5
-rw-r--r--src/services/entity_normalizer/entity_normalizer.service.js8
5 files changed, 37 insertions, 12 deletions
diff --git a/src/components/status/status.js b/src/components/status/status.js
index 105a736b..b14a74ec 100644
--- a/src/components/status/status.js
+++ b/src/components/status/status.js
@@ -73,6 +73,14 @@ const Status = {
return (this.$store.state.config.hideAttachments && !this.inConversation) ||
(this.$store.state.config.hideAttachmentsInConv && this.inConversation)
},
+ userProfileLink () {
+ return this.generateUserProfileLink(this.status.user.id, this.status.user.screen_name)
+ },
+ replyProfileLink () {
+ if (this.isReply) {
+ return this.generateUserProfileLink(this.status.in_reply_to_status_id, this.replyToName)
+ }
+ },
retweet () { return !!this.statusoid.retweeted_status },
retweeter () { return this.statusoid.user.name },
retweeterHtml () { return this.statusoid.user.name_html },
@@ -119,6 +127,14 @@ const Status = {
isReply () {
return !!this.status.in_reply_to_status_id
},
+ replyToName () {
+ const user = this.$store.state.users.usersObject[this.status.in_reply_to_user_id]
+ if (user) {
+ return user.screen_name
+ } else {
+ return this.status.in_reply_to_screen_name
+ }
+ },
hideReply () {
if (this.$store.state.config.replyVisibility === 'all') {
return false
@@ -277,7 +293,7 @@ const Status = {
replyLeave () {
this.showPreview = false
},
- userProfileLink (id, name) {
+ generateUserProfileLink (id, name) {
return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)
}
},
diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index 4a1aef8f..5c956467 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -3,7 +3,7 @@
<template v-if="muted && !noReplyLinks">
<div class="media status container muted">
<small>
- <router-link :to="userProfileLink(status.user.id, status.user.screen_name)">
+ <router-link :to="userProfileLink">
{{status.user.screen_name}}
</router-link>
</small>
@@ -38,16 +38,16 @@
<h4 class="user-name" v-if="status.user.name_html" v-html="status.user.name_html"></h4>
<h4 class="user-name" v-else>{{status.user.name}}</h4>
<span class="links">
- <router-link :to="userProfileLink(status.user.id, status.user.screen_name)">
+ <router-link :to="userProfileLink">
{{status.user.screen_name}}
</router-link>
- <span v-if="status.in_reply_to_screen_name" class="faint reply-info">
+ <span v-if="isReply" class="faint reply-info">
<i class="icon-right-open"></i>
- <router-link :to="userProfileLink(status.in_reply_to_user_id, status.in_reply_to_screen_name)">
- {{status.in_reply_to_screen_name}}
+ <router-link :to="replyProfileLink">
+ {{replyToName}}
</router-link>
</span>
- <a v-if="isReply && !noReplyLinks" href="#" @click.prevent="gotoOriginal(status.in_reply_to_status_id)" :title="$t('tool_tip.reply')">
+ <a v-if="isReply && !noReplyLinks" href="#" @click.prevent="gotoOriginal(status.in_reply_to_status_id)" :aria-label="$t('tool_tip.reply')">
<i class="button-icon icon-reply" @mouseenter="replyEnter(status.in_reply_to_status_id, $event)" @mouseout="replyLeave()"></i>
</a>
</span>
diff --git a/src/components/who_to_follow_panel/who_to_follow_panel.js b/src/components/who_to_follow_panel/who_to_follow_panel.js
index 5e204001..a56a27ea 100644
--- a/src/components/who_to_follow_panel/who_to_follow_panel.js
+++ b/src/components/who_to_follow_panel/who_to_follow_panel.js
@@ -1,12 +1,12 @@
import apiService from '../../services/api/api.service.js'
import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'
-import _ from 'lodash'
+import { shuffle } from 'lodash'
function showWhoToFollow (panel, reply) {
- _.shuffle(reply)
+ const shuffled = shuffle(reply)
panel.usersToFollow.forEach((toFollow, index) => {
- let user = reply[index]
+ let user = shuffled[index]
let img = user.avatar || '/images/avi.png'
let name = user.acct
diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js
index 2b1ef5df..776d8dae 100644
--- a/src/services/api/api.service.js
+++ b/src/services/api/api.service.js
@@ -129,13 +129,14 @@ const updateBanner = ({credentials, params}) => {
// location
// description
const updateProfile = ({credentials, params}) => {
+ // Always include these fields, because they might be empty or false
+ const fields = ['description', 'locked', 'no_rich_text', 'hide_network']
let url = PROFILE_UPDATE_URL
const form = new FormData()
each(params, (value, key) => {
- /* Always include description, no_rich_text and locked, because it might be empty or false */
- if (key === 'description' || key === 'locked' || key === 'no_rich_text' || value) {
+ if (fields.includes(key) || value) {
form.append(key, value)
}
})
diff --git a/src/services/entity_normalizer/entity_normalizer.service.js b/src/services/entity_normalizer/entity_normalizer.service.js
index 6fc6d152..abbc8ddf 100644
--- a/src/services/entity_normalizer/entity_normalizer.service.js
+++ b/src/services/entity_normalizer/entity_normalizer.service.js
@@ -211,6 +211,14 @@ export const parseStatus = (data) => {
output.visibility = data.visibility
output.created_at = new Date(data.created_at)
+ // Converting to string, the right way.
+ output.in_reply_to_status_id = output.in_reply_to_status_id
+ ? String(output.in_reply_to_status_id)
+ : null
+ output.in_reply_to_user_id = output.in_reply_to_user_id
+ ? String(output.in_reply_to_user_id)
+ : null
+
output.user = parseUser(masto ? data.account : data.user)
output.attentions = ((masto ? data.mentions : data.attentions) || []).map(parseUser)