@(e: lila.timeline.Entry)(implicit ctx: Context) @import lila.hub.actorApi.timeline._ @e.decode.map { decoded => @decoded match { case Follow(u1, u2) => { @trans.xStartedFollowingY(userIdLink(u1.some, withOnline = false), userIdLink(u2.some, withOnline = false)) } case TeamJoin(userId, teamId) => { @trans.xJoinedTeamY(userIdLink(userId.some, withOnline = false), teamLink(teamId, withIcon = false)) } case TeamCreate(userId, teamId) => { @trans.xCreatedTeamY(userIdLink(userId.some, withOnline = false), teamLink(teamId, withIcon = false)) } case ForumPost(userId, topicId, topicName, postId) => { @trans.xPostedInForumY(userIdLink(userId.some, withOnline = false), Html("""%s""".format(routes.ForumPost.redirect(postId), escapeHtml(topicName), shorten(topicName, 30)))) } case NoteCreate(fromId, toId) => { @trans.xLeftANoteOnY(userIdLink(fromId.some, withOnline = false), userIdLink(toId.some, withOnline = false, params = "?note")) } case TourJoin(userId, tourId, tourName) => { @trans.xCompetesInY(userIdLink(userId.some, withOnline = false), Html("""%s""".format(routes.Tournament.show(tourId), escapeHtml(tourName)))) } case SimulCreate(userId, simulId, simulName) => { @trans.xHostsY(userIdLink(userId.some, withOnline = false), Html(s"""${escapeHtml(simulName)}""")) } case SimulJoin(userId, simulId, simulName) => { @trans.xJoinsY(userIdLink(userId.some, withOnline = false), Html(s"""${escapeHtml(simulName)}""")) } case QaQuestion(userId, id, title) => { @trans.xAskedY(userIdLink(userId.some, withOnline = false), Html("""%s""".format(routes.QaQuestion.show(id, "redirect"), escapeHtml(title)))) } case QaAnswer(userId, id, title, answerId) => { @trans.xAnsweredY(userIdLink(userId.some, withOnline = false), Html("""%s""".format(routes.QaQuestion.show(id, "redirect"), answerId, escapeHtml(title)))) } case QaComment(userId, id, title, commentId) => { @trans.xCommentedY(userIdLink(userId.some, withOnline = false), Html("""%s""".format(routes.QaQuestion.show(id, "redirect"), commentId, escapeHtml(title)))) } case GameEnd(playerId, opponent, win, perfKey) => { @lila.rating.PerfType(perfKey).map { perf => @trans.xVsYinZ(Html(""" %s""".format(routes.Round.player(playerId), perf.iconChar, win match { case Some(true) => trans.victory() case Some(false) => trans.defeat() case _ => trans.draw() })), userIdLink(opponent, withOnline = false), perf.name) } } case StudyCreate(userId, studyId, studyName) => { @trans.xHostsY(userIdLink(userId.some, withOnline = false), Html(s"""${escapeHtml(studyName)}""")) } case StudyLike(userId, studyId, studyName) => { @trans.xLikesY(userIdLink(userId.some, withOnline = false), Html(s"""${escapeHtml(studyName)}""")) } case PlanStart(userId) => { @userIdLink(userId.some, withOnline = true) became a Patron } case BlogPost(id, slug, title) => { @title } case StreamStart(id, name) => { @name started streaming } } @momentFromNow(e.date) }