From 27a4620dba64749e9ec75d2563e17ef64782cd39 Mon Sep 17 00:00:00 2001 From: Angelina Filippova <linakirsanova@gmail.com> Date: Thu, 3 Dec 2020 02:24:56 +0300 Subject: [PATCH] Remove LogEntryMessage component, move it to Mod Log index page --- src/views/moderation_log/LogEntryMessage.vue | 60 -------------------- src/views/moderation_log/index.vue | 32 +++++++++-- 2 files changed, 28 insertions(+), 64 deletions(-) delete mode 100644 src/views/moderation_log/LogEntryMessage.vue diff --git a/src/views/moderation_log/LogEntryMessage.vue b/src/views/moderation_log/LogEntryMessage.vue deleted file mode 100644 index b0e3a6e8..00000000 --- a/src/views/moderation_log/LogEntryMessage.vue +++ /dev/null @@ -1,60 +0,0 @@ -<template> - <span> - <component :is="processedHtml"/> - </span> -</template> - -<script> -import ReportLink from './ReportLink' -import UserLink from './UserLink' -import Vue from 'vue' -Vue.component('user-link', UserLink) -Vue.component('report-link', ReportLink) - -export default { - name: 'LogEntryMessage', - props: { - actor: { - type: Object, - required: true - }, - message: { - type: String, - required: true - }, - subject: { - type: [Object, Array], - required: false, - default: function() { - return {} - } - } - }, - computed: { - processedHtml() { - const html = [...this.message.matchAll(/\@(?<nickname>([\w-]+))/g)].map(res => res.groups.nickname) - .reduce((acc, nickname) => { - return acc.replace(`@${nickname}`, `<user-link actor="${nickname}"/>`) - }, this.message) - if (this.subject.type === 'report' && this.subject.id) { - const updatedHtml = [...html.matchAll(/\#(?<reportId>([\w]+))/g)].map(res => res.groups.reportId) - .reduce((acc, id) => { - return acc.replace(`#${id}`, `<report-link id="${id}"/>`) - }, html) - return { - template: '<div>' + updatedHtml + '</div>' - } - } - return { - template: '<div>' + html + '</div>' - } - } - } -} -</script> - -<style rel='stylesheet/scss' lang='scss'> - .router-link { - text-decoration: none; - } -</style> diff --git a/src/views/moderation_log/index.vue b/src/views/moderation_log/index.vue index 283bf4d2..c8c350c4 100644 --- a/src/views/moderation_log/index.vue +++ b/src/views/moderation_log/index.vue @@ -43,8 +43,7 @@ v-for="(logEntry, index) in log" :key="index" :timestamp="normalizeTimestamp(logEntry.time)"> - <log-entry-message v-if="propertyExists(logEntry.data.actor, 'nickname')" :actor="logEntry.data.actor" :message="logEntry.message" :subject="logEntry.data.subject"/> - <span v-else>{{ logEntry.message }}</span> + <component :is="processedMessage(logEntry)"/> </el-timeline-item> </el-timeline> <div class="pagination"> @@ -65,10 +64,14 @@ import moment from 'moment' import _ from 'lodash' import debounce from 'lodash.debounce' import RebootButton from '@/components/RebootButton' -import LogEntryMessage from './LogEntryMessage' +import ReportLink from './ReportLink' +import UserLink from './UserLink' +import Vue from 'vue' +Vue.component('user-link', UserLink) +Vue.component('report-link', ReportLink) export default { - components: { RebootButton, LogEntryMessage }, + components: { RebootButton }, data() { return { dateRange: '', @@ -130,6 +133,24 @@ export default { normalizeTimestamp(timestamp) { return moment(timestamp * 1000).format('YYYY-MM-DD HH:mm') }, + processedMessage(logEntry) { + const html = [...logEntry.message.matchAll(/\@(?<nickname>([\w-]+))/g)].map(res => res.groups.nickname) + .reduce((acc, nickname) => { + return acc.replace(`@${nickname}`, `<user-link actor="${nickname}"/>`) + }, logEntry.message) + if (this.propertyExists(logEntry.data, 'subject') && logEntry.data.subject.type === 'report') { + const updatedHtml = [...html.matchAll(/\#(?<reportId>([\w]+))/g)].map(res => res.groups.reportId) + .reduce((acc, id) => { + return acc.replace(`#${id}`, `<report-link id="${id}"/>`) + }, html) + return { + template: '<div>' + updatedHtml + '</div>' + } + } + return { + template: '<div>' + html + '</div>' + } + }, propertyExists(account, property) { return account[property] } @@ -173,6 +194,9 @@ h1 { margin: 0; width: 145px; } +.router-link { + text-decoration: none; +} .search-container { text-align: right; } -- GitLab