@@ -7,7 +7,7 @@ import { asError } from "../common/error"
77import Backend from "./backend"
88
99import { Client } from "../transport/client"
10- import { GroupReader } from "../transport/objects"
10+ import { SubgroupReader } from "../transport/objects"
1111
1212export type Range = Message . Range
1313export type Timeline = Message . Timeline
@@ -71,7 +71,7 @@ export default class Player {
7171 const client = new Client ( { url : config . url , fingerprint : config . fingerprint , role : "subscriber" } )
7272 const connection = await client . connect ( )
7373
74- const catalog = await Catalog . fetch ( connection , config . namespace )
74+ const catalog = await Catalog . fetch ( connection , [ config . namespace ] )
7575 console . log ( "catalog" , catalog )
7676
7777 const canvas = config . canvas . transferControlToOffscreen ( )
@@ -81,13 +81,15 @@ export default class Player {
8181 }
8282
8383 async #run( ) {
84+ // Key is "/" serialized namespace for lookup ease
85+ // Value is Track.initTrack. @todo : type this properly
8486 const inits = new Set < [ string , string ] > ( )
8587 const tracks = new Array < Catalog . Track > ( )
8688
8789 this . #catalog. tracks . forEach ( ( track , index ) => {
8890 if ( index == this . #tracknum || Catalog . isAudioTrack ( track ) ) {
8991 if ( ! track . namespace ) throw new Error ( "track has no namespace" )
90- if ( track . initTrack ) inits . add ( [ track . namespace , track . initTrack ] )
92+ if ( track . initTrack ) inits . add ( [ track . namespace . join ( "/" ) , track . initTrack ] )
9193 tracks . push ( track )
9294 }
9395 } )
@@ -103,7 +105,7 @@ export default class Player {
103105 }
104106
105107 async #runInit( namespace : string , name : string ) {
106- const sub = await this . #connection. subscribe ( namespace , name )
108+ const sub = await this . #connection. subscribe ( [ namespace ] , name )
107109 try {
108110 const init = await Promise . race ( [ sub . data ( ) , this . #running] )
109111 if ( ! init ) throw new Error ( "no init data" )
@@ -143,7 +145,7 @@ export default class Player {
143145 const segment = await Promise . race ( [ sub . data ( ) , this . #running] )
144146 if ( ! segment ) continue
145147
146- if ( ! ( segment instanceof GroupReader ) ) {
148+ if ( ! ( segment instanceof SubgroupReader ) ) {
147149 throw new Error ( `expected group reader for segment: ${ track . name } ` )
148150 }
149151
@@ -281,6 +283,7 @@ export default class Player {
281283 try {
282284 await this . #running
283285 } catch ( e ) {
286+ console . error ( "Error in Player.closed():" , e )
284287 return asError ( e )
285288 }
286289 }
0 commit comments