diff --git a/website/client/src/components/challenges/leaveChallengeModal.vue b/website/client/src/components/challenges/leaveChallengeModal.vue index 5d6f878bb3..87386512e1 100644 --- a/website/client/src/components/challenges/leaveChallengeModal.vue +++ b/website/client/src/components/challenges/leaveChallengeModal.vue @@ -50,7 +50,21 @@ export default { challengeId: this.challengeId, keep, }); - await this.$store.dispatch('tasks:fetchUserTasks', { forceLoad: true }); + const userTasksByType = (await this.$store.dispatch('tasks:fetchUserTasks', { forceLoad: true })).data; + let tagInUse = false; + Object.keys(userTasksByType).forEach(taskType => { + userTasksByType[taskType].forEach(task => { + if (task.tags.indexOf(this.challengeId) > -1) { + tagInUse = true; + } + }); + }); + if (!tagInUse) { + await this.$store.dispatch( + 'tags:deleteTag', + { tagId: this.challengeId }, + ); + } this.close(); }, close () { diff --git a/website/client/src/store/actions/tags.js b/website/client/src/store/actions/tags.js index 4ec43c5a3c..ef7937ad1f 100644 --- a/website/client/src/store/actions/tags.js +++ b/website/client/src/store/actions/tags.js @@ -1,13 +1,13 @@ import axios from 'axios'; export async function getTags () { - const url = 'api/v4/tags'; + const url = '/api/v4/tags'; const response = await axios.get(url); return response.data.data; } export async function createTag (store, payload) { - const url = 'api/v4/tags'; + const url = '/api/v4/tags'; const response = await axios.post(url, { name: payload.name, }); @@ -19,13 +19,13 @@ export async function createTag (store, payload) { } export async function getTag (store, payload) { - const url = `api/v4/tags/${payload.tagId}`; + const url = `/api/v4/tags/${payload.tagId}`; const response = await axios.get(url); return response.data.data; } export async function updateTag (store, payload) { - const url = `api/v4/tags/${payload.tagId}`; + const url = `/api/v4/tags/${payload.tagId}`; const response = await axios.put(url, { tagDetails: payload.tagDetails, }); @@ -33,7 +33,7 @@ export async function updateTag (store, payload) { } export async function sortTag (store, payload) { - const url = 'api/v4/reorder-tags'; + const url = '/api/v4/reorder-tags'; const response = await axios.post(url, { tagId: payload.tagId, to: payload.to, @@ -42,7 +42,7 @@ export async function sortTag (store, payload) { } export async function deleteTag (store, payload) { - const url = `api/v4/tags/${payload.tagId}`; + const url = `/api/v4/tags/${payload.tagId}`; const response = await axios.delete(url); return response.data.data; }