Skip to content
This repository was archived by the owner on Jun 12, 2025. It is now read-only.

Commit 0427d04

Browse files
authored
Merge pull request #16 from EVOGD-Project:dev
Dev
2 parents e4453de + d880450 commit 0427d04

8 files changed

Lines changed: 31 additions & 29 deletions

File tree

src/app/classes/[id]/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
'use client';
22

3-
import ClassScreen from '@/components/screens/ClassScreen';
3+
import ClassroomScreen from '@/components/screens/ClassroomScreen';
44
import { useParams } from 'next/navigation';
55

66
export default function ClassPage() {
77
const { id } = useParams<{ id: string }>();
8-
return <ClassScreen id={id} />;
8+
return <ClassroomScreen id={id} />;
99
}

src/app/classes/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import ClassesScreen from '@/components/screens/ClassesScreen';
1+
import ClasroomsScreen from '@/components/screens/ClassroomsScreen';
22

33
export default function ClassesPage() {
4-
return <ClassesScreen />;
4+
return <ClasroomsScreen />;
55
}

src/components/providers/AuthProvider.tsx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
'use client';
22

3+
import { api } from '@/api/api';
34
import { authAtom, loadUser } from '@/store/auth';
5+
import { classroomsAtom } from '@/store/classrooms';
46
import { useAtom } from 'jotai';
57
import { useEffect } from 'react';
68

79
export default function AuthProvider({ children }: Readonly<{ children: React.ReactNode }>) {
810
const [auth, setAuth] = useAtom(authAtom);
11+
const [, setClassrooms] = useAtom(classroomsAtom);
912

1013
useEffect(() => {
1114
const initAuth = async () => {
@@ -19,7 +22,19 @@ export default function AuthProvider({ children }: Readonly<{ children: React.Re
1922
};
2023

2124
initAuth();
22-
}, [auth.token, setAuth]);
25+
26+
const fetchClassrooms = async () => {
27+
try {
28+
const data = await api.classroom.getAll();
29+
setClassrooms(data);
30+
} catch (error) {
31+
console.error('Failed to fetch classrooms:', error);
32+
setClassrooms([]);
33+
}
34+
};
35+
36+
fetchClassrooms();
37+
}, [auth.token, setAuth, setClassrooms]);
2338

2439
return <>{children}</>;
2540
}

src/components/screens/ActivityScreen.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ export default function ActivityScreen({
194194
>
195195
{activityTypeInfo[activity.type].label}
196196
</Badge>
197-
<Text color='gray.400'>{classroom.name}</Text>
197+
<Link color='gray.400'>{classroom.name}</Link>
198198
</Flex>
199199
<Heading
200200
as='h1'

src/components/screens/ClassScreen.tsx renamed to src/components/screens/ClassroomScreen.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import { FiCode, FiFileText, FiPlus, FiUsers } from 'react-icons/fi';
3535
import ActivityCard from '../general/ActivityCard';
3636
import CreateActivityModal from '../modals/CreateActivityModal';
3737

38-
export default function ClassScreen({ id }: Readonly<{ id: string }>) {
38+
export default function ClassroomScreen({ id }: Readonly<{ id: string }>) {
3939
const [classroom, setClassroom] = useState<IClassroom | null>(null);
4040
const [isLoading, setIsLoading] = useState(true);
4141
const router = useRouter();

src/components/screens/ClassesScreen.tsx renamed to src/components/screens/ClassroomsScreen.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import ClassroomCard from '../general/ClassroomCard';
2020
import CreateClassModal from '../modals/CreateClassModal';
2121
import JoinClassModal from '../modals/JoinClassModal';
2222

23-
export default function ClassesScreen() {
23+
export default function ClasroomsScreen() {
2424
const { isOpen: isCreateOpen, onOpen: onCreateOpen, onClose: onCreateClose } = useDisclosure();
2525
const { isOpen: isJoinOpen, onOpen: onJoinOpen, onClose: onJoinClose } = useDisclosure();
2626
const [classrooms, setClassrooms] = useState<IClassroom[]>([]);

src/components/screens/IndexScreen.tsx

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,15 @@
11
'use client';
22

3-
import { api } from '@/api/api';
4-
import type { IClassroom } from '@/types/IClassroomCard';
3+
import { classroomsAtom } from '@/store/classrooms';
54
import { Box, Button, Container, Flex, Heading, SimpleGrid, Spinner, Text } from '@chakra-ui/react';
5+
import { useAtom } from 'jotai';
66
import { useRouter } from 'next/navigation';
7-
import { useEffect, useState } from 'react';
87
import { FiBookOpen } from 'react-icons/fi';
98
import ClassroomCard from '../general/ClassroomCard';
109

1110
export default function IndexScreen() {
1211
const router = useRouter();
13-
const [classrooms, setClassrooms] = useState<IClassroom[]>([]);
14-
const [isLoading, setIsLoading] = useState(true);
15-
16-
useEffect(() => {
17-
const fetchClassrooms = async () => {
18-
try {
19-
const data = await api.classroom.getAll();
20-
setClassrooms(data);
21-
} catch (error) {
22-
console.error('Failed to fetch classrooms:', error);
23-
} finally {
24-
setIsLoading(false);
25-
}
26-
};
27-
28-
fetchClassrooms();
29-
}, []);
12+
const [classrooms] = useAtom(classroomsAtom);
3013

3114
return (
3215
<Box as='main' className='animate-fade-in'>
@@ -83,7 +66,7 @@ export default function IndexScreen() {
8366
<Heading size='lg' mb={6}>
8467
Clases Destacadas
8568
</Heading>
86-
{isLoading ? (
69+
{classrooms === null ? (
8770
<Flex h='200px' align='center' justify='center'>
8871
<Spinner size='xl' borderWidth='4px' />
8972
</Flex>

src/store/classrooms.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import type { IClassroom } from '@/types/IClassroomCard';
2+
import { atom } from 'jotai';
3+
4+
export const classroomsAtom = atom<IClassroom[] | null>(null);

0 commit comments

Comments
 (0)