diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/components/status/status.js | 18 | ||||
| -rw-r--r-- | src/components/status/status.vue | 12 | ||||
| -rw-r--r-- | src/components/who_to_follow_panel/who_to_follow_panel.js | 6 | ||||
| -rw-r--r-- | src/services/api/api.service.js | 5 | ||||
| -rw-r--r-- | src/services/entity_normalizer/entity_normalizer.service.js | 8 |
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) |
