-
Notifications
You must be signed in to change notification settings - Fork 0
/
App.tsx
71 lines (62 loc) · 1.83 KB
/
App.tsx
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import "react-native-gesture-handler";
import "react-native-url-polyfill/auto";
import Icon from "@expo/vector-icons/MaterialCommunityIcons";
import { createDrawerNavigator } from "@react-navigation/drawer";
import { NavigationContainer } from "@react-navigation/native";
import React, { useMemo } from "react";
import HistoricProvider, { useHistoric } from "./src/context/HistoricProvider";
import OpenAIProvider from "./src/context/OpenAIProvider";
import Chat from "./src/screens/Chat";
import { sortByIsoDate } from "./utils/index";
const Drawer = createDrawerNavigator();
const drawerLabelStyle = {
color: "#ACABBD",
marginLeft: -16,
};
const AuthenticatedRoutes = () => {
const { threads } = useHistoric();
const screenOptions = useMemo(
() => ({
headerShown: false,
drawerLabelStyle,
drawerIcon: () => <Icon color="#ACABBD" name="forum-outline" size={24} />,
drawerActiveTintColor: "#b9bde5",
drawerStyle: {
backgroundColor: "#2B2C2F",
},
}),
[]
);
return (
<Drawer.Navigator screenOptions={screenOptions}>
{threads
.sort((a, b) => sortByIsoDate(a.createdAt, b.createdAt))
.map((thread) => {
const threadId = thread.id;
const title = (thread.messages?.[0]?.text as string) || "New chat";
return (
<Drawer.Screen
component={Chat}
initialParams={{ threadId }}
key={threadId}
name={threadId}
options={{
title,
}}
/>
);
})}
</Drawer.Navigator>
);
};
export default function App() {
return (
<NavigationContainer>
<OpenAIProvider>
<HistoricProvider>
<AuthenticatedRoutes />
</HistoricProvider>
</OpenAIProvider>
</NavigationContainer>
);
}