Skip to content

Commit

Permalink
add react native expo for connect
Browse files Browse the repository at this point in the history
  • Loading branch information
Hallidayo committed Feb 18, 2024
1 parent b0b8b6b commit a10f8e9
Show file tree
Hide file tree
Showing 2 changed files with 113 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,20 @@ export const FRAMEWORKS: ConnectionType[] = [
},
],
},
{
key: 'exporeactnative',
label: 'Expo React Native',
icon: 'expo',
guideLink: 'https://supabase.com/docs/guides/getting-started/tutorials/with-expo-react-native',
children: [
{
key: 'supabasejs',
label: 'Supabase-js',
children: [],
icon: 'supabase',
},
],
},
]

export const ORMS: ConnectionType[] = [
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
import { ContentFileProps } from 'components/interfaces/Home/Connect/Connect.types'

import {
ConnectTabs,
ConnectTabTrigger,
ConnectTabTriggers,
ConnectTabContent,
} from 'components/interfaces/Home/Connect/ConnectTabs'
import SimpleCodeBlock from 'components/to-be-cleaned/SimpleCodeBlock'

const ContentFile = ({ projectKeys }: ContentFileProps) => {
return (
<ConnectTabs>
<ConnectTabTriggers>
<ConnectTabTrigger value=".env.local" />
<ConnectTabTrigger value="utils/supabase.ts " />
<ConnectTabTrigger value="App.tsx" />
</ConnectTabTriggers>

<ConnectTabContent value=".env.local">
<SimpleCodeBlock className="bash" parentClassName="min-h-72">
{`
SUPABASE_URL=${projectKeys.apiUrl ?? 'your-project-url'}
SUPABASE_ANON_KEY=${projectKeys.anonKey ?? 'your-anon-key'}
`}
</SimpleCodeBlock>
</ConnectTabContent>

<ConnectTabContent value="utils/supabase.ts">
<SimpleCodeBlock className="ts" parentClassName="min-h-72">
{`
import 'react-native-url-polyfill/auto'
import AsyncStorage from '@react-native-async-storage/async-storage'
import { createClient } from '@supabase/supabase-js'
import { SUPABASE_URL, SUPABASE_ANON_KEY } from "@env";
export const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY, {
auth: {
storage: AsyncStorage,
autoRefreshToken: true,
persistSession: true,
detectSessionInUrl: false,
},
})
`}
</SimpleCodeBlock>
</ConnectTabContent>

<ConnectTabContent value="App.tsx">
<SimpleCodeBlock className="tsx" parentClassName="min-h-72">
{`
import React, { useState, useEffect } from 'react';
import { View, Text, FlatList } from 'react-native';
import { supabase } from '../utils/supabase';
export default function App() {
const [todos, setTodos] = useState([]);
useEffect(() => {
const getTodos = async () => {
try {
const { data: todos, error } = await supabase.from('todos').select();
if (error) {
console.error('Error fetching todos:', error.message);
return;
}
if (todos && todos.length > 0) {
setTodos(todos);
}
} catch (error) {
console.error('Error fetching todos:', error.message);
}
};
getTodos();
}, []);
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>Todo List</Text>
<FlatList
data={todos}
keyExtractor={(item) => item.id.toString()}
renderItem={({ item }) => <Text key={item.id}>{item.title}</Text>}
/>
</View>
);
};
`}
</SimpleCodeBlock>
</ConnectTabContent>
</ConnectTabs>
)
}

export default ContentFile

0 comments on commit a10f8e9

Please sign in to comment.