Skip to content

Commit 3e34b65

Browse files
committed
fix fix session out
1 parent b23e091 commit 3e34b65

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

peachide/src/app/UserEnvProvider.tsx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,13 @@ interface GroupsMap {
1919
interface UserContextType {
2020
token: string | null;
2121
userId: string | null;
22+
fetchFailed: boolean;
2223
isAuthenticated: boolean;
2324
isTeacher: boolean;
2425
myGroups: GroupsMap;
2526
userData: UserData | null;
2627
setUserData: (userData: UserData) => void;
28+
setFetchFailed: (fetchFailed: boolean) => void;
2729
setIsTeacher: (isTeacher: boolean) => void;
2830
setMyGroups: (groups: GroupsMap) => void;
2931
login: (token: string, userId: string, isTeacher: boolean) => void;
@@ -65,6 +67,7 @@ const defaultSidebarItems: SidebarItem[] = [...baseSidebarItems];
6567
const UserContext = createContext<UserContextType>({
6668
token: null,
6769
userId: null,
70+
fetchFailed: false,
6871
isAuthenticated: false,
6972
isTeacher: false,
7073
myGroups: {} as GroupsMap,
@@ -73,6 +76,7 @@ const UserContext = createContext<UserContextType>({
7376
login: () => { },
7477
logout: () => { },
7578
setUserData: () => { },
79+
setFetchFailed: () => { },
7680
sidebarItems: defaultSidebarItems,
7781
setSidebarItems: () => { },
7882
setMyGroups: () => { },
@@ -85,6 +89,7 @@ export const UserProvider = ({ children }: { children: React.ReactNode }) => {
8589
const [userId, setUserId] = useState<string | null>(null);
8690
const [isTeacher, setIsTeacher] = useState<boolean>(false);
8791
const [userData, setUserData] = useState<UserData | null>(null);
92+
const [fetchFailed, setFetchFailed] = useState<boolean>(false);
8893
const [sidebarItems, setSidebarItems] = useState<SidebarItem[]>(defaultSidebarItems);
8994
const [myGroups, setMyGroups] = useState<GroupsMap>({} as GroupsMap);
9095

@@ -107,7 +112,9 @@ export const UserProvider = ({ children }: { children: React.ReactNode }) => {
107112
});
108113

109114
if (!response.ok) {
110-
throw new Error('Failed to fetch user data');
115+
setFetchFailed(true);
116+
console.log("Failed to fetch user data", response);
117+
return;
111118
}
112119

113120
const data = await response.json();
@@ -132,6 +139,7 @@ export const UserProvider = ({ children }: { children: React.ReactNode }) => {
132139
}
133140
setMyGroups(groups as GroupsMap);
134141
} catch (error) {
142+
setFetchFailed(true);
135143
console.error('Error fetching user data:', error);
136144
toast.error('Failed to load user information');
137145
}
@@ -185,6 +193,7 @@ export const UserProvider = ({ children }: { children: React.ReactNode }) => {
185193
localStorage.setItem('sidebarItems', JSON.stringify([...defaultSidebarItems, ...studentSidebarItems]));
186194
console.log("studentSidebarItems", [...defaultSidebarItems, ...studentSidebarItems]);
187195
}
196+
setFetchFailed(false);
188197
};
189198

190199
const logout = () => {
@@ -197,6 +206,7 @@ export const UserProvider = ({ children }: { children: React.ReactNode }) => {
197206
// Reset sidebar items to default when logging out
198207
setSidebarItems(defaultSidebarItems);
199208
localStorage.setItem('sidebarItems', JSON.stringify(defaultSidebarItems));
209+
setFetchFailed(false);
200210
};
201211

202212
const isAuthenticated = IS_MOCK_AUTH || !!token;
@@ -212,6 +222,8 @@ export const UserProvider = ({ children }: { children: React.ReactNode }) => {
212222
setIsTeacher,
213223
login,
214224
logout,
225+
fetchFailed,
226+
setFetchFailed,
215227
userData,
216228
setMyGroups,
217229
setUserData,

peachide/src/app/page.tsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export interface UserData {
2727
}
2828

2929
export default function Home() {
30-
const { userId, logout, isTeacher, setIsTeacher, userData, setUserData, token } = useUserContext();
30+
const { userId, logout, isTeacher, setIsTeacher, userData, setUserData, token, fetchFailed, setFetchFailed } = useUserContext();
3131
const router = useRouter();
3232
const fileInputRef = useRef<HTMLInputElement>(null);
3333

@@ -42,7 +42,6 @@ export default function Home() {
4242
const [previewPhoto, setPreviewPhoto] = useState<string>('');
4343
const [showLoginDialog, setShowLoginDialog] = useState(false);
4444

45-
// Initialize edit data when userData changes
4645
useEffect(() => {
4746
if (userData) {
4847
setEditData({
@@ -51,13 +50,19 @@ export default function Home() {
5150
photo: null
5251
});
5352
setPreviewPhoto(userData.photo || '');
54-
} else {
55-
setShowLoginDialog(true);
5653
}
5754
}, [userData]);
5855

56+
useEffect(() => {
57+
if (fetchFailed) {
58+
console.log("fetchFailed", fetchFailed);
59+
setShowLoginDialog(true);
60+
}
61+
}, [fetchFailed]);
62+
5963
const handleLogout = () => {
6064
logout();
65+
setFetchFailed(false);
6166
router.push('/auth');
6267
toast.success('Logged out successfully');
6368
};

0 commit comments

Comments
 (0)