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,
      },
    });