@@ -1,6 +1,9 @@
11module Supabase.AuthHelpers
2− ( UseUser
2+ ( ClientOptions
3+ , CookieOptions
4+ , UseUser
35 , createBrowserClient
6+ , createBrowserClientWithOptions
47 , useUser
58 , userProvider
69 ) where
@@ -11,10 +14,12 @@ import Data.Maybe (Maybe)
1114import Data.Nullable (Nullable)
1215import Data.Nullable as Nullable
1316import Effect (Effect)
17+import Foreign (Foreign)
1418import React.Basic.Hooks (Hook, ReactComponent, unsafeHook)
1519import Record.Studio (mapRecordKind)
1620import Supabase.Supabase as Supabase
1721import Supabase.Types (Client)
22+import Yoga.JSON as YogaJSON
1823
1924foreign import userProvider :: forall props. ReactComponent { supabaseClient :: Client | props }
2025
@@ -26,3 +31,21 @@ useUser = unsafeHook useUserImpl <#> mapRecordKind Nullable.toMaybe
2631foreign import data UseUser :: Type -> Type
2732
2833foreign import createBrowserClient :: Effect Client
34+
35+type CookieOptions =
36+ { domain :: Maybe String
37+ , maxAge :: Maybe Int
38+ , name :: Maybe Int
39+ , path :: Maybe String
40+ , sameSite :: Maybe String
41+ , secure :: Maybe Boolean
42+ }
43+
44+type ClientOptions =
45+ { cookieOptions :: Maybe CookieOptions
46+ }
47+
48+foreign import createBrowserClientWithOptionsInternal :: Foreign -> Effect Client
49+
50+createBrowserClientWithOptions ∷ ClientOptions → Effect Client
51+createBrowserClientWithOptions = YogaJSON.write >>> createBrowserClientWithOptionsInternal