git.iko.soy/rowtype-yoga/purescript-supabase
on main help sign in
Add browser client options
commit2950795b67e94f227f60c6cc08b6489a64c775c2 authorsigma-andex <77549848+sigma-andex@users.noreply.github.com> dateTue 14 Mar 2023, 07:58 (4 years ago) parent75e529c
3 files changed+28−2
src/Supabase/AuthHelpers.js+3 src/Supabase/AuthHelpers.purs+24−1 src/Supabase/Supabase.purs+1−1
src/Supabase/AuthHelpers.js+3
@@ -6,3 +6,6 @@ export const useUserImpl = useUser;
66import { createBrowserSupabaseClient } from "@supabase/auth-helpers-nextjs";
77
88export const createBrowserClient = () => createBrowserSupabaseClient();
9+
10+export const createBrowserClientWithOptionsInternal = (options) => () =>
11+ createBrowserSupabaseClient(options);
src/Supabase/AuthHelpers.purs+24−1
@@ -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
src/Supabase/Supabase.purs+1−1
@@ -177,7 +177,7 @@ type InternalFunctionResponse d = { "data" :: Nullable d, error :: Nullable { me
177177
178178foreign import invokeImpl :: forall body headers t. Client -> Fn3 String body headers (Effect $ Promise $ InternalFunctionResponse t)
179179
180−type FunctionResponse d = { "data" :: Maybe d, error :: Maybe { message :: String, context :: Fetch.Response } }
180+type FunctionResponse d = { "data" :: Maybe d, error :: Maybe { message :: String, context :: Fetch.Response }}
181181
182182invoke ∷ forall t body headers. ReadForeign t ⇒ Client → String → body → headers → Aff (FunctionResponse t)
183183invoke client fn body headers = runFn3 (invokeImpl client) fn body headers # Promise.toAffE <#> convert