type ui/lobby pool member
parent
a22d0c0421
commit
ddcb419e36
|
@ -4,7 +4,7 @@ import * as seekRepo from './seekRepo';
|
|||
import { make as makeStores, Stores } from './store';
|
||||
import * as xhr from './xhr';
|
||||
import * as poolRangeStorage from './poolRangeStorage';
|
||||
import { LobbyOpts, LobbyData, Tab, Mode, Sort, Filter, Hook, Seek } from './interfaces';
|
||||
import { LobbyOpts, LobbyData, Tab, Mode, Sort, Filter, Hook, Seek, PoolMember } from './interfaces';
|
||||
import LobbySocket from './socket';
|
||||
|
||||
const li = window.lichess;
|
||||
|
@ -24,7 +24,7 @@ export default class LobbyController {
|
|||
stepHooks: Hook[] = [];
|
||||
stepping: boolean = false;
|
||||
redirecting: boolean = false;
|
||||
poolMember?: any;
|
||||
poolMember?: PoolMember;
|
||||
trans: Trans;
|
||||
redraw: () => void;
|
||||
|
||||
|
@ -167,7 +167,7 @@ export default class LobbyController {
|
|||
}
|
||||
};
|
||||
|
||||
enterPool = (member) => {
|
||||
enterPool = (member: PoolMember) => {
|
||||
poolRangeStorage.set(member.id, member.range);
|
||||
this.setTab('pools');
|
||||
this.poolMember = member;
|
||||
|
@ -177,11 +177,12 @@ export default class LobbyController {
|
|||
leavePool = () => {
|
||||
if (!this.poolMember) return;
|
||||
this.socket.poolOut(this.poolMember);
|
||||
this.poolMember = null;
|
||||
this.poolMember = undefined;
|
||||
this.redraw();
|
||||
};
|
||||
|
||||
poolIn = () => {
|
||||
if (!this.poolMember) return;
|
||||
this.poolInStorage.set(li.StrongSocket.sri);
|
||||
this.socket.poolIn(this.poolMember);
|
||||
};
|
||||
|
|
|
@ -29,3 +29,11 @@ export interface LobbyData extends Untyped {
|
|||
hooks: Hook[];
|
||||
seeks: Seek[];
|
||||
}
|
||||
|
||||
export interface PoolMember {
|
||||
id: PoolId;
|
||||
range?: PoolRange
|
||||
}
|
||||
|
||||
export type PoolId = string;
|
||||
export type PoolRange = string;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import * as xhr from './xhr';
|
||||
import * as hookRepo from './hookRepo';
|
||||
import LobbyController from './ctrl';
|
||||
import { Hook } from './interfaces';
|
||||
import { Hook, PoolMember } from './interfaces';
|
||||
|
||||
interface Handlers {
|
||||
[key: string]: (data: any) => void;
|
||||
|
@ -70,7 +70,7 @@ export default class LobbySocket {
|
|||
this.send('hookOut');
|
||||
};
|
||||
|
||||
poolIn(member) {
|
||||
poolIn(member: PoolMember) {
|
||||
// last arg=true: must not retry
|
||||
// because if poolIn is sent before socket opens,
|
||||
// then poolOut is sent,
|
||||
|
@ -79,7 +79,7 @@ export default class LobbySocket {
|
|||
this.send('poolIn', member, {}, true);
|
||||
};
|
||||
|
||||
poolOut(member) {
|
||||
poolOut(member: PoolMember) {
|
||||
this.send('poolOut', member.id);
|
||||
};
|
||||
|
||||
|
|
|
@ -9,8 +9,8 @@ function renderRange(range: string) {
|
|||
export default function(ctrl: LobbyController) {
|
||||
const member = ctrl.poolMember;
|
||||
return ctrl.data.pools.map(function(pool) {
|
||||
const active = member && member.id === pool.id,
|
||||
transp = member && !active;
|
||||
const active = !!member && member.id === pool.id,
|
||||
transp = !!member && !active;
|
||||
return h('div.pool', {
|
||||
class: {
|
||||
active,
|
||||
|
@ -19,12 +19,12 @@ export default function(ctrl: LobbyController) {
|
|||
hook: bind('click', _ => ctrl.clickPool(pool.id), ctrl.redraw)
|
||||
}, [
|
||||
h('div.clock', pool.lim + '+' + pool.inc),
|
||||
(active && member.range) ? renderRange(member.range) : h('div.perf', pool.perf),
|
||||
(active && member!.range) ? renderRange(member!.range!) : h('div.perf', pool.perf),
|
||||
active ? spinner() : null
|
||||
]);
|
||||
}).concat(
|
||||
h('div.custom', {
|
||||
class: { transp: member },
|
||||
class: { transp: !!member },
|
||||
hook: bind('click', _ => $('#start_buttons .config_hook').mousedown())
|
||||
}, ctrl.trans.noarg('custom'))
|
||||
);
|
||||
|
|
|
@ -7,7 +7,7 @@ function tab(ctrl: LobbyController, key: Tab, active: Tab, content: MaybeVNodes)
|
|||
return h('a', {
|
||||
class: {
|
||||
active: key === active,
|
||||
glow: key !== active && key === 'pools' && ctrl.poolMember
|
||||
glow: key !== active && key === 'pools' && !!ctrl.poolMember
|
||||
},
|
||||
hook: bind('mousedown', _ => ctrl.setTab(key), ctrl.redraw)
|
||||
}, content);
|
||||
|
|
Loading…
Reference in New Issue