Skip to content

Commit

Permalink
add: transport control events (#20)
Browse files Browse the repository at this point in the history
  • Loading branch information
BryanChrisBrown authored Feb 22, 2024
1 parent 05eebdd commit b66cd12
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 4 deletions.
51 changes: 50 additions & 1 deletion src/library/components/messageHandler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,50 @@ export class MonitorDisconnectedMessageHandler extends MessageHandler<"Monitor D
}
}

export class TransportControlPauseMessageHandler extends MessageHandler<"Transport Control Pause"> {
constructor(args: { client: BridgeClient }) {
super({ bridgeEventName: "Transport Control Pause", client: args.client })
}

handle(message: BridgeEventMap["Transport Control Pause"]): void {
this.client.log("%c Transport Control Pause ", "color: aqua; font-weight: bold; border: solid;", message)
}
}

export class TransportControlPlayMessageHandler extends MessageHandler<"Transport Control Play"> {
constructor(args: { client: BridgeClient }) {
super({ bridgeEventName: "Transport Control Play", client: args.client })
}

handle(message: BridgeEventMap["Transport Control Play"]): void {
this.client.log("%c Transport Control Play ", "color: aqua; font-weight: bold; border: solid;", message)
}
}

export class TransportControlNextMessageHandler extends MessageHandler<"Transport Control Next"> {
constructor(args: { client: BridgeClient }) {
super({ bridgeEventName: "Transport Control Next", client: args.client })
}

handle(message: BridgeEventMap["Transport Control Next"]): void {
this.client.log("%c Transport Control Next ", "color: aqua; font-weight: bold; border: solid;", message)
}
}

export class TransportControlPreviousMessageHandler extends MessageHandler<"Transport Control Previous"> {
constructor(args: { client: BridgeClient }) {
super({ bridgeEventName: "Transport Control Previous", client: args.client })
}

handle(message: BridgeEventMap["Transport Control Previous"]): void {
this.client.log(
"%c Transport Control Previous ",
"color: aqua; font-weight: bold; border: solid;",
message
)
}
}

export class ProgressStartMessageHandler extends MessageHandler<"Progress Start"> {
constructor(args: { client: BridgeClient }) {
super({ bridgeEventName: "Progress Start", client: args.client })
Expand All @@ -60,7 +104,12 @@ export class ProgressUpdateMessageHandler extends MessageHandler<"Progress Updat
}

handle(message: BridgeEventMap["Progress Update"]): void {
this.client.log(message)
this.client.log(
"%c Progress Update ",
"color: aqua; font-weight: bold; border: solid;",
message.payload.value.progress_type,
message.payload.value.progress.value
)
}
}

Expand Down
12 changes: 9 additions & 3 deletions src/library/schemas/schema.events.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ export const BridgeEvent = z.union([
z.literal("Sync/Play Playlist Complete"),
z.literal("Sync/Play Playlist Cancelled"),
z.literal("Transport Control Pause"),
z.literal("Transport Control Play"),
z.literal("Transport Control Next"),
z.literal("Transport Control Previous"),
// z.literal("All Events"),
])

Expand Down Expand Up @@ -162,7 +165,7 @@ const deletePlaylist = z.object({
}),
})

const transportControlPause = z.object({
const transportControlEvent = z.object({
event: z.object({
name: schema.name,
type: schema.wstring,
Expand Down Expand Up @@ -223,7 +226,7 @@ export const progressUpdateResponse = PayloadResponse(progressUpdate)
export const insertPlaylistResponse = PayloadResponse(insertPlaylist)
export const instancePlaylistResponse = PayloadResponse(playlistInstance)
export const deletePlaylistResponse = PayloadResponse(deletePlaylist)
export const transportControlPauseResponse = PayloadResponse(transportControlPause)
export const transportControlResponse = PayloadResponse(transportControlEvent)
export const newItemPlayingResponse = PayloadResponse(NewItemPlaying)

// export const all_events = z.union([monitorConnectResponse, progressUpdateResponse])
Expand All @@ -240,7 +243,10 @@ export type BridgeEventMap = {
"Sync/Play Playlist": z.infer<typeof progressUpdateResponse>
"Sync/Play Playlist Complete": z.infer<typeof progressUpdateResponse>
"Sync/Play Playlist Cancelled": z.infer<typeof progressUpdateResponse>
"Transport Control Pause": z.infer<typeof transportControlPauseResponse>
"Transport Control Pause": z.infer<typeof transportControlResponse>
"Transport Control Play": z.infer<typeof transportControlResponse>
"Transport Control Next": z.infer<typeof transportControlResponse>
"Transport Control Previous": z.infer<typeof transportControlResponse>
"New Item Playing": z.infer<typeof newItemPlayingResponse>
// "All Events": all_events,
/**CUSTOM CLIENT EVENTS BELOW THESE ARE NOT PART OF BRIDGE */
Expand Down
8 changes: 8 additions & 0 deletions src/react-app/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ import {
PlaylistInstanceMessageHandler,
hologramTypes,
Playlist,
TransportControlPauseMessageHandler,
TransportControlPlayMessageHandler,
TransportControlNextMessageHandler,
TransportControlPreviousMessageHandler,
} from "@library/index"
import HologramForm from "./components/HologramForm"
import { PlaylistUI } from "./components/Playlist"
Expand Down Expand Up @@ -441,6 +445,10 @@ function App() {
new PlaylistInsertMessageHandler({ client: Bridge })
new PlaylistInstanceMessageHandler({ client: Bridge })
new PlaylistDeleteMessageHandler({ client: Bridge })
new TransportControlPauseMessageHandler({ client: Bridge })
new TransportControlPlayMessageHandler({ client: Bridge })
new TransportControlNextMessageHandler({ client: Bridge })
new TransportControlPreviousMessageHandler({ client: Bridge })
setEventStatus("Listening to Events")
}}
disabled={!connected}>
Expand Down

0 comments on commit b66cd12

Please sign in to comment.