|
@@ -124,12 +124,14 @@
|
|
|
v-if="isOwnerOrAdmin()"
|
|
|
class="tab"
|
|
|
v-show="tab === 'settings'"
|
|
|
+ :modal-uuid="modalUuid"
|
|
|
/>
|
|
|
<playlist-tab-base
|
|
|
v-if="isOwnerOrAdmin() && station.autofill.enabled"
|
|
|
class="tab"
|
|
|
v-show="tab === 'autofill'"
|
|
|
:type="'autofill'"
|
|
|
+ :modal-uuid="modalUuid"
|
|
|
>
|
|
|
<template #info>
|
|
|
<p>
|
|
@@ -144,12 +146,14 @@
|
|
|
v-show="tab === 'request'"
|
|
|
:sector="'manageStation'"
|
|
|
:disable-auto-request="sector !== 'station'"
|
|
|
+ :modal-uuid="modalUuid"
|
|
|
/>
|
|
|
<playlist-tab-base
|
|
|
v-if="isOwnerOrAdmin()"
|
|
|
class="tab"
|
|
|
v-show="tab === 'blacklist'"
|
|
|
:type="'blacklist'"
|
|
|
+ :modal-uuid="modalUuid"
|
|
|
>
|
|
|
<template #info>
|
|
|
<p>
|
|
@@ -174,7 +178,7 @@
|
|
|
header="Currently Playing.."
|
|
|
class="currently-playing"
|
|
|
/>
|
|
|
- <queue sector="manageStation" />
|
|
|
+ <queue :modal-uuid="modalUuid" sector="manageStation" />
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
@@ -196,6 +200,8 @@ import { mapState, mapGetters, mapActions } from "vuex";
|
|
|
|
|
|
import Toast from "toasters";
|
|
|
|
|
|
+import { mapModalState, mapModalActions } from "@/vuex_helpers";
|
|
|
+
|
|
|
import Queue from "@/components/Queue.vue";
|
|
|
import SongItem from "@/components/SongItem.vue";
|
|
|
|
|
@@ -212,8 +218,7 @@ export default {
|
|
|
Request
|
|
|
},
|
|
|
props: {
|
|
|
- stationId: { type: String, default: "" },
|
|
|
- sector: { type: String, default: "admin" }
|
|
|
+ modalUuid: { type: String, default: "" }
|
|
|
},
|
|
|
computed: {
|
|
|
...mapState({
|
|
@@ -221,7 +226,9 @@ export default {
|
|
|
userId: state => state.user.auth.userId,
|
|
|
role: state => state.user.auth.role
|
|
|
}),
|
|
|
- ...mapState("modals/manageStation", {
|
|
|
+ ...mapModalState("modals/manageStation/MODAL_UUID", {
|
|
|
+ stationId: state => state.stationId,
|
|
|
+ sector: state => state.sector,
|
|
|
tab: state => state.tab,
|
|
|
station: state => state.station,
|
|
|
songsList: state => state.songsList,
|
|
@@ -504,6 +511,13 @@ export default {
|
|
|
|
|
|
if (this.isOwnerOrAdmin()) this.showTab("settings");
|
|
|
this.clearStation();
|
|
|
+
|
|
|
+ // Delete the VueX module that was created for this modal, after all other cleanup tasks are performed
|
|
|
+ this.$store.unregisterModule([
|
|
|
+ "modals",
|
|
|
+ "manageStation",
|
|
|
+ this.modalUuid
|
|
|
+ ]);
|
|
|
},
|
|
|
methods: {
|
|
|
isOwner() {
|
|
@@ -577,7 +591,7 @@ export default {
|
|
|
}
|
|
|
);
|
|
|
},
|
|
|
- ...mapActions("modals/manageStation", [
|
|
|
+ ...mapModalActions("modals/manageStation/MODAL_UUID", [
|
|
|
"editStation",
|
|
|
"setAutofillPlaylists",
|
|
|
"setBlacklist",
|
|
@@ -595,7 +609,10 @@ export default {
|
|
|
this.$refs[`${payload}-tab`].scrollIntoView({
|
|
|
block: "nearest"
|
|
|
}); // Only works if the ref exists, which it doesn't always
|
|
|
- return dispatch("modals/manageStation/showTab", payload);
|
|
|
+ return dispatch(
|
|
|
+ `modals/manageStation/${this.modalUuid}/showTab`,
|
|
|
+ payload
|
|
|
+ );
|
|
|
}
|
|
|
}),
|
|
|
...mapActions("modalVisibility", ["openModal", "closeModal"]),
|