Skip to content

Commit 056a678

Browse files
authored
Merge pull request #38 from igh9410/dev
Frontend routing bug fix
2 parents 1b61ed5 + 1fdb4ca commit 056a678

File tree

4 files changed

+53
-25
lines changed

4 files changed

+53
-25
lines changed

frontend/src/features/lobby/components/Lobby.tsx

+10
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,20 @@ import {
1111
} from '@/shad-cn-ui/components/ui/table';
1212
import { useState } from 'react';
1313
import { useNavigate } from 'react-router-dom';
14+
import { useQuery } from '@tanstack/react-query';
15+
import { fetchUserFn } from '@features/user';
1416

1517
export function Lobby() {
1618
const { chatRooms, isLoading, error } = useChatRoomList();
1719
const navigate = useNavigate();
20+
const { data } = useQuery({
21+
queryKey: ['users'],
22+
queryFn: fetchUserFn,
23+
});
24+
if (data === null) {
25+
// If data is null, then the user is first logging in, redirecting to sign up page
26+
navigate('/signup');
27+
}
1828

1929
const [isModalOpen, setIsModalOpen] = useState<boolean>(false); // Modal State for Create Room
2030

frontend/src/hooks/useSignUp.tsx

+15-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { signUpFn } from '@features/user';
1+
import { fetchUserFn, signUpFn } from '@features/user';
2+
import { queryClient } from '@lib/react-query';
23
import { useMutation } from '@tanstack/react-query';
34
import { useNavigate } from 'react-router-dom';
45

@@ -9,9 +10,19 @@ export const useSignUp = () => {
910
isLoading,
1011
error,
1112
} = useMutation(signUpFn, {
12-
onSuccess: () => {
13-
// Success actions
14-
navigate('/');
13+
onSuccess: async () => {
14+
try {
15+
// Fetch the latest user data after successful sign-up
16+
const userData = await fetchUserFn();
17+
18+
// Update the 'users' query data with the newly fetched user data
19+
queryClient.setQueryData(['users'], userData);
20+
21+
// Navigate to the desired route
22+
navigate('/');
23+
} catch (error) {
24+
console.error('Error during post-sign-up user fetch:', error);
25+
}
1526
},
1627
onError: (error) => {
1728
// Error actions

frontend/src/pages/ChatRoomPage/ChatRoom.tsx

+2-13
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,14 @@
11
import { ChatArea, InputArea, MessageType } from '@features/chat';
2-
import { fetchUserFn } from '@features/user';
3-
4-
import { useQuery } from '@tanstack/react-query';
52
import { useState } from 'react';
6-
import { useNavigate, useParams } from 'react-router-dom';
3+
import { useParams } from 'react-router-dom';
74
import styles from './ChatRoom.module.scss';
85

96
export function ChatRoom() {
107
const [messages, setMessages] = useState<MessageType[]>([]);
11-
const { data } = useQuery({
12-
queryKey: ['users'],
13-
queryFn: fetchUserFn,
14-
});
8+
159
const { id } = useParams(); // id is the chat room ID from the URL
1610
const chatRoomId = id || '';
17-
const navigate = useNavigate();
1811

19-
if (data === null) {
20-
// If data is null, then the user is first logging in, redirecting to sign up page
21-
navigate('/signup');
22-
}
2312
const handleNewMessage = (text: string) => {
2413
const newMessage: MessageType = {
2514
sender: 'sent',

frontend/src/providers/Routes.tsx

+26-8
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,22 @@
1-
import { RouterProvider, createBrowserRouter } from 'react-router-dom';
1+
import {
2+
Navigate,
3+
Outlet,
4+
RouterProvider,
5+
createBrowserRouter,
6+
redirect,
7+
} from 'react-router-dom';
28
import { Root } from '@pages';
39
import { ChatRoom } from '@pages/ChatRoomPage';
410
import { SignUp } from '@pages/SignUpPage';
511
import { RenewLobby } from '@pages/RenewLobbyPage';
12+
import { useUsers } from '@hooks';
13+
14+
const ProtectedRoutes = () => {
15+
const { data: userData, isLoading } = useUsers();
16+
if (isLoading) return null;
17+
18+
return userData ? <Outlet /> : <Navigate to="/signup" />;
19+
};
620

721
export function Routes() {
822
const router = createBrowserRouter([
@@ -11,14 +25,18 @@ export function Routes() {
1125
element: <Root />,
1226
children: [
1327
{
14-
path: '/',
15-
element: <RenewLobby />,
28+
element: <ProtectedRoutes />, // Wrap the children with ProtectedRoute
29+
children: [
30+
{
31+
index: true,
32+
element: <RenewLobby />,
33+
},
34+
{
35+
path: 'chats/:id',
36+
element: <ChatRoom />,
37+
},
38+
],
1639
},
17-
{
18-
path: '/chats/:id',
19-
element: <ChatRoom />,
20-
},
21-
2240
{
2341
path: '/signup',
2442
element: <SignUp />,

0 commit comments

Comments
 (0)