From 2eb7bab1ddacbd563ca6af3418a889d46a37115e Mon Sep 17 00:00:00 2001 From: Megan Searles <8675568+megansearles@users.noreply.github.com> Date: Thu, 15 Dec 2022 15:17:00 -0600 Subject: [PATCH] WIP remove challenge tag from list if not in use (#14147) * if tag not in use after leaving challenge, delete * fix(tags): correct routing in store actions Co-authored-by: Megan Shepherd Co-authored-by: SabreCat --- .../challenges/leaveChallengeModal.vue | 16 +++++++++++++++- website/client/src/store/actions/tags.js | 12 ++++++------ 2 files changed, 21 insertions(+), 7 deletions(-) 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; }