diff options
author | Santo Cariotti <santo@dcariotti.me> | 2022-10-17 08:25:33 +0200 |
---|---|---|
committer | Santo Cariotti <santo@dcariotti.me> | 2022-10-17 08:25:33 +0200 |
commit | 16357c0e48bf1006d1fd81f944aa0ac5ddd1e70d (patch) | |
tree | 7a978c0f58153646c86b455d4773ca640f16ef51 | |
parent | a1b648b2bb9960d5697f8fee8a6ce7f42f896744 (diff) |
admin: Delete an user avatar
-rw-r--r-- | components/VTable.vue | 23 | ||||
-rw-r--r-- | pages/settings.vue | 18 | ||||
-rw-r--r-- | store/users.js | 3 |
3 files changed, 30 insertions, 14 deletions
diff --git a/components/VTable.vue b/components/VTable.vue index 7c17d7b..5fb2ad2 100644 --- a/components/VTable.vue +++ b/components/VTable.vue @@ -22,8 +22,18 @@ svg(v-else xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6 text-red-500") path(stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12") span(v-else-if="name == 'avatar'") - a.inline-block(:href="'/user/'+field.id" target="_blank") - user-avatar(:data="field") + .flex + a.inline-block(:href="'/user/'+field.id" target="_blank") + user-avatar(:data="field") + a.text-red-500.ml-2.cursor-pointer( + title="Delete this avatar" + @click="deleteAvatar(field.id)" + v-if="field.avatar" + ) + svg(xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6") + path(stroke-linecap="round" stroke-linejoin="round" d="M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0") + + span(v-else-if="['author', 'user', 'resolved'].includes(name)") a.inline-block(:href="'/user/'+field[name].id" target="_blank") user-avatar(:data="field[name]" v-if="field[name].username") @@ -68,6 +78,15 @@ export default { handleDelete(id) { this.delete(id); }, + deleteAvatar(id) { + this.$store.dispatch("users/deleteAvatar", id).then((response) => { + if (response.status == 200) { + this.$toast.success("Avatar has been removed"); + } else { + this.$toast.error("Error removing"); + } + }); + }, }, }; </script> diff --git a/pages/settings.vue b/pages/settings.vue index 5a74ced..8b8bad7 100644 --- a/pages/settings.vue +++ b/pages/settings.vue @@ -124,16 +124,14 @@ export default { }); }, deleteAvatar() { - this.$store - .dispatch("users/deleteAvatar", this.me.id) - .then((response) => { - if (response.status == 200) { - this.$toast.success("Avatar has been removed"); - this.avatarChanged = true; - } else { - this.$toast.error("Error removing"); - } - }); + this.$store.dispatch("users/deleteAvatar").then((response) => { + if (response.status == 200) { + this.$toast.success("Avatar has been removed"); + this.avatarChanged = true; + } else { + this.$toast.error("Error removing"); + } + }); }, save(event) { const f = this.form; diff --git a/store/users.js b/store/users.js index 44f041c..5df1726 100644 --- a/store/users.js +++ b/store/users.js @@ -124,13 +124,12 @@ export const actions = { return res; }, // Delete the avatar - // FIX: use the right endpoint with `id`, not `me` async deleteAvatar({ commit, rootGetters }, id) { commit("loadingStatus", true, { root: true }); let res = { status: 0, data: null }; let api = this.$config.api; - await fetch(`${api}/v1/users/me/avatar`, { + await fetch(`${api}/v1/users/${id ?? "me"}/avatar`, { method: "DELETE", headers: { Authorization: `Bearer ${rootGetters["auth/accessToken"]}`, |