83 lines
1.5 KiB
Go
83 lines
1.5 KiB
Go
package queue
|
|
|
|
import (
|
|
"github.com/wailsapp/wails/v2/pkg/runtime"
|
|
|
|
"yellowjacket/backend/events"
|
|
)
|
|
|
|
// emitQueueChanged emits the full queue state to the frontend.
|
|
func (q *Queue) emitQueueChanged() {
|
|
if q.ctx == nil {
|
|
return
|
|
}
|
|
|
|
state := State{
|
|
Tracks: q.tracks,
|
|
CurrentIndex: q.currentIndex,
|
|
ShuffleMode: q.shuffleMode,
|
|
RepeatMode: q.repeatMode,
|
|
SourcePlaylistID: q.sourcePlaylistID,
|
|
}
|
|
|
|
// Ensure tracks is never nil in JSON.
|
|
if state.Tracks == nil {
|
|
state.Tracks = []Track{}
|
|
}
|
|
|
|
runtime.EventsEmit(q.ctx, events.QueueChanged, state)
|
|
}
|
|
|
|
// emitIndexChanged emits only the current index to the frontend.
|
|
func (q *Queue) emitIndexChanged() {
|
|
if q.ctx == nil {
|
|
return
|
|
}
|
|
|
|
runtime.EventsEmit(
|
|
q.ctx,
|
|
events.QueueIndexChanged,
|
|
IndexChanged{CurrentIndex: q.currentIndex},
|
|
)
|
|
}
|
|
|
|
// emitModeChanged emits only the shuffle/repeat mode to the frontend.
|
|
func (q *Queue) emitModeChanged() {
|
|
if q.ctx == nil {
|
|
return
|
|
}
|
|
|
|
runtime.EventsEmit(
|
|
q.ctx,
|
|
events.QueueModeChanged,
|
|
ModeChanged{
|
|
ShuffleMode: q.shuffleMode,
|
|
RepeatMode: q.repeatMode,
|
|
},
|
|
)
|
|
}
|
|
|
|
// emitTracksModified emits a delta update for track list changes.
|
|
func (q *Queue) emitTracksModified(
|
|
action string,
|
|
tracks []Track,
|
|
index int,
|
|
positions []int,
|
|
) {
|
|
if q.ctx == nil {
|
|
return
|
|
}
|
|
|
|
runtime.EventsEmit(
|
|
q.ctx,
|
|
events.QueueTracksModified,
|
|
TracksModified{
|
|
Action: action,
|
|
Tracks: tracks,
|
|
Index: index,
|
|
Positions: positions,
|
|
CurrentIndex: q.currentIndex,
|
|
},
|
|
)
|
|
}
|