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) }}