mirror of
https://github.com/skidoodle/spotify-ws
synced 2025-10-09 05:22:43 +02:00
refactor
This commit is contained in:
29
internal/websocket/state.go
Normal file
29
internal/websocket/state.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package websocket
|
||||
|
||||
import "spotify-ws/internal/spotify"
|
||||
|
||||
// PlaybackState is the client-facing data structure. It conditionally omits
|
||||
// real-time data fields from JSON based on the server's mode.
|
||||
type PlaybackState struct {
|
||||
IsPlaying bool `json:"is_playing"`
|
||||
ProgressMs int `json:"progress_ms,omitempty"`
|
||||
Timestamp int64 `json:"timestamp,omitempty"`
|
||||
Item *spotify.TrackItem `json:"item"`
|
||||
}
|
||||
|
||||
// newPlaybackState creates a client-facing PlaybackState from the internal Spotify data.
|
||||
// It includes progress data only if the server is in real-time mode.
|
||||
func newPlaybackState(data *spotify.CurrentlyPlaying, realtime bool) PlaybackState {
|
||||
if data == nil {
|
||||
return PlaybackState{IsPlaying: false}
|
||||
}
|
||||
state := PlaybackState{
|
||||
IsPlaying: data.IsPlaying,
|
||||
Item: data.Item,
|
||||
}
|
||||
if realtime {
|
||||
state.ProgressMs = data.ProgressMs
|
||||
state.Timestamp = data.Timestamp
|
||||
}
|
||||
return state
|
||||
}
|
||||
Reference in New Issue
Block a user