File size: 1,426 Bytes
71638d4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | import AsyncStorage from "@react-native-async-storage/async-storage";
import { createClient } from "@supabase/supabase-js";
import Constants from "expo-constants";
type ExtraConfig = Record<string, unknown> | undefined;
const extra =
(Constants.expoConfig?.extra as ExtraConfig) ??
((Constants as any).manifest?.extra as ExtraConfig);
const pickString = (value: unknown): string =>
typeof value === "string" ? value : "";
const SUPABASE_URL =
process.env.EXPO_PUBLIC_SUPABASE_URL ??
pickString(extra?.EXPO_PUBLIC_SUPABASE_URL) ??
pickString(extra?.SUPABASE_URL);
const SUPABASE_ANON_KEY =
process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY ??
pickString(extra?.EXPO_PUBLIC_SUPABASE_ANON_KEY) ??
pickString(extra?.SUPABASE_ANON_KEY);
export const API_BASE_URL =
process.env.EXPO_PUBLIC_API_BASE_URL ??
process.env.EXPO_PUBLIC_API_URL ??
pickString(extra?.EXPO_PUBLIC_API_BASE_URL) ??
pickString(extra?.EXPO_PUBLIC_API_URL) ??
pickString(extra?.API_BASE_URL);
export const CONFIG_ERROR =
!SUPABASE_URL || !SUPABASE_ANON_KEY
? "Missing Supabase configuration"
: !API_BASE_URL
? "Missing API base URL configuration"
: null;
export const supabase = CONFIG_ERROR
? null
: createClient(SUPABASE_URL, SUPABASE_ANON_KEY, {
auth: {
storage: AsyncStorage,
autoRefreshToken: true,
persistSession: true,
detectSessionInUrl: false,
},
});
|