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
  { Client -> RequestId
requestId :: RequestId
  , Client -> Cookies
session :: Cookies
  , Client -> Maybe QueryData
query :: Maybe QueryData
  , Client -> Maybe Text
pageTitle :: Maybe Text
  }


clientSetPageTitle :: Text -> Client -> Client
clientSetPageTitle :: Text -> Client -> Client
clientSetPageTitle Text
t Client{Cookies
session :: Client -> Cookies
session :: Cookies
session, Maybe QueryData
query :: Client -> Maybe QueryData
query :: Maybe QueryData
query, RequestId
requestId :: Client -> RequestId
requestId :: RequestId
requestId} =
  Client{pageTitle :: Maybe Text
pageTitle = Text -> Maybe Text
forall a. a -> Maybe a
Just Text
t, session :: Cookies
session = Cookies
session, Maybe QueryData
query :: Maybe QueryData
query :: Maybe QueryData
query, RequestId
requestId :: RequestId
requestId :: RequestId
requestId}


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


clientSetQuery :: QueryData -> Client -> Client
clientSetQuery :: QueryData -> Client -> Client
clientSetQuery QueryData
q Client{Cookies
session :: Client -> Cookies
session :: Cookies
session, RequestId
requestId :: Client -> RequestId
requestId :: RequestId
requestId, Maybe Text
pageTitle :: Client -> Maybe Text
pageTitle :: Maybe Text
pageTitle} =
  Client{query :: Maybe QueryData
query = QueryData -> Maybe QueryData
forall a. a -> Maybe a
Just QueryData
q, Cookies
session :: Cookies
session :: Cookies
session, RequestId
requestId :: RequestId
requestId :: RequestId
requestId, Maybe Text
pageTitle :: Maybe Text
pageTitle :: Maybe Text
pageTitle}