From f0df082c88ec3dbf1aeaae9e24af348a33cb8a29 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Sun, 23 Jul 2017 12:27:07 +0200 Subject: [PATCH] fix async activity --- app/controllers/User.scala | 20 +++++++++++-------- .../activity/src/main/ActivityReadApi.scala | 6 ++++-- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/app/controllers/User.scala b/app/controllers/User.scala index 93bfc74762..0d80d50030 100644 --- a/app/controllers/User.scala +++ b/app/controllers/User.scala @@ -58,14 +58,18 @@ object User extends LilaController { ) } } - private def renderShow(u: UserModel, status: Results.Status = Results.Ok)(implicit ctx: Context) = { - for { - as <- Env.activity.read.recent(u.id, 7) - nbs ← Env.current.userNbGames(u, ctx) - info ← Env.current.userInfo(u, nbs, ctx) - social ← Env.current.socialInfo(u, ctx) - } yield status(html.user.show.activity(u, as, info, social)) - }.mon(_.http.response.user.show.website) + private def renderShow(u: UserModel, status: Results.Status = Results.Ok)(implicit ctx: Context) = + if (HTTPRequest.isSynchronousHttp(ctx.req)) { + for { + as <- Env.activity.read.recent(u.id) + nbs ← Env.current.userNbGames(u, ctx) + info ← Env.current.userInfo(u, nbs, ctx) + social ← Env.current.socialInfo(u, ctx) + } yield status(html.user.show.activity(u, as, info, social)) + }.mon(_.http.response.user.show.website) + else Env.activity.read.recent(u.id) map { as => + status(html.activity.list(u, as)) + } def gamesAll(username: String, page: Int) = games(username, GameFilter.All.name, page) diff --git a/modules/activity/src/main/ActivityReadApi.scala b/modules/activity/src/main/ActivityReadApi.scala index 7edcf5ea45..349964c656 100644 --- a/modules/activity/src/main/ActivityReadApi.scala +++ b/modules/activity/src/main/ActivityReadApi.scala @@ -21,8 +21,10 @@ final class ActivityReadApi( import activities._ import model._ - def recent(userId: User.ID, days: Int): Fu[List[ActivityView.AsTo]] = for { - as <- coll.byOrderedIds[Activity, Id](makeIds(userId, days))(_.id) + private val recentNb = 7 + + def recent(userId: User.ID): Fu[List[ActivityView.AsTo]] = for { + as <- coll.byOrderedIds[Activity, Id](makeIds(userId, recentNb))(_.id) practiceStructure <- as.exists(_.practice.isDefined) ?? { practiceApi.structure.get map some }