2013-10-20 01:59:47 -06:00
|
|
|
package controllers
|
|
|
|
|
2017-01-15 05:26:08 -07:00
|
|
|
import play.api.mvc._
|
2013-10-20 01:59:47 -06:00
|
|
|
|
2014-05-26 08:21:11 -06:00
|
|
|
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
|
2016-09-01 15:04:05 -06:00
|
|
|
private def forms = lila.pref.DataForm
|
2013-10-20 01:59:47 -06:00
|
|
|
|
2018-04-26 17:58:29 -06:00
|
|
|
def apiGet = Scoped(_.Preference.Read) { _ => me =>
|
2018-03-31 19:48:52 -06:00
|
|
|
Env.pref.api.getPref(me) map { prefs =>
|
|
|
|
Ok {
|
|
|
|
import play.api.libs.json._
|
|
|
|
import lila.pref.JsonView._
|
|
|
|
Json.obj("prefs" -> prefs)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-02-14 08:34:07 -07:00
|
|
|
def form(categSlug: String) = Auth { implicit ctx => me =>
|
|
|
|
lila.pref.PrefCateg(categSlug) match {
|
|
|
|
case None => notFound
|
|
|
|
case Some(categ) =>
|
|
|
|
Ok(html.account.pref(me, forms prefOf ctx.pref, categ)).fuccess
|
|
|
|
}
|
2013-10-20 12:31:08 -06:00
|
|
|
}
|
|
|
|
|
2017-02-14 08:34:07 -07:00
|
|
|
def formApply = AuthBody { implicit ctx => me =>
|
|
|
|
def onSuccess(data: lila.pref.DataForm.PrefData) =
|
|
|
|
api.setPref(data(ctx.pref), notifyChange = true) inject Ok("saved")
|
|
|
|
implicit val req = ctx.body
|
|
|
|
forms.pref.bindFromRequest.fold(
|
|
|
|
err => forms.pref.bindFromRequest(lila.pref.FormCompatLayer(ctx.body)).fold(
|
|
|
|
err => BadRequest(err.toString).fuccess,
|
2016-09-01 15:04:05 -06:00
|
|
|
onSuccess
|
2017-02-14 08:34:07 -07:00
|
|
|
),
|
|
|
|
onSuccess
|
|
|
|
)
|
2015-06-21 07:51:42 -06:00
|
|
|
}
|
|
|
|
|
2017-03-09 14:15:11 -07:00
|
|
|
def setZoom = Action { implicit req =>
|
|
|
|
val zoom = getInt("v", req) | 100
|
|
|
|
Ok(()).withCookies(LilaCookie.session("zoom", zoom.toString))
|
|
|
|
}
|
|
|
|
|
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
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-02-14 08:34:07 -07:00
|
|
|
def saveTag(name: String, value: String) = Auth { implicit ctx => me =>
|
|
|
|
api.saveTag(me, name, value)
|
2014-05-26 08:21:11 -06:00
|
|
|
}
|
|
|
|
|
2013-10-20 01:59:47 -06:00
|
|
|
private lazy val setters = Map(
|
|
|
|
"theme" -> (forms.theme -> save("theme") _),
|
2014-05-09 05:51:55 -06:00
|
|
|
"pieceSet" -> (forms.pieceSet -> save("pieceSet") _),
|
2014-10-08 17:12:55 -06:00
|
|
|
"theme3d" -> (forms.theme3d -> save("theme3d") _),
|
|
|
|
"pieceSet3d" -> (forms.pieceSet3d -> save("pieceSet3d") _),
|
2015-06-26 15:34:22 -06:00
|
|
|
"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") _),
|
2017-07-15 02:44:58 -06:00
|
|
|
"is3d" -> (forms.is3d -> save("is3d") _),
|
|
|
|
"zen" -> (forms.zen -> save("zen") _)
|
2017-02-14 08:34:07 -07:00
|
|
|
)
|
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
|
|
|
}
|