packages feed

hyperbole-0.5.0: src/Web/Hyperbole/Types/Client.hs

module Web.Hyperbole.Types.Client where

import Data.Text (Text)
import Web.Hyperbole.Data.Cookie (Cookies)
import Web.Hyperbole.Data.QueryData as QueryData
import Web.Hyperbole.Types.Request


data Client = Client
  { requestId :: RequestId
  , session :: Cookies
  , query :: Maybe QueryData
  , pageTitle :: Maybe Text
  }


clientSetPageTitle :: Text -> Client -> Client
clientSetPageTitle t Client{session, query, requestId} =
  Client{pageTitle = Just t, session = session, query, requestId}


clientModCookies :: (Cookies -> Cookies) -> Client -> Client
clientModCookies f Client{session, query, requestId, pageTitle} =
  Client{session = f session, query, requestId, pageTitle}


clientSetQuery :: QueryData -> Client -> Client
clientSetQuery q Client{session, requestId, pageTitle} =
  Client{query = Just q, session, requestId, pageTitle}