@(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)
}