diff --git a/front/src/components/manage/moderation/ReportCard.vue b/front/src/components/manage/moderation/ReportCard.vue index bbf475b887564fc83a07739befaa176743731ea2..f2bf1d9230dcfbf31c13e44456b0d42555f572fb 100644 --- a/front/src/components/manage/moderation/ReportCard.vue +++ b/front/src/components/manage/moderation/ReportCard.vue @@ -82,6 +82,15 @@ <translate v-else translate-context="*/*/*">N/A</translate> </td> </tr> + <tr> + <td> + <translate translate-context="Content/*/*/Noun">Moderator notes</translate> + </td> + <td> + <i class="comment icon"></i> + {{ obj.notes.length }} + </td> + </tr> </tbody> </table> </div> @@ -102,19 +111,22 @@ <h3> <translate translate-context="Content/*/*/Short">Reported object</translate> </h3> - <router-link class="ui basic button" v-if="configs[obj.target.type].urls.getAdminDetail" :to="configs[obj.target.type].urls.getAdminDetail(obj.target_state)"> + <div v-if="!obj.target" class="ui warning message"> + <translate translate-context="Content/Moderation/Message">The object associated with this report was deleted.</translate> + </div> + <router-link class="ui basic button" v-if="target && configs[target.type].urls.getAdminDetail" :to="configs[target.type].urls.getAdminDetail(obj.target_state)"> <i class="wrench icon"></i> <translate translate-context="Content/Moderation/Link">Open in moderation interface</translate> </router-link> <table class="ui very basic unstackable table"> <tbody> - <tr> + <tr v-if="target"> <td> <translate translate-context="*/*/*">Type</translate> </td> <td> - <i :class="[configs[obj.target.type].icon, 'icon']"></i> - <translate translate-context="*/*/*">{{ configs[obj.target.type].label }}</translate> + <i :class="[configs[target.type].icon, 'icon']"></i> + <translate translate-context="*/*/*">{{ configs[target.type].label }}</translate> </td> </tr> <tr v-if="obj.target_state.is_local"> @@ -210,26 +222,29 @@ export default { return this.currentState }, detailUrl () { - if (!this.obj.target) { + if (!this.target) { return '' } let namespace - let id = this.obj.target.id - if (this.obj.target.type === 'track') { + let id = this.target.id + if (this.target.type === 'track') { namespace = 'library.tracks.edit.detail' } - if (this.obj.target.type === 'album') { + if (this.target.type === 'album') { namespace = 'library.albums.edit.detail' } - if (this.obj.target.type === 'artist') { + if (this.target.type === 'artist') { namespace = 'library.artists.edit.detail' } return this.$router.resolve({name: namespace, params: {id, editId: this.obj.uuid}}).href }, targetFields () { + if (!this.target) { + return [] + } let payload = this.obj.target_state - let fields = this.configs[this.obj.target.type].moderatedFields + let fields = this.configs[this.target.type].moderatedFields let self = this return fields.map((fieldConfig) => { let dummyRepr = (v) => { return v } @@ -242,6 +257,13 @@ export default { } return d }) + }, + target () { + if (this.obj.target) { + return this.obj.target + } else { + return this.obj.target_state._target + } } }, methods: {