See #890: fixed some front-end issues when report target is deleted

This commit is contained in:
Eliot Berriot 2019-08-29 14:25:58 +02:00
parent eb5b63c008
commit ca7178d1d1
No known key found for this signature in database
GPG Key ID: DD6965E2476E5C27
1 changed files with 32 additions and 10 deletions

View File

@ -82,6 +82,15 @@
<translate v-else translate-context="*/*/*">N/A</translate> <translate v-else translate-context="*/*/*">N/A</translate>
</td> </td>
</tr> </tr>
<tr>
<td>
<translate translate-context="Content/*/*/Noun">Moderator notes</translate>
</td>
<td>
<i class="comment icon"></i>
{{ obj.notes.length }}
</td>
</tr>
</tbody> </tbody>
</table> </table>
</div> </div>
@ -102,19 +111,22 @@
<h3> <h3>
<translate translate-context="Content/*/*/Short">Reported object</translate> <translate translate-context="Content/*/*/Short">Reported object</translate>
</h3> </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> <i class="wrench icon"></i>
<translate translate-context="Content/Moderation/Link">Open in moderation interface</translate> <translate translate-context="Content/Moderation/Link">Open in moderation interface</translate>
</router-link> </router-link>
<table class="ui very basic unstackable table"> <table class="ui very basic unstackable table">
<tbody> <tbody>
<tr> <tr v-if="target">
<td> <td>
<translate translate-context="*/*/*">Type</translate> <translate translate-context="*/*/*">Type</translate>
</td> </td>
<td> <td>
<i :class="[configs[obj.target.type].icon, 'icon']"></i> <i :class="[configs[target.type].icon, 'icon']"></i>
<translate translate-context="*/*/*">{{ configs[obj.target.type].label }}</translate> <translate translate-context="*/*/*">{{ configs[target.type].label }}</translate>
</td> </td>
</tr> </tr>
<tr v-if="obj.target_state.is_local"> <tr v-if="obj.target_state.is_local">
@ -210,26 +222,29 @@ export default {
return this.currentState return this.currentState
}, },
detailUrl () { detailUrl () {
if (!this.obj.target) { if (!this.target) {
return '' return ''
} }
let namespace let namespace
let id = this.obj.target.id let id = this.target.id
if (this.obj.target.type === 'track') { if (this.target.type === 'track') {
namespace = 'library.tracks.edit.detail' namespace = 'library.tracks.edit.detail'
} }
if (this.obj.target.type === 'album') { if (this.target.type === 'album') {
namespace = 'library.albums.edit.detail' namespace = 'library.albums.edit.detail'
} }
if (this.obj.target.type === 'artist') { if (this.target.type === 'artist') {
namespace = 'library.artists.edit.detail' namespace = 'library.artists.edit.detail'
} }
return this.$router.resolve({name: namespace, params: {id, editId: this.obj.uuid}}).href return this.$router.resolve({name: namespace, params: {id, editId: this.obj.uuid}}).href
}, },
targetFields () { targetFields () {
if (!this.target) {
return []
}
let payload = this.obj.target_state 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 let self = this
return fields.map((fieldConfig) => { return fields.map((fieldConfig) => {
let dummyRepr = (v) => { return v } let dummyRepr = (v) => { return v }
@ -242,6 +257,13 @@ export default {
} }
return d return d
}) })
},
target () {
if (this.obj.target) {
return this.obj.target
} else {
return this.obj.target_state._target
}
} }
}, },
methods: { methods: {