lila/app/controllers/Pref.scala

71 lines
1.9 KiB
Scala
Raw Normal View History

2013-10-20 01:59:47 -06:00
package controllers
import play.api.data.Form
import play.api.mvc._, Results._
import lila.api.Context
2013-10-20 01:59:47 -06:00
import lila.app._
import lila.common.LilaCookie
import views._
object Pref extends LilaController {
private def api = Env.pref.api
private def forms = Env.pref.forms
2014-02-17 02:12:19 -07:00
def form = Auth { implicit ctx =>
me =>
2015-06-21 07:51:42 -06:00
Ok(html.account.pref(me, forms prefOf ctx.pref)).fuccess
2013-10-20 12:31:08 -06:00
}
2014-02-17 02:12:19 -07:00
def formApply = AuthBody { implicit ctx =>
me =>
2013-10-20 12:31:08 -06:00
implicit val req = ctx.body
2014-02-17 02:12:19 -07:00
FormFuResult(forms.pref) { err =>
2013-10-20 12:31:08 -06:00
fuccess(html.account.pref(me, err))
2014-02-17 02:12:19 -07:00
} { data =>
2015-06-21 07:51:42 -06:00
api.setPref(data(ctx.pref), notifyChange = true) inject Ok("saved")
}
}
def miniFormApply = AuthBody { implicit ctx =>
me =>
implicit val req = ctx.body
FormFuResult(forms.miniPref) { err =>
fuccess("nope")
} { data =>
api.setPref(data(ctx.pref), notifyChange = true) inject Ok("saved")
2013-10-20 12:31:08 -06:00
}
}
2014-02-17 02:12:19 -07:00
def set(name: String) = OpenBody { implicit ctx =>
2013-10-20 01:59:47 -06:00
implicit val req = ctx.body
(setters get name) ?? {
2014-02-17 02:12:19 -07:00
case (form, fn) => FormResult(form) { v =>
2015-07-19 03:29:18 -06:00
fn(v, ctx) map { cookie => Ok(()).withCookies(cookie) }
2013-10-20 01:59:47 -06:00
}
}
}
def saveTag(name: String, value: String) = Auth { implicit ctx =>
me =>
api.saveTag(me, name, value)
}
2013-10-20 01:59:47 -06:00
private lazy val setters = Map(
"theme" -> (forms.theme -> save("theme") _),
"pieceSet" -> (forms.pieceSet -> save("pieceSet") _),
2014-10-08 17:12:55 -06:00
"theme3d" -> (forms.theme3d -> save("theme3d") _),
"pieceSet3d" -> (forms.pieceSet3d -> save("pieceSet3d") _),
"soundSet" -> (forms.soundSet -> save("soundSet") _),
2014-10-08 15:49:13 -06:00
"bg" -> (forms.bg -> save("bg") _),
2015-07-17 08:43:14 -06:00
"bgImg" -> (forms.bgImg -> save("bgImg") _),
2014-10-08 15:49:13 -06:00
"is3d" -> (forms.is3d -> save("is3d") _))
2013-10-20 01:59:47 -06:00
2015-07-19 03:29:18 -06:00
private def save(name: String)(value: String, ctx: Context): Fu[Cookie] =
ctx.me ?? {
api.setPrefString(_, name, value, notifyChange = false)
} inject LilaCookie.session(name, value)(ctx.req)
2013-10-20 01:59:47 -06:00
}