2{-# LANGUAGE DataKinds #-}
3{-# LANGUAGE DefaultSignatures #-}
4{-# LANGUAGE DeriveFunctor #-}
5{-# LANGUAGE FlexibleContexts #-}
6{-# LANGUAGE FlexibleInstances #-}
7{-# LANGUAGE GeneralizedNewtypeDeriving #-}
8{-# LANGUAGE MultiParamTypeClasses #-}
9{-# LANGUAGE RankNTypes #-}
10{-# LANGUAGE TypeFamilies #-}
11{-# LANGUAGE UndecidableInstances #-}
13module Obelisk.Frontend.Cookie where
15import Control.Monad.Fix
16import Control.Monad.Primitive
17import Control.Monad.Ref
18import Control.Monad.IO.Class
19import Control.Monad.Trans.Class
20import Control.Monad.Trans.Reader
21import Data.Text.Encoding (encodeUtf8)
23import Reflex.Host.Class
25import GHCJS.DOM.Document (getCookie, Document)
26import GHCJS.DOM.Types (MonadJSM)
30import Obelisk.Route.Frontend
32class Monad m => HasCookies m where
33 askCookies :: m Cookies
34 default askCookies :: (HasCookies m', m ~ t m', MonadTrans t) => m Cookies
35 askCookies = lift askCookies
37instance HasCookies m => HasCookies (BehaviorWriterT t w m)
38instance HasCookies m => HasCookies (DynamicWriterT t w m)
39instance HasCookies m => HasCookies (EventWriterT t w m)
40instance HasCookies m => HasCookies (PostBuildT t m)
41instance HasCookies m => HasCookies (QueryT t q m)
42instance HasCookies m => HasCookies (ReaderT r m)
43instance HasCookies m => HasCookies (RequesterT t request response m)
44instance HasCookies m => HasCookies (RouteToUrlT t m)
45instance HasCookies m => HasCookies (SetRouteT t r m)
46instance HasCookies m => HasCookies (StaticDomBuilderT t m)
47instance HasCookies m => HasCookies (TriggerEventT t m)
48instance HasCookies m => HasCookies (RoutedT t r m)
49instance HasCookies m => HasCookies (ConfigsT m)
50instance HasConfigs m => HasConfigs (CookiesT m)
52newtype CookiesT m a = CookiesT { unCookiesT :: ReaderT Cookies m a }
65 , MonadReflexCreateTrigger t
76instance Adjustable t m => Adjustable t (CookiesT m) where
77 runWithReplace a e = CookiesT $ runWithReplace (unCookiesT a) (unCookiesT <$> e)
78 traverseDMapWithKeyWithAdjust f m e = CookiesT $ traverseDMapWithKeyWithAdjust (\k v -> unCookiesT $ f k v) m e
79 traverseIntMapWithKeyWithAdjust f m e = CookiesT $ traverseIntMapWithKeyWithAdjust (\k v -> unCookiesT $ f k v) m e
80 traverseDMapWithKeyWithAdjustWithMove f m e = CookiesT $ traverseDMapWithKeyWithAdjustWithMove (\k v -> unCookiesT $ f k v) m e
82instance PrimMonad m => PrimMonad (CookiesT m) where
83 type PrimState (CookiesT m) = PrimState m
84 primitive = lift . primitive
90runCookiesT cs child = runReaderT (unCookiesT child) cs
92instance Monad m => HasCookies (CookiesT m) where
93 askCookies = CookiesT ask
96 :: (forall x. m x -> n x)
99mapCookiesT f (CookiesT x) = CookiesT $ mapReaderT f x
101instance (MonadJSM m, RawDocument (DomBuilderSpace (HydrationDomBuilderT s t m)) ~ Document) => HasCookies (HydrationDomBuilderT s t m) where
102 askCookies = fmap (parseCookies . encodeUtf8) $ getCookie =<< askDocument
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list