🔨 Add next, pause, resume, stop
This commit is contained in:
parent
28001879a9
commit
37fcf27aa2
@ -151,6 +151,7 @@
|
|||||||
variant="outlined"
|
variant="outlined"
|
||||||
:disabled="actionBtnDisable"
|
:disabled="actionBtnDisable"
|
||||||
:color="actionBtnDisable ? '' : 'primary'"
|
:color="actionBtnDisable ? '' : 'primary'"
|
||||||
|
@click="playPause"
|
||||||
></v-btn>
|
></v-btn>
|
||||||
<v-btn
|
<v-btn
|
||||||
icon="mdi-skip-next"
|
icon="mdi-skip-next"
|
||||||
@ -158,6 +159,7 @@
|
|||||||
variant="outlined"
|
variant="outlined"
|
||||||
:disabled="actionBtnDisable"
|
:disabled="actionBtnDisable"
|
||||||
:color="actionBtnDisable ? '' : 'primary'"
|
:color="actionBtnDisable ? '' : 'primary'"
|
||||||
|
@click="skip"
|
||||||
></v-btn>
|
></v-btn>
|
||||||
<v-btn
|
<v-btn
|
||||||
icon="mdi-stop"
|
icon="mdi-stop"
|
||||||
@ -165,6 +167,7 @@
|
|||||||
:disabled="actionBtnDisable"
|
:disabled="actionBtnDisable"
|
||||||
:color="actionBtnDisable ? '' : 'primary'"
|
:color="actionBtnDisable ? '' : 'primary'"
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
|
@click="stop"
|
||||||
></v-btn>
|
></v-btn>
|
||||||
<v-btn
|
<v-btn
|
||||||
v-if="status.connected"
|
v-if="status.connected"
|
||||||
@ -240,7 +243,7 @@
|
|||||||
import type { Chanel } from "@/data/guild/Channel";
|
import type { Chanel } from "@/data/guild/Channel";
|
||||||
import type { Guild } from "@/data/guild/Guild";
|
import type { Guild } from "@/data/guild/Guild";
|
||||||
import type { Status } from "@/data/music/Status";
|
import type { Status } from "@/data/music/Status";
|
||||||
import { connect, getAudioStatus, disconnect } from "@/services/audioService";
|
import * as audioService from "@/services/audioService";
|
||||||
import { getVoiceChannels } from "@/services/guildService";
|
import { getVoiceChannels } from "@/services/guildService";
|
||||||
import { computed } from "@vue/reactivity";
|
import { computed } from "@vue/reactivity";
|
||||||
import { ref, watch } from "vue";
|
import { ref, watch } from "vue";
|
||||||
@ -342,7 +345,7 @@ watch(chanListMenuOpen, (value) => {
|
|||||||
function voiceChannelSelected(value: string[]) {
|
function voiceChannelSelected(value: string[]) {
|
||||||
voiceChannelConnecting.value = true;
|
voiceChannelConnecting.value = true;
|
||||||
if (value[0] != status.value.channel?.id) {
|
if (value[0] != status.value.channel?.id) {
|
||||||
connect(properties.guild.id, value[0]).then((value) => {
|
audioService.connect(properties.guild.id, value[0]).then((value) => {
|
||||||
if (value) {
|
if (value) {
|
||||||
status.value = value.data;
|
status.value = value.data;
|
||||||
voiceChannelConnecting.value = false;
|
voiceChannelConnecting.value = false;
|
||||||
@ -352,7 +355,52 @@ function voiceChannelSelected(value: string[]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function onDisconnect() {
|
function onDisconnect() {
|
||||||
disconnect(properties.guild.id)
|
audioService
|
||||||
|
.disconnect(properties.guild.id)
|
||||||
|
.then((value) => {
|
||||||
|
if (value) {
|
||||||
|
status.value = value.data;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch();
|
||||||
|
}
|
||||||
|
|
||||||
|
function playPause() {
|
||||||
|
if (status.value.playBackInfo?.paused) {
|
||||||
|
audioService
|
||||||
|
.resume(properties.guild.id)
|
||||||
|
.then((value) => {
|
||||||
|
if (value) {
|
||||||
|
status.value = value.data;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch();
|
||||||
|
} else {
|
||||||
|
audioService
|
||||||
|
.pause(properties.guild.id)
|
||||||
|
.then((value) => {
|
||||||
|
if (value) {
|
||||||
|
status.value = value.data;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function skip() {
|
||||||
|
audioService
|
||||||
|
.skip(properties.guild.id)
|
||||||
|
.then((value) => {
|
||||||
|
if (value) {
|
||||||
|
status.value = value.data;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch();
|
||||||
|
}
|
||||||
|
|
||||||
|
function stop() {
|
||||||
|
audioService
|
||||||
|
.stop(properties.guild.id)
|
||||||
.then((value) => {
|
.then((value) => {
|
||||||
if (value) {
|
if (value) {
|
||||||
status.value = value.data;
|
status.value = value.data;
|
||||||
@ -368,7 +416,7 @@ function timeToMMSS(time: number) {
|
|||||||
return `${minutes}:${("0" + seconds).slice(-2)}`;
|
return `${minutes}:${("0" + seconds).slice(-2)}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
getAudioStatus(properties.guild.id).then((value) => {
|
audioService.getAudioStatus(properties.guild.id).then((value) => {
|
||||||
if (value) {
|
if (value) {
|
||||||
status.value = value.data;
|
status.value = value.data;
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
@ -376,7 +424,7 @@ getAudioStatus(properties.guild.id).then((value) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
let interval = setInterval(() => {
|
let interval = setInterval(() => {
|
||||||
getAudioStatus(properties.guild.id).then((value) => {
|
audioService.getAudioStatus(properties.guild.id).then((value) => {
|
||||||
if (value) {
|
if (value) {
|
||||||
status.value = value.data;
|
status.value = value.data;
|
||||||
}
|
}
|
||||||
|
@ -73,4 +73,100 @@ function disconnect(guildId: string) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export { getAudioStatus, connect, disconnect };
|
function resume(guildId: string) {
|
||||||
|
const userStore = useUserStore();
|
||||||
|
return axios
|
||||||
|
.post<Status>(
|
||||||
|
`/audio/${guildId}/resume`,
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
headers: {
|
||||||
|
authorization: `Bearer ${userStore.token}`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.catch((reason) => {
|
||||||
|
console.error(`Fail to resume playback !`);
|
||||||
|
console.log(reason);
|
||||||
|
const eventQueuStore = useEventQueuStore();
|
||||||
|
eventQueuStore.push({
|
||||||
|
uuid: undefined,
|
||||||
|
type: "error",
|
||||||
|
text: "Fail to resume playback !",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function pause(guildId: string) {
|
||||||
|
const userStore = useUserStore();
|
||||||
|
return axios
|
||||||
|
.post<Status>(
|
||||||
|
`/audio/${guildId}/pause`,
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
headers: {
|
||||||
|
authorization: `Bearer ${userStore.token}`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.catch((reason) => {
|
||||||
|
console.error(`Fail to pause playback !`);
|
||||||
|
console.log(reason);
|
||||||
|
const eventQueuStore = useEventQueuStore();
|
||||||
|
eventQueuStore.push({
|
||||||
|
uuid: undefined,
|
||||||
|
type: "error",
|
||||||
|
text: "Fail to pause playback !",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function skip(guildId: string) {
|
||||||
|
const userStore = useUserStore();
|
||||||
|
return axios
|
||||||
|
.post<Status>(
|
||||||
|
`/audio/${guildId}/skip`,
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
headers: {
|
||||||
|
authorization: `Bearer ${userStore.token}`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.catch((reason) => {
|
||||||
|
console.error(`Fail to skip playback !`);
|
||||||
|
console.log(reason);
|
||||||
|
const eventQueuStore = useEventQueuStore();
|
||||||
|
eventQueuStore.push({
|
||||||
|
uuid: undefined,
|
||||||
|
type: "error",
|
||||||
|
text: "Fail to skip playback !",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function stop(guildId: string) {
|
||||||
|
const userStore = useUserStore();
|
||||||
|
return axios
|
||||||
|
.post<Status>(
|
||||||
|
`/audio/${guildId}/stop`,
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
headers: {
|
||||||
|
authorization: `Bearer ${userStore.token}`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.catch((reason) => {
|
||||||
|
console.error(`Fail to stop playback !`);
|
||||||
|
console.log(reason);
|
||||||
|
const eventQueuStore = useEventQueuStore();
|
||||||
|
eventQueuStore.push({
|
||||||
|
uuid: undefined,
|
||||||
|
type: "error",
|
||||||
|
text: "Fail to stop playback !",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export { getAudioStatus, connect, disconnect, resume, pause, skip, stop };
|
||||||
|
Loading…
Reference in New Issue
Block a user