diff --git a/webui/src/components/setting/config-player.vue b/webui/src/components/setting/config-player.vue
index 0a07e5ec..a3cdd552 100644
--- a/webui/src/components/setting/config-player.vue
+++ b/webui/src/components/setting/config-player.vue
@@ -1,5 +1,5 @@
@@ -13,10 +13,10 @@ const { types, type, url } = storeToRefs(usePlayerStore());
>
diff --git a/webui/src/store/player.ts b/webui/src/store/player.ts
index 5f9ecb8e..66d57a9d 100644
--- a/webui/src/store/player.ts
+++ b/webui/src/store/player.ts
@@ -2,14 +2,34 @@ import { useLocalStorage } from '@vueuse/core';
type MediaPlayerType = 'jump' | 'iframe';
+function normalizeUrl(url: string): string {
+ if (!url) return '';
+ const trimmed = url.trim();
+ if (!trimmed) return '';
+ // If URL already has a protocol, return as-is
+ if (/^https?:\/\//i.test(trimmed)) {
+ return trimmed;
+ }
+ // Otherwise, prepend http://
+ return `http://${trimmed}`;
+}
+
export const usePlayerStore = defineStore('player', () => {
const types = ref(['jump', 'iframe']);
const type = useLocalStorage('media-player-type', 'jump');
- const url = useLocalStorage('media-player-url', '');
+ const rawUrl = useLocalStorage('media-player-url', '');
+
+ const url = computed(() => normalizeUrl(rawUrl.value));
+
+ function setUrl(value: string) {
+ rawUrl.value = value;
+ }
return {
types,
type,
url,
+ rawUrl,
+ setUrl,
};
});