diff --git a/src/App.js b/src/App.js
index d00ff6d..7bdf159 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,4 +1,4 @@
-import React, { useState, useContext } from "react";
+import React, { useState, useContext, useEffect } from "react";
import { NavigationContainer } from "@react-navigation/native";
import navigationTheme from "./app/navigation/navigationTheme";
@@ -7,23 +7,38 @@ import openDatabase from "./app/database/database-connection";
import initDatabase from "./app/database/database-init";
import FlashMessage from "react-native-flash-message";
-import { createStackNavigator } from "@react-navigation/stack";
import AppNavigator from "./app/navigation/AppNavigator";
import EventLocationProvider from "./app/context/EventLocationContext";
import CurrentLocationProvider from "./app/context/CurrentLocationContext";
import AuthNavigator from "./app/navigation/AuthNavigator";
-import { AuthContextProvider } from "./app/auth/context";
+import { AuthContext } from "./app/auth/context";
+import authStorage from "./app/auth/storage";
+import jwtDecode from "jwt-decode";
export default function App() {
- const [user, AuthProvider] = AuthContextProvider();
- console.log("asidhisdhaisu " + JSON.stringify(user));
+ const [user, setUser] = useState();
+
+ const restoreToken = async () => {
+ const token = await authStorage.getToken();
+ if (!token) return;
+
+ return setUser(jwtDecode(token));
+ };
+
+ useEffect(() => {
+ restoreToken();
+ }, []);
global.userDataBase = openDatabase();
initDatabase(global.userDataBase);
- const Stack = createStackNavigator();
return (
-
+
@@ -32,6 +47,6 @@ export default function App() {
-
+
);
}
diff --git a/src/app/api/auth.js b/src/app/api/auth.js
index fa9581c..4976cec 100644
--- a/src/app/api/auth.js
+++ b/src/app/api/auth.js
@@ -2,9 +2,9 @@ function login(name, password) {
// NOTE: Change to API in future
return {
- name: "Fulano De Tal",
- email: "fulano@detal.com",
- ID: "1",
+ ok: true,
+ data:
+ "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiRnVsYW5vIGRlIFRhbCIsImVtYWlsIjoiZnVsYW5vLmRlLnRhbEBib2wuY29tLmJyIiwiSUQiOiIxIn0.5435hPLABKVcejsZokCGG77G6xjBUcKAU_lAjELzT3g",
};
}
diff --git a/src/app/auth/context.js b/src/app/auth/context.js
index 51a59d6..1ce8d2c 100644
--- a/src/app/auth/context.js
+++ b/src/app/auth/context.js
@@ -2,21 +2,21 @@ import React, { useState } from "react";
const AuthContext = React.createContext();
-function AuthContextProvider() {
- const [user, setUser] = useState();
+// function AuthContextProvider() {
+// const [user, setUser] = useState();
- const provider = ({ children }) => (
-
- {children}
-
- );
+// const provider = ({ children }) => (
+//
+// {children}
+//
+// );
- return [user, provider];
-}
+// return [user, setUser, provider];
+// }
-export { AuthContextProvider, AuthContext };
+export { AuthContext };
diff --git a/src/app/auth/storage.js b/src/app/auth/storage.js
new file mode 100644
index 0000000..8af5ba1
--- /dev/null
+++ b/src/app/auth/storage.js
@@ -0,0 +1,29 @@
+import * as SecureStore from "expo-secure-store";
+
+const key = "authToke";
+
+const setToken = async (authToken) => {
+ try {
+ await SecureStore.setItemAsync(key, authToken);
+ } catch (error) {
+ console.log("Error while storing authToken");
+ }
+};
+
+const getToken = async () => {
+ try {
+ return await SecureStore.getItemAsync(key);
+ } catch (error) {
+ console.log("Error while gettig authToken");
+ }
+};
+
+const removeToken = async () => {
+ try {
+ await SecureStore.deleteItemAsync(key);
+ } catch (e) {
+ console.log("Error while removing authToken");
+ }
+};
+
+export default { setToken, getToken, removeToken };
diff --git a/src/app/screens/AccountScreen.js b/src/app/screens/AccountScreen.js
index c18c446..c6f3e68 100644
--- a/src/app/screens/AccountScreen.js
+++ b/src/app/screens/AccountScreen.js
@@ -3,6 +3,12 @@ import { Text, Button } from "react-native";
import Screen from "../components/Screen";
import InDevelopment from "../components/InDevelopment";
import { AuthContext } from "../auth/context";
+import authStorage from "../auth/storage";
+
+function handleLogOut(setUser) {
+ setUser(null);
+ authStorage.removeToken();
+}
function AccountScreen(props) {
const { user, setUser } = useContext(AuthContext);
@@ -18,7 +24,9 @@ function AccountScreen(props) {