packages feed

rfc-0.0.0.25: src/RFC/GHCJS/Cookie.hs

{-# LANGUAGE FlexibleContexts      #-}
{-# LANGUAGE MultiParamTypeClasses #-}

module RFC.GHCJS.Cookie
	( storePermCookie
	, readCookie
	, ghcjsCookieScript
	) where

import           RFC.Miso.String (MisoString)
import           RFC.Prelude

ghcjsCookieScript :: String
ghcjsCookieScript = "https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"

foreign import javascript safe
	"Cookies.set($1,$2,{expires:500})"
	storePermCookie :: MisoString -> MisoString -> IO ()

readCookie :: (ConvertibleStrings s1 MisoString, ConvertibleStrings MisoString s2) => s1 -> IO (Maybe s2)
readCookie cookieName = do
	raw <- rawReadCookie $ cs cookieName
	return $ case null raw of
		True -> Nothing
		False -> Just $ cs raw

foreign import javascript safe
	"Cookies.get($1) || ''"
	rawReadCookie :: MisoString -> IO MisoString