mobile BC: lobby round count - fixes #1686 - for veloce/lichobile#297
This commit is contained in:
parent
911604303f
commit
018e3e6e26
|
@ -43,7 +43,11 @@ object Lobby extends LilaController {
|
||||||
|
|
||||||
def socket(apiVersion: Int) = SocketOption[JsValue] { implicit ctx =>
|
def socket(apiVersion: Int) = SocketOption[JsValue] { implicit ctx =>
|
||||||
get("sri") ?? { uid =>
|
get("sri") ?? { uid =>
|
||||||
Env.lobby.socketHandler(uid = uid, ip = ctx.req.remoteAddress, user = ctx.me) map some
|
Env.lobby.socketHandler(
|
||||||
|
uid = uid,
|
||||||
|
ip = ctx.req.remoteAddress,
|
||||||
|
user = ctx.me,
|
||||||
|
mobile = getBool("mobile")) map some
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package lila.lobby
|
package lila.lobby
|
||||||
|
|
||||||
import scala.concurrent.duration._
|
import scala.concurrent.duration._
|
||||||
|
import scala.concurrent.Future
|
||||||
|
|
||||||
import akka.actor._
|
import akka.actor._
|
||||||
import akka.pattern.ask
|
import akka.pattern.ask
|
||||||
|
@ -39,9 +40,9 @@ private[lobby] final class Socket(
|
||||||
history.since(v).fold(resync(m))(_ foreach sendMessage(m))
|
history.since(v).fold(resync(m))(_ foreach sendMessage(m))
|
||||||
}
|
}
|
||||||
|
|
||||||
case Join(uid, ip, user, blocks) =>
|
case Join(uid, ip, user, blocks, mobile) =>
|
||||||
val (enumerator, channel) = Concurrent.broadcast[JsValue]
|
val (enumerator, channel) = Concurrent.broadcast[JsValue]
|
||||||
val member = Member(channel, user, blocks, uid, ip)
|
val member = Member(channel, user, blocks, uid, ip, mobile)
|
||||||
addMember(uid, member)
|
addMember(uid, member)
|
||||||
sender ! Connected(enumerator, member)
|
sender ! Connected(enumerator, member)
|
||||||
|
|
||||||
|
@ -76,7 +77,9 @@ private[lobby] final class Socket(
|
||||||
case lila.hub.actorApi.StreamsOnAir(html) => notifyAllAsync(makeMessage("streams", html))
|
case lila.hub.actorApi.StreamsOnAir(html) => notifyAllAsync(makeMessage("streams", html))
|
||||||
|
|
||||||
case NbMembers(nb) => pong = pong + ("d" -> JsNumber(nb))
|
case NbMembers(nb) => pong = pong + ("d" -> JsNumber(nb))
|
||||||
case lila.hub.actorApi.round.NbRounds(nb) => pong = pong + ("r" -> JsNumber(nb))
|
case lila.hub.actorApi.round.NbRounds(nb) =>
|
||||||
|
pong = pong + ("r" -> JsNumber(nb))
|
||||||
|
notifyMobileUsers(makeMessage("nbr", nb)) // BC, remove me
|
||||||
|
|
||||||
case ChangeFeatured(_, msg) => notifyAllAsync(msg)
|
case ChangeFeatured(_, msg) => notifyAllAsync(msg)
|
||||||
}
|
}
|
||||||
|
@ -98,4 +101,10 @@ private[lobby] final class Socket(
|
||||||
private def notifySeeks() {
|
private def notifySeeks() {
|
||||||
notifyAll(makeMessage("reload_seeks"))
|
notifyAll(makeMessage("reload_seeks"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def notifyMobileUsers(msg: JsObject) = Future {
|
||||||
|
members.values.foreach { m =>
|
||||||
|
if (m.mobile) m push msg
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,9 +50,9 @@ private[lobby] final class SocketHandler(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
def apply(uid: String, ip: String, user: Option[User]): Fu[JsSocketHandler] =
|
def apply(uid: String, ip: String, user: Option[User], mobile: Boolean): Fu[JsSocketHandler] =
|
||||||
(user ?? (u => blocking(u.id))) flatMap { blockedUserIds =>
|
(user ?? (u => blocking(u.id))) flatMap { blockedUserIds =>
|
||||||
val join = Join(uid = uid, ip = ip, user = user, blocking = blockedUserIds)
|
val join = Join(uid = uid, ip = ip, user = user, blocking = blockedUserIds, mobile = mobile)
|
||||||
Handler(hub, socket, uid, join, user map (_.id)) {
|
Handler(hub, socket, uid, join, user map (_.id)) {
|
||||||
case Connected(enum, member) =>
|
case Connected(enum, member) =>
|
||||||
(controller(socket, uid, member), enum, member)
|
(controller(socket, uid, member), enum, member)
|
||||||
|
|
|
@ -32,7 +32,8 @@ private[lobby] case class Member(
|
||||||
channel: JsChannel,
|
channel: JsChannel,
|
||||||
user: Option[LobbyUser],
|
user: Option[LobbyUser],
|
||||||
uid: String,
|
uid: String,
|
||||||
ip: String) extends SocketMember {
|
ip: String,
|
||||||
|
mobile: Boolean) extends SocketMember {
|
||||||
|
|
||||||
val userId = user map (_.id)
|
val userId = user map (_.id)
|
||||||
val troll = user ?? (_.troll)
|
val troll = user ?? (_.troll)
|
||||||
|
@ -40,11 +41,12 @@ private[lobby] case class Member(
|
||||||
|
|
||||||
private[lobby] object Member {
|
private[lobby] object Member {
|
||||||
|
|
||||||
def apply(channel: JsChannel, user: Option[User], blocking: Set[String], uid: String, ip: String): Member = Member(
|
def apply(channel: JsChannel, user: Option[User], blocking: Set[String], uid: String, ip: String, mobile: Boolean): Member = Member(
|
||||||
channel = channel,
|
channel = channel,
|
||||||
user = user map { LobbyUser.make(_, blocking) },
|
user = user map { LobbyUser.make(_, blocking) },
|
||||||
uid = uid,
|
uid = uid,
|
||||||
ip = ip)
|
ip = ip,
|
||||||
|
mobile = mobile)
|
||||||
}
|
}
|
||||||
|
|
||||||
private[lobby] case class HookMeta(hookId: Option[String] = None)
|
private[lobby] case class HookMeta(hookId: Option[String] = None)
|
||||||
|
@ -64,7 +66,7 @@ private[lobby] case class BiteHook(hookId: String, uid: String, user: Option[Lob
|
||||||
private[lobby] case class BiteSeek(seekId: String, user: LobbyUser)
|
private[lobby] case class BiteSeek(seekId: String, user: LobbyUser)
|
||||||
private[lobby] case class JoinHook(uid: String, hook: Hook, game: Game, creatorColor: chess.Color)
|
private[lobby] case class JoinHook(uid: String, hook: Hook, game: Game, creatorColor: chess.Color)
|
||||||
private[lobby] case class JoinSeek(userId: String, seek: Seek, game: Game, creatorColor: chess.Color)
|
private[lobby] case class JoinSeek(userId: String, seek: Seek, game: Game, creatorColor: chess.Color)
|
||||||
private[lobby] case class Join(uid: String, ip: String, user: Option[User], blocking: Set[String])
|
private[lobby] case class Join(uid: String, ip: String, user: Option[User], blocking: Set[String], mobile: Boolean)
|
||||||
private[lobby] case object Resync
|
private[lobby] case object Resync
|
||||||
private[lobby] case class HookIds(ids: List[String])
|
private[lobby] case class HookIds(ids: List[String])
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue