-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathApp.js
More file actions
40 lines (32 loc) · 1.12 KB
/
Copy pathApp.js
File metadata and controls
40 lines (32 loc) · 1.12 KB
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
import { useEffect, useState } from "react";
import { onAuthStateChanged } from "firebase/auth";
import { auth } from "./firebase";
import LoginScreen from "./screens/LoginScreen";
import RegisterScreen from "./screens/RegisterScreen";
import DashboardScreen from "./screens/DashboardScreen";
import { UserProvider } from "./context/UserContext";
import { DevicesProvider } from "./context/DevicesContext";
export default function App() {
const [user, setUser] = useState(null);
const [screen, setScreen] = useState("login");
const [authChecked, setAuthChecked] = useState(false);
useEffect(() => {
const unsub = onAuthStateChanged(auth, (u) => {
setUser(u);
setAuthChecked(true);
});
return unsub;
}, []);
if (!authChecked) return null; // splash eklenebilir
if (!user && screen === "login")
return <LoginScreen goRegister={() => setScreen("register")} />;
if (!user && screen === "register")
return <RegisterScreen goLogin={() => setScreen("login")} />;
return (
<UserProvider>
<DevicesProvider>
<DashboardScreen />
</DevicesProvider>
</UserProvider>
);
}