refactored many events to use wails bindings, reducing boilerplate

This commit is contained in:
2026-02-25 18:51:07 -05:00
parent baa4644ece
commit cf144bf0dd
20 changed files with 1044 additions and 716 deletions
@@ -12,7 +12,7 @@ import { playerStore } from '../player-store';
* render() {
* return html`
* <span>${this.player.currentTrack?.fileName}</span>
* <button @click=${() => this.player.play()}>Play</button>
* <button @click=${() => this.player.pause()}>Pause</button>
* `;
* }
*/
@@ -67,10 +67,6 @@ export class PlayerController implements ReactiveController {
// Delegate to store (which delegates to backend)
// ===================================================================
play(): void {
playerStore.play();
}
pause(): void {
playerStore.pause();
}
@@ -71,6 +71,10 @@ export class QueueController implements ReactiveController {
// ACTIONS
// ===================================================================
play(): void {
queueStore.play();
}
next(): void {
queueStore.next();
}
+7 -10
View File
@@ -1,5 +1,6 @@
import { EventsOn, EventsEmit } from '@runtime/runtime';
import { EventsOn } from '@runtime/runtime';
import { Events } from '../events';
import * as Player from '@go/player/Player';
// TrackInfo mirrors the player.TrackInfo struct in the Go backend.
// Fields are serialized as camelCase JSON via struct tags.
@@ -79,27 +80,23 @@ class PlayerStore {
// ===================================================================
// ACTIONS
// These delegate to the backend via Wails events
// These delegate to the backend via Wails bindings
// ===================================================================
play(): void {
EventsEmit(Events.RequestPlay);
}
pause(): void {
EventsEmit(Events.RequestPause);
Player.Pause();
}
loadTrack(filePath: string): void {
EventsEmit(Events.RequestLoadFile, filePath);
Player.LoadFile(filePath);
}
seek(seconds: number): void {
EventsEmit(Events.Seek, seconds);
Player.Seek(seconds);
}
setVolume(level: number): void {
EventsEmit(Events.RequestSetVolume, level);
Player.SetVolume(level);
}
// ===================================================================
+26 -31
View File
@@ -1,5 +1,6 @@
import { EventsOn, EventsEmit } from '@runtime/runtime';
import { EventsOn } from '@runtime/runtime';
import { Events } from '../events';
import * as Queue from '@go/queue/Queue';
// Types
export interface QueueTrack {
@@ -179,15 +180,19 @@ class QueueStore {
// ===================================================================
// ACTIONS
// These delegate to the backend via Wails events
// These delegate to the backend via Wails bindings
// ===================================================================
play(): void {
Queue.Play();
}
next(): void {
EventsEmit(Events.RequestNext);
Queue.Next();
}
previous(): void {
EventsEmit(Events.RequestPrevious);
Queue.Previous();
}
setQueue(
@@ -195,71 +200,61 @@ class QueueStore {
startIndex: number,
shuffleStart = false,
): void {
EventsEmit(
Events.RequestSetQueue,
filePaths,
startIndex,
shuffleStart,
);
Queue.SetQueue(filePaths, startIndex, shuffleStart);
}
addToQueue(filePath: string): void {
EventsEmit(Events.RequestAddToQueue, filePath);
Queue.AddTrack(filePath);
}
playNext(filePath: string): void {
EventsEmit(Events.RequestPlayNext, filePath);
Queue.InsertNext(filePath);
}
removeFromQueue(position: number): void {
EventsEmit(Events.RequestRemoveFromQueue, position);
Queue.RemoveTrack(position);
}
removeTracksFromQueue(positions: number[]): void {
EventsEmit(Events.RequestRemoveTracksFromQueue, positions);
Queue.RemoveTracks(positions);
}
addTracksToQueue(filePaths: string[]): void {
EventsEmit(Events.RequestAddTracksToQueue, filePaths);
Queue.AddTracks(filePaths);
}
playTracksNext(filePaths: string[]): void {
EventsEmit(Events.RequestPlayTracksNext, filePaths);
Queue.InsertNextTracks(filePaths);
}
toggleShuffle(): void {
EventsEmit(Events.RequestToggleShuffle);
Queue.ToggleShuffle();
}
cycleRepeat(): void {
EventsEmit(Events.RequestCycleRepeat);
Queue.CycleRepeat();
}
playAtIndex(index: number): void {
EventsEmit(Events.RequestPlayQueueIndex, index);
Queue.PlayIndex(index);
}
insertTracksAtIndex(filePaths: string[], index: number): void {
EventsEmit(
Events.RequestInsertTracksAtIndex,
filePaths,
index,
);
insertTracksAtIndex(
filePaths: string[],
index: number,
): void {
Queue.InsertTracksAt(filePaths, index);
}
moveTracksInQueue(
fromIndices: number[],
toIndex: number,
): void {
EventsEmit(
Events.RequestMoveQueueTracks,
fromIndices,
toIndex,
);
Queue.MoveQueueTracks(fromIndices, toIndex);
}
clearQueue(): void {
EventsEmit(Events.RequestClearQueue);
Queue.Clear();
}
// ===================================================================