From 6532462b95fbea1a19508fcdfa50df02b083b657 Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Thu, 6 Dec 2018 04:05:35 +0300 Subject: Move old routes to /p, use /nickname for user profiles --- src/components/chat_panel/chat_panel.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/components/chat_panel/chat_panel.vue') diff --git a/src/components/chat_panel/chat_panel.vue b/src/components/chat_panel/chat_panel.vue index 30070d3e..e3671818 100644 --- a/src/components/chat_panel/chat_panel.vue +++ b/src/components/chat_panel/chat_panel.vue @@ -13,7 +13,7 @@
- + {{message.author.username}}
-- cgit v1.2.3-70-g09d2 From 24caa2cfcd8da73d82d163ca3cb8b9bdb945dd4b Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Thu, 13 Dec 2018 05:00:01 +0300 Subject: Add generateProfileLink --- src/components/chat_panel/chat_panel.js | 5 +++++ src/components/chat_panel/chat_panel.vue | 2 +- .../user_profile_link_generator.js | 10 ++++++++++ .../user_profile_link_generator.spec.js | 15 +++++++++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 src/services/user_profile_link_generator/user_profile_link_generator.js create mode 100644 test/unit/specs/services/user_profile_link_generator/user_profile_link_generator.spec.js (limited to 'src/components/chat_panel/chat_panel.vue') diff --git a/src/components/chat_panel/chat_panel.js b/src/components/chat_panel/chat_panel.js index d8736d17..959b5c3a 100644 --- a/src/components/chat_panel/chat_panel.js +++ b/src/components/chat_panel/chat_panel.js @@ -1,3 +1,5 @@ +import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator' + const chatPanel = { data () { return { @@ -9,6 +11,9 @@ const chatPanel = { computed: { messages () { return this.$store.state.chat.messages + }, + userProfileLink (user) { + return generateProfileLink(user, user.name) } }, methods: { diff --git a/src/components/chat_panel/chat_panel.vue b/src/components/chat_panel/chat_panel.vue index e3671818..182ea347 100644 --- a/src/components/chat_panel/chat_panel.vue +++ b/src/components/chat_panel/chat_panel.vue @@ -13,7 +13,7 @@
- + {{message.author.username}}
diff --git a/src/services/user_profile_link_generator/user_profile_link_generator.js b/src/services/user_profile_link_generator/user_profile_link_generator.js new file mode 100644 index 00000000..88e0ec38 --- /dev/null +++ b/src/services/user_profile_link_generator/user_profile_link_generator.js @@ -0,0 +1,10 @@ +const generateProfileLink = (user, name = '') => { + const baseLinkParams = { name: 'user-profile' } + const { id } = user + + return { ...baseLinkParams, params: (isExternal(user) ? { id } : { name }) } +} + +const isExternal = ({screen_name}) => (screen_name.indexOf('@') > 0) + +export default generateProfileLink diff --git a/test/unit/specs/services/user_profile_link_generator/user_profile_link_generator.spec.js b/test/unit/specs/services/user_profile_link_generator/user_profile_link_generator.spec.js new file mode 100644 index 00000000..dbb2ba9d --- /dev/null +++ b/test/unit/specs/services/user_profile_link_generator/user_profile_link_generator.spec.js @@ -0,0 +1,15 @@ +import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator' + +describe('generateProfileLink', () => { + it('returns obj for local user', () => { + const user = { screen_name: 'john' } + + expect(generateProfileLink(user, 'jack')).to.eql({ name: 'user-profile', params: { name: 'jack' } }) + }) + + it('returns obj for external user', () => { + const user = { screen_name: 'john@domain', id: 1 } + + expect(generateProfileLink(user)).to.eql({ name: 'user-profile', params: { id: 1 } }) + }) +}) -- cgit v1.2.3-70-g09d2 From e4a34cc4d4dcd882e8a546813215dcac95e4ceab Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Thu, 13 Dec 2018 19:57:11 +0300 Subject: Use 'userProfileLink' to generate user-profile link --- src/components/chat_panel/chat_panel.js | 2 +- src/components/chat_panel/chat_panel.vue | 9 ++++----- src/components/notification/notification.js | 4 ++++ src/components/notification/notification.vue | 4 +++- src/components/status/status.js | 4 ++++ src/components/status/status.vue | 12 +++++++++--- src/components/user_card/user_card.js | 6 ++++++ src/components/user_card/user_card.vue | 3 ++- src/components/user_card_content/user_card_content.js | 4 ++++ src/components/user_card_content/user_card_content.vue | 4 ++-- src/components/who_to_follow_panel/who_to_follow_panel.js | 4 ++++ src/components/who_to_follow_panel/who_to_follow_panel.vue | 6 +++--- .../user_profile_link_generator.js | 12 ++++++------ .../user_profile_link_generator.spec.js | 12 ++++++------ 14 files changed, 58 insertions(+), 28 deletions(-) (limited to 'src/components/chat_panel/chat_panel.vue') diff --git a/src/components/chat_panel/chat_panel.js b/src/components/chat_panel/chat_panel.js index 959b5c3a..e649e907 100644 --- a/src/components/chat_panel/chat_panel.js +++ b/src/components/chat_panel/chat_panel.js @@ -13,7 +13,7 @@ const chatPanel = { return this.$store.state.chat.messages }, userProfileLink (user) { - return generateProfileLink(user, user.name) + return generateProfileLink(user.id, user.screen_name) } }, methods: { diff --git a/src/components/chat_panel/chat_panel.vue b/src/components/chat_panel/chat_panel.vue index 182ea347..b253342e 100644 --- a/src/components/chat_panel/chat_panel.vue +++ b/src/components/chat_panel/chat_panel.vue @@ -13,8 +13,10 @@
- - {{message.author.username}} + + {{message.author.username}}
@@ -67,9 +69,6 @@ overflow-x: hidden; } -.chat-name { -} - .chat-message { display: flex; padding: 0.2em 0.5em diff --git a/src/components/notification/notification.js b/src/components/notification/notification.js index c786f2cc..95d094f4 100644 --- a/src/components/notification/notification.js +++ b/src/components/notification/notification.js @@ -2,6 +2,7 @@ import Status from '../status/status.vue' import StillImage from '../still-image/still-image.vue' import UserCardContent from '../user_card_content/user_card_content.vue' import { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js' +import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator' const Notification = { data () { @@ -28,6 +29,9 @@ const Notification = { const highlight = this.$store.state.config.highlight const user = this.notification.action.user return highlightStyle(highlight[user.screen_name]) + }, + userProfileLink (user) { + return generateProfileLink(user.id, user.screen_name) } } } diff --git a/src/components/notification/notification.vue b/src/components/notification/notification.vue index 40146513..a34301b7 100644 --- a/src/components/notification/notification.vue +++ b/src/components/notification/notification.vue @@ -28,7 +28,9 @@