diff --git a/website/client/src/components/challenges/challengeDetail.vue b/website/client/src/components/challenges/challengeDetail.vue index bacd28c6fc..b86a2c28de 100644 --- a/website/client/src/components/challenges/challengeDetail.vue +++ b/website/client/src/components/challenges/challengeDetail.vue @@ -322,6 +322,7 @@ import omit from 'lodash/omit'; import { v4 as uuid } from 'uuid'; import { userStateMixin } from '../../mixins/userState'; +import externalLinks from '../../mixins/externalLinks'; import memberSearchDropdown from '@/components/members/memberSearchDropdown'; import closeChallengeModal from './closeChallengeModal'; import Column from '../tasks/column'; @@ -358,7 +359,7 @@ export default { userLink, groupLink, }, - mixins: [challengeMemberSearchMixin, userStateMixin], + mixins: [challengeMemberSearchMixin, externalLinks, userStateMixin], props: ['challengeId'], data () { return { @@ -414,6 +415,10 @@ export default { mounted () { if (!this.searchId) this.searchId = this.challengeId; if (!this.challenge._id) this.loadChallenge(); + this.handleExternalLinks(); + }, + updated () { + this.handleExternalLinks(); }, async beforeRouteUpdate (to, from, next) { this.searchId = to.params.challengeId; diff --git a/website/client/src/components/challenges/findChallenges.vue b/website/client/src/components/challenges/findChallenges.vue index e8b3d08907..6093b405f8 100644 --- a/website/client/src/components/challenges/findChallenges.vue +++ b/website/client/src/components/challenges/findChallenges.vue @@ -120,6 +120,7 @@ import { mapState } from '@/libs/store'; import Sidebar from './sidebar'; import ChallengeItem from './challengeItem'; import challengeModal from './challengeModal'; +import externalLinks from '@/mixins/externalLinks'; import challengeUtilities from '@/mixins/challengeUtilities'; import positiveIcon from '@/assets/svg/positive.svg'; @@ -131,7 +132,7 @@ export default { challengeModal, MugenScroll, }, - mixins: [challengeUtilities], + mixins: [challengeUtilities, externalLinks], data () { return { loading: true, @@ -177,6 +178,10 @@ export default { section: this.$t('challenges'), }); this.loadChallenges(); + this.handleExternalLinks(); + }, + updated () { + this.handleExternalLinks(); }, methods: { updateSearch (eventData) { diff --git a/website/client/src/components/challenges/groupChallenges.vue b/website/client/src/components/challenges/groupChallenges.vue index fc370700c8..7afa34e7f7 100644 --- a/website/client/src/components/challenges/groupChallenges.vue +++ b/website/client/src/components/challenges/groupChallenges.vue @@ -81,6 +81,8 @@ import challengeModal from './challengeModal'; import { mapState } from '@/libs/store'; import markdownDirective from '@/directives/markdown'; +import externalLinks from '../../mixins/externalLinks'; + import challengeItem from './challengeItem'; import challengeIcon from '@/assets/svg/challenge.svg'; @@ -92,6 +94,7 @@ export default { directives: { markdown: markdownDirective, }, + mixins: [externalLinks], props: ['group'], data () { return { @@ -118,6 +121,10 @@ export default { }, mounted () { this.loadChallenges(); + this.handleExternalLinks(); + }, + updated () { + this.handleExternalLinks(); }, methods: { async loadChallenges () { diff --git a/website/client/src/components/challenges/myChallenges.vue b/website/client/src/components/challenges/myChallenges.vue index 8f31154ca3..c37c3d2416 100644 --- a/website/client/src/components/challenges/myChallenges.vue +++ b/website/client/src/components/challenges/myChallenges.vue @@ -145,6 +145,7 @@ import Sidebar from './sidebar'; import ChallengeItem from './challengeItem'; import challengeModal from './challengeModal'; import challengeUtilities from '@/mixins/challengeUtilities'; +import externalLinks from '@/mixins/externalLinks'; import challengeIcon from '@/assets/svg/challenge.svg'; import positiveIcon from '@/assets/svg/positive.svg'; @@ -156,7 +157,7 @@ export default { challengeModal, MugenScroll, }, - mixins: [challengeUtilities], + mixins: [challengeUtilities, externalLinks], data () { return { icons: Object.freeze({ @@ -203,6 +204,10 @@ export default { section: this.$t('challenges'), }); this.loadChallenges(); + this.handleExternalLinks(); + }, + updated () { + this.handleExternalLinks(); }, methods: { updateSearch (eventData) { diff --git a/website/client/src/components/groups/chat.vue b/website/client/src/components/groups/chat.vue index e2c341b525..69038946b8 100644 --- a/website/client/src/components/groups/chat.vue +++ b/website/client/src/components/groups/chat.vue @@ -87,6 +87,8 @@