From 082abd8fbe715c87607de645efc806eac86f7141 Mon Sep 17 00:00:00 2001 From: aeroreyna Date: Sat, 12 Mar 2022 22:44:47 -0800 Subject: [PATCH] Login and logout --- App.js | 1 + Views/Feed.js | 26 ++++++++++++++++++++++++-- Views/Login.js | 17 ++++------------- Views/Profile.js | 1 - components/Login.js | 5 +++-- components/UserName.js | 37 +++++++++++++++++++++++++++++++++---- package.json | 3 ++- 7 files changed, 67 insertions(+), 23 deletions(-) diff --git a/App.js b/App.js index abfa63e..46707a3 100644 --- a/App.js +++ b/App.js @@ -84,6 +84,7 @@ export default function App() { }} /> + diff --git a/Views/Feed.js b/Views/Feed.js index 360c912..6b8a888 100644 --- a/Views/Feed.js +++ b/Views/Feed.js @@ -5,12 +5,35 @@ import API from './../API.js'; import Post from './../components/Post.js'; import NewPost from "./../components/NewPost.js"; +import AsyncStorage from '@react-native-async-storage/async-storage'; +const storeFeed = async (value) => { + try { + const jsonValue = JSON.stringify(value) + await AsyncStorage.setItem('feed', jsonValue) + } catch (e) { + } +} + +const getFeed = async () => { + try { + const value = await AsyncStorage.getItem('feed') + if (value !== null) { + return JSON.parse(value); + } + } catch (e) { + return [] + } +} let Feed = ({ navigation, route }) => { let [Me, setMeProfile] = useState({}); let [Posts, setPosts] = useState([]); useEffect(async () => { + let loggedIn = await API.isLoggedIn(); + if(!loggedIn) return navigation.navigate('Login'); + let cacheFeed = await getFeed() || []; + setPosts(cacheFeed); let r = await API.getMe(); setMeProfile(r); if (route.params && route.params.profileid) { @@ -18,9 +41,8 @@ let Feed = ({ navigation, route }) => { } else { let posts = await API.getPosts(); setPosts(posts); - navigation.setOptions({ title: "Feed" }); + storeFeed(posts); } - //console.log(posts) }, [route.params]); const renderPost = (({ item }) => { if (item.nonOrganicType === 'PopularUsers' || item.nonOrganicType === 'PopularGroups') diff --git a/Views/Login.js b/Views/Login.js index 7bd5629..4b35e4a 100644 --- a/Views/Login.js +++ b/Views/Login.js @@ -3,35 +3,26 @@ import React, { useEffect, useState } from 'react'; import { StyleSheet, Text, View, TextInput, SafeAreaView } from 'react-native'; import API from './../API.js'; import LoginForm from './../components/Login.js'; -import { Provider as PaperProvider } from 'react-native-paper'; -import AwesomeIcon from 'react-native-vector-icons/FontAwesome'; export default function App({navigation, route}) { useEffect(async () => { let r = await API.isLoggedIn(); - if(r) navigation.navigate('Feed') + if(r){ + await API.logout(); + navigation.navigate('Login') + } }, []); return ( - , - }}> - EMI Social LOGO - ); } const styles = StyleSheet.create({ container: { flex: 1, - alignItems: 'center', - justifyContent: 'center', - marginTop: 25, - paddingTop: 10, - backgroundColor: "#edf2f7" }, }); diff --git a/Views/Profile.js b/Views/Profile.js index c48b69f..cf4305f 100644 --- a/Views/Profile.js +++ b/Views/Profile.js @@ -58,7 +58,6 @@ export default Profile; const styles = StyleSheet.create({ container: { flex: 1, - alignItems: 'center', backgroundColor: "#edf2f7", }, }); diff --git a/components/Login.js b/components/Login.js index 17bf6b7..625aeee 100644 --- a/components/Login.js +++ b/components/Login.js @@ -2,11 +2,13 @@ import { StatusBar } from 'expo-status-bar'; import React, { useState } from 'react'; import { Text, View, TextInput, Button, StyleSheet } from 'react-native'; import API from './../API.js'; +import { useNavigation } from '@react-navigation/native'; let LoginForm = ()=>{ let [email, setEmail] = useState(''); let [password, setPassword] = useState(''); + const navigation = useNavigation(); return ( @@ -34,7 +36,7 @@ let LoginForm = ()=>{