diff --git a/src/components/AuthenticatedWrapper.tsx b/src/components/AuthenticatedWrapper.tsx
index a460ae7..d36ca06 100644
--- a/src/components/AuthenticatedWrapper.tsx
+++ b/src/components/AuthenticatedWrapper.tsx
@@ -1,20 +1,32 @@
import React from "react";
import {useAuth} from "@/src/context/AuthProvider";
import NotAuthenticated from "@/src/components/NotAuthenticated";
+import { ActivityIndicator, View, StyleSheet } from "react-native";
const AuthenticatedWrapper: React.FC<{ children: React.ReactNode }> = ({children}) => {
- const {isAuthenticated, loading} = useAuth();
+ const {isAuthenticated, loading, authenticatedUser} = useAuth();
if (loading) {
- return null;
+ return (
+
+
+
+ );
}
- if (!isAuthenticated) {
+ if (!isAuthenticated || !authenticatedUser) {
return ;
- // return ;
+ // return ;
}
return <>{children}>;
};
+const styles = StyleSheet.create({
+ loaderContainer: {
+ flex: 1,
+ alignItems: "center",
+ justifyContent: "center",
+ },
+});
export default AuthenticatedWrapper;
diff --git a/src/context/AuthProvider.tsx b/src/context/AuthProvider.tsx
index a1f5205..5558a02 100644
--- a/src/context/AuthProvider.tsx
+++ b/src/context/AuthProvider.tsx
@@ -33,8 +33,8 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({children}
const storedToken = await getFromStorage(JWT_TOKEN_KEY);
if (storedToken) {
setToken(storedToken);
- setIsAuthenticated(true);
- await saveUser(storedToken);
+ const user = await saveUser(storedToken);
+ setIsAuthenticated(!!user);
} else {
setIsAuthenticated(false);
}
@@ -44,20 +44,22 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({children}
checkAuthStatus();
}, []);
- const saveUser = async (token: string) => {
+ const saveUser = async (token: string): Promise => {
const user = await new RestService(token).getSelf();
if (!user) {
- // token is invalid
+ // token ist ungültig
await removeFromStorage(JWT_TOKEN_KEY);
setToken(null);
setIsAuthenticated(false);
+ setAuthenticatedUser(null);
setError({
message: "Token invalid",
id: "general",
});
- return;
+ return null;
}
setAuthenticatedUser(user);
+ return user;
}
const login = async (username: string, password: string) => {
@@ -77,11 +79,11 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({children}
}
await saveInStorage(JWT_TOKEN_KEY, response.token);
setToken(response.token);
- setIsAuthenticated(true);
- // correctly logged in, reset error
+ // Fehler zurücksetzen
setError(null);
- await saveUser(response.token)
- // needed?
+ // User laden und ERST DANN isAuthenticated setzen
+ const user = await saveUser(response.token);
+ setIsAuthenticated(!!user);
setLoading(false);
};
@@ -110,4 +112,4 @@ export const useAuth = (): AuthContextType => {
throw new Error("useAuth must be used within an AuthProvider");
}
return context;
-};
+}
\ No newline at end of file