From 5be4b1d41c8008c91da3bd400e6d8dff0e2954ed Mon Sep 17 00:00:00 2001 From: SebClem Date: Wed, 22 Jun 2022 16:09:12 +0200 Subject: [PATCH] :hammer: Retrive all info for audio preview --- .../guild/home/AudioPreviewComponent.vue | 282 ++++++++++++++++++ .../guild/home/MusicPreviewComponent.vue | 55 ---- src/data/music/Status.ts | 17 ++ src/data/music/TrackInfo.ts | 17 ++ src/services/audioService.ts | 32 ++ src/views/GuildHomeView.vue | 4 +- 6 files changed, 350 insertions(+), 57 deletions(-) create mode 100644 src/components/guild/home/AudioPreviewComponent.vue delete mode 100644 src/components/guild/home/MusicPreviewComponent.vue create mode 100644 src/data/music/Status.ts create mode 100644 src/data/music/TrackInfo.ts create mode 100644 src/services/audioService.ts diff --git a/src/components/guild/home/AudioPreviewComponent.vue b/src/components/guild/home/AudioPreviewComponent.vue new file mode 100644 index 0000000..4100064 --- /dev/null +++ b/src/components/guild/home/AudioPreviewComponent.vue @@ -0,0 +1,282 @@ + + + + + diff --git a/src/components/guild/home/MusicPreviewComponent.vue b/src/components/guild/home/MusicPreviewComponent.vue deleted file mode 100644 index 97e6501..0000000 --- a/src/components/guild/home/MusicPreviewComponent.vue +++ /dev/null @@ -1,55 +0,0 @@ - - - - - diff --git a/src/data/music/Status.ts b/src/data/music/Status.ts new file mode 100644 index 0000000..6fd0273 --- /dev/null +++ b/src/data/music/Status.ts @@ -0,0 +1,17 @@ +import type { Chanel } from "../guild/Channel"; +import type { TrackInfo } from "./TrackInfo"; + +type Status = { + connected: boolean; + canView?: boolean; + canInteract?: boolean; + channel?: Chanel; + playBackInfo?: { + paused: boolean; + stopped: boolean; + progress?: number; + trackInfo?: TrackInfo; + }; +}; + +export type { Status }; diff --git a/src/data/music/TrackInfo.ts b/src/data/music/TrackInfo.ts new file mode 100644 index 0000000..910f242 --- /dev/null +++ b/src/data/music/TrackInfo.ts @@ -0,0 +1,17 @@ +type TrackInfo = { + submitter: { + id: string; + username: string; + avatar: string; + }; + detail: { + title: string; + author: string; + length: number; + identifier: string; + isStream: boolean; + uri: string; + }; +}; + +export type { TrackInfo }; diff --git a/src/services/audioService.ts b/src/services/audioService.ts new file mode 100644 index 0000000..31dab16 --- /dev/null +++ b/src/services/audioService.ts @@ -0,0 +1,32 @@ +import type { Status } from "@/data/music/Status"; +import { useEventQueuStore } from "@/stores/eventQueu"; +import { useUserStore } from "@/stores/user"; +import axios from "axios"; + +function getAudioStatus(guildId: string): Promise { + return new Promise((resolve, reject) => { + const userStore = useUserStore(); + axios + .get(`/audio/${guildId}/status`, { + headers: { + authorization: `Bearer ${userStore.token}`, + }, + }) + .then((value) => { + resolve(value.data); + }) + .catch((reason) => { + console.error(`Fail to retrive audio status !`); + console.log(reason); + const eventQueuStore = useEventQueuStore(); + eventQueuStore.push({ + uuid: undefined, + type: "error", + text: "Fail to retrive audio status !", + }); + reject(reason); + }); + }); +} + +export { getAudioStatus }; diff --git a/src/views/GuildHomeView.vue b/src/views/GuildHomeView.vue index d02ac03..6308396 100644 --- a/src/views/GuildHomeView.vue +++ b/src/views/GuildHomeView.vue @@ -9,7 +9,7 @@ - + @@ -28,7 +28,7 @@ import { useMutualGuildsStore } from "@/stores/mutualGuilds"; import { redirectIfNoGuild } from "@/tools/GuildTools"; import { ref, watch } from "vue"; import { useRoute, useRouter } from "vue-router"; -import MusicPreviewComponent from "../components/guild/home/MusicPreviewComponent.vue"; +import AudioPreviewComponent from "../components/guild/home/AudioPreviewComponent.vue"; import SettingPreviewComponent from "../components/guild/home/SettingPreviewComponent.vue"; import StatsPreviewComponent from "../components/guild/home/StatsPreviewComponent.vue"; import GuildHeaderComponent from "@/components/guild/GuildHeaderComponent.vue";