diff options
| author | HJ <30-hj@users.noreply.git.pleroma.social> | 2021-09-09 21:51:39 +0000 |
|---|---|---|
| committer | HJ <30-hj@users.noreply.git.pleroma.social> | 2021-09-09 21:51:39 +0000 |
| commit | 370f1e55adddd60a22bf56a7782ba61f239eb13c (patch) | |
| tree | 3a4c897ac420b8d6ab92b31e2779f88947016eed /src/components/mention_link/mention_link.js | |
| parent | f35e3d0f3fc1a6bb4ebd77fba1dce0ac27f5b7d7 (diff) | |
| parent | a8a82ad12f2f7b9eb8fe7a57a3a7d503c6bbe2ed (diff) | |
Merge branch 'develop' into 'themeApply'
# Conflicts:
# CHANGELOG.md
Diffstat (limited to 'src/components/mention_link/mention_link.js')
| -rw-r--r-- | src/components/mention_link/mention_link.js | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/src/components/mention_link/mention_link.js b/src/components/mention_link/mention_link.js new file mode 100644 index 00000000..65c62baa --- /dev/null +++ b/src/components/mention_link/mention_link.js @@ -0,0 +1,95 @@ +import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator' +import { mapGetters, mapState } from 'vuex' +import { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js' +import { library } from '@fortawesome/fontawesome-svg-core' +import { + faAt +} from '@fortawesome/free-solid-svg-icons' + +library.add( + faAt +) + +const MentionLink = { + name: 'MentionLink', + props: { + url: { + required: true, + type: String + }, + content: { + required: true, + type: String + }, + userId: { + required: false, + type: String + }, + userScreenName: { + required: false, + type: String + } + }, + methods: { + onClick () { + const link = generateProfileLink( + this.userId || this.user.id, + this.userScreenName || this.user.screen_name + ) + this.$router.push(link) + } + }, + computed: { + user () { + return this.url && this.$store && this.$store.getters.findUserByUrl(this.url) + }, + isYou () { + // FIXME why user !== currentUser??? + return this.user && this.user.id === this.currentUser.id + }, + userName () { + return this.user && this.userNameFullUi.split('@')[0] + }, + userNameFull () { + return this.user && this.user.screen_name + }, + userNameFullUi () { + return this.user && this.user.screen_name_ui + }, + highlight () { + return this.user && this.mergedConfig.highlight[this.user.screen_name] + }, + highlightType () { + return this.highlight && ('-' + this.highlight.type) + }, + highlightClass () { + if (this.highlight) return highlightClass(this.user) + }, + style () { + if (this.highlight) { + const { + backgroundColor, + backgroundPosition, + backgroundImage, + ...rest + } = highlightStyle(this.highlight) + return rest + } + }, + classnames () { + return [ + { + '-you': this.isYou, + '-highlighted': this.highlight + }, + this.highlightType + ] + }, + ...mapGetters(['mergedConfig']), + ...mapState({ + currentUser: state => state.users.currentUser + }) + } +} + +export default MentionLink |
