diff --git a/src/components/AudioPlayer.vue b/src/components/AudioPlayer.vue new file mode 100644 index 0000000..ed8a160 --- /dev/null +++ b/src/components/AudioPlayer.vue @@ -0,0 +1,61 @@ + + + \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index 688f173..d49c8e5 100644 --- a/src/main.ts +++ b/src/main.ts @@ -22,6 +22,8 @@ app.provide('wsLink', `${wsProtocol}${import.meta.env.SAFETWITCH_BACKEND_DOMAIN} import { OhVueIcon, addIcons } from 'oh-vue-icons' import { IoSearchOutline, + BiHeadphones, + BiCameraVideoFill, IoLink, FaCircleNotch, BiTwitter, @@ -35,6 +37,8 @@ import { addIcons( IoSearchOutline, + BiHeadphones, + BiCameraVideoFill, IoLink, FaCircleNotch, BiTwitter, diff --git a/src/views/UserView.vue b/src/views/UserView.vue index fe7800f..4fcb0fa 100644 --- a/src/views/UserView.vue +++ b/src/views/UserView.vue @@ -8,6 +8,7 @@ import ErrorMessage from '@/components/ErrorMessage.vue' import FollowButton from '@/components/FollowButton.vue' import LoadingScreen from '@/components/LoadingScreen.vue' import VideoTab from '@/components/user/VideoTab.vue' +import AudioPlayer from '@/components/AudioPlayer.vue' import type { StreamerData } from '@/types' import { truncate, abbreviate, getEndpoint } from '@/mixins' @@ -32,11 +33,13 @@ export default { ], fluid: true } + const audioOptions = `${rootBackendUrl}/proxy/stream/${username}/hls.m3u8` return { data, status, - videoOptions + videoOptions, + audioOptions } }, async mounted() { @@ -56,7 +59,8 @@ export default { ErrorMessage, FollowButton, LoadingScreen, - VideoTab + VideoTab, + AudioPlayer }, methods: { truncate, @@ -78,7 +82,8 @@ export default { class="flex bg-ctp-crust flex-col p-6 rounded-lg w-[99vw] md:max-w-prose md:min-w-[65ch] lg:max-w-[70rem] text-white" >
- + +
-

{{ data.username }}

+
+

{{ data.username }}

+ + + + + + + +

{{ truncate(data.stream.title, 130) }}