sare26 commited on
Commit
4c1ae5f
·
verified ·
1 Parent(s): a846132

Update artifacts/fb-publisher/src/App.tsx

Browse files
Files changed (1) hide show
  1. artifacts/fb-publisher/src/App.tsx +58 -28
artifacts/fb-publisher/src/App.tsx CHANGED
@@ -8,12 +8,6 @@ import { queryClient } from "./lib/queryClient";
8
  import { Toaster } from "@/components/ui/toaster";
9
  import { TooltipProvider } from "@/components/ui/tooltip";
10
  import Publisher from "@/pages/Publisher";
11
- import Subscription from "@/pages/Subscription";
12
- import SubscriptionReturn from "@/pages/SubscriptionReturn";
13
- import InstallExtension from "@/pages/InstallExtension";
14
- import Admin from "@/pages/Admin";
15
- import NotFound from "@/pages/not-found";
16
- import UpdateBanner from "@/components/UpdateBanner";
17
 
18
  const firebaseConfig = {
19
  apiKey: "AIzaSyBMZV3pjYNxpMWbkyJbp1anaE2p1YCRWcg",
@@ -42,44 +36,70 @@ function FirebaseAuthTokenSetter() {
42
  }
43
 
44
  function HomePage() {
45
- const [user, setUser] = useState<any>(null);
46
- const [loading, setLoading] = useState(true);
 
 
 
 
47
 
48
  useEffect(() => {
49
  const unsubscribe = onAuthStateChanged(auth, (firebaseUser) => {
50
  console.log("🔥 Firebase user:", firebaseUser?.email);
51
- setUser(firebaseUser);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
  setLoading(false);
53
  });
54
  return () => unsubscribe();
55
  }, []);
56
 
57
- useEffect(() => {
58
- if (user) {
59
- console.log("📡 إرسال للميرفر...");
60
- fetch(`/api/me?userId=${user.uid}&userEmail=${user.email}`, { credentials: 'include' })
61
- .then(res => res.json())
62
- .then(data => console.log("✅ Supabase:", data))
63
- .catch(err => console.error("❌", err));
64
- }
65
- }, [user]);
66
-
67
  const handleLogin = async () => {
68
  try {
69
  const result = await signInWithPopup(auth, googleProvider);
70
  console.log("✅ تسجيل دخول ناجح:", result.user.email);
71
- // المستخدم سيتم تحديثه تلقائياً عبر onAuthStateChanged
72
  } catch (error) {
73
  console.error("❌ خطأ في تسجيل الدخول:", error);
 
74
  }
75
  };
76
 
 
 
 
 
 
 
77
  if (loading) {
78
  return <div className="min-h-screen bg-[#0f0f1e] flex items-center justify-center text-white text-xl">جاري التحميل...</div>;
79
  }
80
 
81
  if (user) {
82
- return <Redirect to="/app" />;
 
 
 
 
 
 
 
 
83
  }
84
 
85
  return (
@@ -94,12 +114,27 @@ function HomePage() {
94
  }
95
 
96
  function ProtectedPublisher() {
97
- const [user, setUser] = useState<any>(null);
 
 
 
98
  const [loading, setLoading] = useState(true);
99
 
100
  useEffect(() => {
101
  const unsubscribe = onAuthStateChanged(auth, (firebaseUser) => {
102
- setUser(firebaseUser);
 
 
 
 
 
 
 
 
 
 
 
 
103
  setLoading(false);
104
  });
105
  return () => unsubscribe();
@@ -120,11 +155,6 @@ export default function App() {
120
  <Switch>
121
  <Route path="/" component={HomePage} />
122
  <Route path="/app" component={ProtectedPublisher} />
123
- <Route path="/subscription" component={Subscription} />
124
- <Route path="/subscription/return" component={SubscriptionReturn} />
125
- <Route path="/extension" component={InstallExtension} />
126
- <Route path="/admin" component={Admin} />
127
- <Route component={NotFound} />
128
  </Switch>
129
  <UpdateBanner />
130
  <Toaster />
 
8
  import { Toaster } from "@/components/ui/toaster";
9
  import { TooltipProvider } from "@/components/ui/tooltip";
10
  import Publisher from "@/pages/Publisher";
 
 
 
 
 
 
11
 
12
  const firebaseConfig = {
13
  apiKey: "AIzaSyBMZV3pjYNxpMWbkyJbp1anaE2p1YCRWcg",
 
36
  }
37
 
38
  function HomePage() {
39
+ const [user, setUser] = useState<any>(() => {
40
+ // استعادة المستخدم من localStorage
41
+ const saved = localStorage.getItem("firebase_user");
42
+ return saved ? JSON.parse(saved) : null;
43
+ });
44
+ const [loading, setLoading] = useState(!localStorage.getItem("firebase_user"));
45
 
46
  useEffect(() => {
47
  const unsubscribe = onAuthStateChanged(auth, (firebaseUser) => {
48
  console.log("🔥 Firebase user:", firebaseUser?.email);
49
+ if (firebaseUser) {
50
+ const userData = {
51
+ uid: firebaseUser.uid,
52
+ email: firebaseUser.email,
53
+ displayName: firebaseUser.displayName,
54
+ photoURL: firebaseUser.photoURL,
55
+ };
56
+ setUser(userData);
57
+ localStorage.setItem("firebase_user", JSON.stringify(userData));
58
+
59
+ // ✅ إرسال للميرفر
60
+ fetch(`/api/me?userId=${firebaseUser.uid}&userEmail=${firebaseUser.email}`, { credentials: 'include' })
61
+ .then(res => res.json())
62
+ .then(data => console.log("✅ Supabase:", data))
63
+ .catch(err => console.error("❌", err));
64
+ } else {
65
+ setUser(null);
66
+ localStorage.removeItem("firebase_user");
67
+ }
68
  setLoading(false);
69
  });
70
  return () => unsubscribe();
71
  }, []);
72
 
 
 
 
 
 
 
 
 
 
 
73
  const handleLogin = async () => {
74
  try {
75
  const result = await signInWithPopup(auth, googleProvider);
76
  console.log("✅ تسجيل دخول ناجح:", result.user.email);
 
77
  } catch (error) {
78
  console.error("❌ خطأ في تسجيل الدخول:", error);
79
+ setLoading(false);
80
  }
81
  };
82
 
83
+ const handleLogout = () => {
84
+ signOut(auth);
85
+ localStorage.removeItem("firebase_user");
86
+ setUser(null);
87
+ };
88
+
89
  if (loading) {
90
  return <div className="min-h-screen bg-[#0f0f1e] flex items-center justify-center text-white text-xl">جاري التحميل...</div>;
91
  }
92
 
93
  if (user) {
94
+ return (
95
+ <div className="min-h-screen bg-[#0f0f1e] flex flex-col items-center justify-center gap-4">
96
+ <h1 className="text-white text-2xl font-bold">✅ تم التسجيل!</h1>
97
+ <p className="text-gray-400">مرحباً، {user.displayName || user.email}</p>
98
+ <p className="text-gray-500">UID: {user.uid}</p>
99
+ <button onClick={handleLogout} className="bg-red-600 text-white px-6 py-3 rounded-lg">تسجيل خروج</button>
100
+ <a href="/app" className="bg-[#bb86fc] text-white px-8 py-4 rounded-xl text-lg font-bold">اذهب للتطبيق</a>
101
+ </div>
102
+ );
103
  }
104
 
105
  return (
 
114
  }
115
 
116
  function ProtectedPublisher() {
117
+ const [user, setUser] = useState<any>(() => {
118
+ const saved = localStorage.getItem("firebase_user");
119
+ return saved ? JSON.parse(saved) : null;
120
+ });
121
  const [loading, setLoading] = useState(true);
122
 
123
  useEffect(() => {
124
  const unsubscribe = onAuthStateChanged(auth, (firebaseUser) => {
125
+ if (firebaseUser) {
126
+ const userData = {
127
+ uid: firebaseUser.uid,
128
+ email: firebaseUser.email,
129
+ displayName: firebaseUser.displayName,
130
+ photoURL: firebaseUser.photoURL,
131
+ };
132
+ setUser(userData);
133
+ localStorage.setItem("firebase_user", JSON.stringify(userData));
134
+ } else {
135
+ setUser(null);
136
+ localStorage.removeItem("firebase_user");
137
+ }
138
  setLoading(false);
139
  });
140
  return () => unsubscribe();
 
155
  <Switch>
156
  <Route path="/" component={HomePage} />
157
  <Route path="/app" component={ProtectedPublisher} />
 
 
 
 
 
158
  </Switch>
159
  <UpdateBanner />
160
  <Toaster />