-
-
+
+
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index 2d24682..9aaa3c8 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -1,6 +1,6 @@
+
+
+
$queue.at(index)}
+ >
+
+
+
+
+
+
+
+
+
diff --git a/src/stores.ts b/src/stores.ts
index 352cec6..c796f79 100644
--- a/src/stores.ts
+++ b/src/stores.ts
@@ -1,4 +1,4 @@
-import { writable } from 'svelte/store';
+import { get, readable, writable, type Writable } from 'svelte/store';
import type { ResourceId, Track, TrackWithId } from './types';
function writableStorage(key: string, defaultValue: string) {
@@ -7,18 +7,43 @@ function writableStorage(key: string, defaultValue: string) {
return store;
}
-export function makeThumbnailUrl(address: string, token: string, id: ResourceId) {
- return `http://${address}/thumbnail/${id}?token=${token}`;
-}
-
-export function makeAudioUrl(address: string, token: string, id: ResourceId) {
- return `http://${address}/audio/id/${id}?token=${token}`;
-}
-
export const address = writableStorage("address", "127.0.0.1:5505");
export const token = writableStorage("token", "");
+export function makeThumbnailUrl(id: ResourceId) {
+ return `http://${get(address)}/thumbnail/${id}?token=${get(token)}`;
+}
+
+export function makeAudioUrl(id: ResourceId) {
+ return `http://${get(address)}/audio/id/${id}?token=${get(token)}`;
+}
+
+export const currentTrack = writable
(null);
+
+export function getCurrentTrack(tracks: Map, queue: ResourceId[], position: number | null): TrackWithId | null {
+ if (position === null) {
+ return null;
+ }
+ const id = queue.at(position);
+ if (id === undefined) {
+ return null;
+ }
+ const track = tracks.get(id);
+ if (track === undefined) {
+ return null;
+ }
+ return {
+ track,
+ id,
+ };
+}
+
+export const queuePosition = writable(null);
+export const queue = writable([]);
export const tracks = writable