|
@@ -554,16 +554,23 @@
|
|
class="tab"
|
|
class="tab"
|
|
v-show="tab === 'discogs'"
|
|
v-show="tab === 'discogs'"
|
|
:bulk="bulk"
|
|
:bulk="bulk"
|
|
|
|
+ :modal-uuid="modalUuid"
|
|
/>
|
|
/>
|
|
<reports
|
|
<reports
|
|
v-if="!newSong"
|
|
v-if="!newSong"
|
|
class="tab"
|
|
class="tab"
|
|
v-show="tab === 'reports'"
|
|
v-show="tab === 'reports'"
|
|
|
|
+ :modal-uuid="modalUuid"
|
|
|
|
+ />
|
|
|
|
+ <youtube
|
|
|
|
+ class="tab"
|
|
|
|
+ v-show="tab === 'youtube'"
|
|
|
|
+ :modal-uuid="modalUuid"
|
|
/>
|
|
/>
|
|
- <youtube class="tab" v-show="tab === 'youtube'" />
|
|
|
|
<musare-songs
|
|
<musare-songs
|
|
class="tab"
|
|
class="tab"
|
|
v-show="tab === 'musare-songs'"
|
|
v-show="tab === 'musare-songs'"
|
|
|
|
+ :modal-uuid="modalUuid"
|
|
/>
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -638,6 +645,8 @@
|
|
import { mapState, mapGetters, mapActions } from "vuex";
|
|
import { mapState, mapGetters, mapActions } from "vuex";
|
|
import Toast from "toasters";
|
|
import Toast from "toasters";
|
|
|
|
|
|
|
|
+import { mapModalState, mapModalActions } from "@/vuex_helpers";
|
|
|
|
+
|
|
import aw from "@/aw";
|
|
import aw from "@/aw";
|
|
import ws from "@/ws";
|
|
import ws from "@/ws";
|
|
import validation from "@/validation";
|
|
import validation from "@/validation";
|
|
@@ -664,8 +673,8 @@ export default {
|
|
},
|
|
},
|
|
props: {
|
|
props: {
|
|
// songId: { type: String, default: null },
|
|
// songId: { type: String, default: null },
|
|
|
|
+ modalUuid: { type: String, default: "" },
|
|
discogsAlbum: { type: Object, default: null },
|
|
discogsAlbum: { type: Object, default: null },
|
|
- sector: { type: String, default: "admin" },
|
|
|
|
bulk: { type: Boolean, default: false },
|
|
bulk: { type: Boolean, default: false },
|
|
flagged: { type: Boolean, default: false }
|
|
flagged: { type: Boolean, default: false }
|
|
},
|
|
},
|
|
@@ -750,7 +759,7 @@ export default {
|
|
this.song.thumbnail.startsWith("https://i.ytimg.com/")
|
|
this.song.thumbnail.startsWith("https://i.ytimg.com/")
|
|
);
|
|
);
|
|
},
|
|
},
|
|
- ...mapState("modals/editSong", {
|
|
|
|
|
|
+ ...mapModalState("modals/editSong/MODAL_UUID", {
|
|
tab: state => state.tab,
|
|
tab: state => state.tab,
|
|
video: state => state.video,
|
|
video: state => state.video,
|
|
song: state => state.song,
|
|
song: state => state.song,
|
|
@@ -1003,6 +1012,9 @@ export default {
|
|
shortcutNames.forEach(shortcutName => {
|
|
shortcutNames.forEach(shortcutName => {
|
|
keyboardShortcuts.unregisterShortcut(shortcutName);
|
|
keyboardShortcuts.unregisterShortcut(shortcutName);
|
|
});
|
|
});
|
|
|
|
+
|
|
|
|
+ // Delete the VueX module that was created for this modal, after all other cleanup tasks are performed
|
|
|
|
+ this.$store.unregisterModule(["modals", "editSong", this.modalUuid]);
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
onThumbnailLoad() {
|
|
onThumbnailLoad() {
|
|
@@ -1807,10 +1819,13 @@ export default {
|
|
this.$refs[`${payload}-tab`].scrollIntoView({
|
|
this.$refs[`${payload}-tab`].scrollIntoView({
|
|
block: "nearest"
|
|
block: "nearest"
|
|
});
|
|
});
|
|
- return dispatch("modals/editSong/showTab", payload);
|
|
|
|
|
|
+ return dispatch(
|
|
|
|
+ `modals/editSong/${this.modalUuid}/showTab`,
|
|
|
|
+ payload
|
|
|
|
+ );
|
|
}
|
|
}
|
|
}),
|
|
}),
|
|
- ...mapActions("modals/editSong", [
|
|
|
|
|
|
+ ...mapModalActions("modals/editSong/MODAL_UUID", [
|
|
"stopVideo",
|
|
"stopVideo",
|
|
"hardStopVideo",
|
|
"hardStopVideo",
|
|
"loadVideoById",
|
|
"loadVideoById",
|