diff --git a/ui/lobby/src/interfaces.ts b/ui/lobby/src/interfaces.ts index 2f35718f33..b03b992a37 100644 --- a/ui/lobby/src/interfaces.ts +++ b/ui/lobby/src/interfaces.ts @@ -34,6 +34,31 @@ export interface LobbyOpts extends Untyped { export interface LobbyData extends Untyped { hooks: Hook[]; seeks: Seek[]; + nowPlaying: NowPlaying[]; +} + +export interface NowPlaying { + fullId: string; + gameId: string; + fen: Fen; + color: Color; + lastMove: String; + variant: { + key: string; + name: string; + }; + speed: string; + perf: string; + rated: boolean; + hasMoved: boolean; + opponent: { + id: string; + username: string; + rating?: number; + ai?: number; + }; + isMyTurn: boolean; + secondsLeft?: number; } export interface PoolMember { diff --git a/ui/lobby/src/view/playing.ts b/ui/lobby/src/view/playing.ts index 5c049564db..0b13d13784 100644 --- a/ui/lobby/src/view/playing.ts +++ b/ui/lobby/src/view/playing.ts @@ -1,8 +1,9 @@ import { h } from 'snabbdom'; import LobbyController from '../ctrl'; +import { NowPlaying } from '../interfaces'; -function timer(pov) { - const date = Date.now() + pov.secondsLeft * 1000; +function timer(pov: NowPlaying) { + const date = Date.now() + pov.secondsLeft! * 1000; return h('time.timeago', { hook: { insert(vnode) { @@ -13,6 +14,7 @@ function timer(pov) { } export default function(ctrl: LobbyController) { + return h('div.now-playing', ctrl.data.nowPlaying.map(pov => h('a.' + pov.variant.key, {