don't play clock emergency sounds on simul - resolves #177

This commit is contained in:
Thibault Duplessis 2014-12-31 01:46:14 +01:00
parent 2f599183a8
commit bd98f747d1
4 changed files with 11 additions and 8 deletions

View file

@ -56,7 +56,7 @@ object Round extends LilaController with TheftPrevention {
Env.game.crosstableApi(pov.game) zip
otherPovs(pov.gameId) flatMap {
case ((tour, crosstable), playing) =>
Env.api.roundApi.player(pov, Env.api.version) map { data =>
Env.api.roundApi.player(pov, Env.api.version, playing) map { data =>
Ok(html.round.player(pov, data, tour = tour, cross = crosstable, playing = playing))
}
}
@ -64,7 +64,7 @@ object Round extends LilaController with TheftPrevention {
Redirect(routes.Setup.await(fullId)).fuccess
)
},
api = apiVersion => Env.api.roundApi.player(pov, apiVersion) map { Ok(_) }
api = apiVersion => Env.api.roundApi.player(pov, apiVersion, Nil) map { Ok(_) }
)
}
}
@ -121,7 +121,7 @@ object Round extends LilaController with TheftPrevention {
private def join(pov: Pov)(implicit ctx: Context): Fu[Result] =
GameRepo initialFen pov.gameId zip
Env.api.roundApi.player(pov, Env.api.version) zip
Env.api.roundApi.player(pov, Env.api.version, otherPovs = Nil) zip
((pov.player.userId orElse pov.opponent.userId) ?? UserRepo.byId) map {
case ((fen, data), opponent) => Ok(html.setup.join(
pov, data, opponent, Env.setup.friendConfigMemo get pov.game.id, fen))

View file

@ -138,7 +138,7 @@ object Setup extends LilaController with TheftPrevention with play.api.http.Cont
OptionFuResult(GameRepo pov fullId) { pov =>
pov.game.started.fold(
Redirect(routes.Round.player(pov.fullId)).fuccess,
Env.api.roundApi.player(pov, Env.api.version) zip
Env.api.roundApi.player(pov, Env.api.version, otherPovs = Nil) zip
(userId ?? UserRepo.named) flatMap {
case (data, user) => PreventTheft(pov) {
Ok(html.setup.await(
@ -185,7 +185,7 @@ object Setup extends LilaController with TheftPrevention with play.api.http.Cont
config => op(config)(ctx) flatMap {
case (pov, call) => negotiate(
html = fuccess(redirectPov(pov, call)),
api = apiVersion => Env.api.roundApi.player(pov, apiVersion) map { data =>
api = apiVersion => Env.api.roundApi.player(pov, apiVersion, otherPovs = Nil) map { data =>
Created(data) as JSON
}
)

View file

@ -18,13 +18,13 @@ private[api] final class RoundApi(
analysisApi: AnalysisApi,
lightUser: String => Option[LightUser]) {
def player(pov: Pov, apiVersion: Int)(implicit ctx: Context): Fu[JsObject] =
def player(pov: Pov, apiVersion: Int, otherPovs: List[Pov])(implicit ctx: Context): Fu[JsObject] =
jsonView.playerJson(pov, ctx.pref, apiVersion, ctx.me,
withBlurs = ctx.me ?? Granter(_.ViewBlurs)) zip
(pov.game.tournamentId ?? TournamentRepo.byId) zip
(ctx.me ?? (me => noteApi.get(pov.gameId, me.id))) map {
case ((json, tourOption), note) => (
blindMode _ compose withTournament(tourOption)_ compose withNote(note)_
blindMode _ compose withTournament(tourOption)_ compose withNote(note)_ compose withOtherPovs(otherPovs)_
)(json)
}
@ -40,6 +40,9 @@ private[api] final class RoundApi(
)(json)
}
private def withOtherPovs(otherPovs: List[Pov])(json: JsObject) =
if (otherPovs.isEmpty) json else json + ("simul" -> JsBoolean(true))
private def withNote(note: String)(json: JsObject) =
if (note.isEmpty) json else json + ("note" -> JsString(note))

View file

@ -83,7 +83,7 @@ module.exports = function(opts) {
this.clock = this.data.clock ? new clockCtrl(
this.data.clock,
throttle(partial(this.socket.send, 'outoftime'), this.data.player.spectator ? 1000 : 500), (this.data.player.spectator || !this.data.pref.clockSound) ? null : this.data.player.color
throttle(partial(this.socket.send, 'outoftime'), this.data.player.spectator ? 1000 : 500), (this.data.simul || this.data.player.spectator || !this.data.pref.clockSound) ? null : this.data.player.color
) : false;
this.isClockRunning = function() {