|
1 | 1 | "use client"; |
2 | | -import { useContext, useState } from "react"; |
| 2 | +import { useContext, useEffect, useState } from "react"; |
3 | 3 | import { |
4 | 4 | deleteClassroom, |
5 | 5 | getCurrentUserId, |
@@ -89,65 +89,67 @@ export default function ClassroomList() { |
89 | 89 | setUserAndClassData(refreshedData); |
90 | 90 | } |
91 | 91 | }; |
| 92 | +// useEffect(() => { |
| 93 | +// const joinedClassSuccess = searchParams.get("join_success"); |
| 94 | +// if (joinedClassSuccess && !isNaN(Number(joinedClassSuccess))) { |
| 95 | +// const joinClassInfo = userAndClassData.classroomsData.find( |
| 96 | +// (x) => x.id === Number(joinedClassSuccess) |
| 97 | +// ); |
| 98 | +// if (joinClassInfo) { |
| 99 | +// refreshClassrooms(); |
| 100 | +// toast({ |
| 101 | +// description: ( |
| 102 | +// <div> |
| 103 | +// Successfully joined classroom |
| 104 | +// <span className="font-bold"> {joinClassInfo.name}</span>! |
| 105 | +// </div> |
| 106 | +// ), |
| 107 | +// duration: 10000, |
| 108 | +// }); |
| 109 | +// } |
| 110 | +// } |
92 | 111 |
|
93 | | - const joinedClassSuccess = searchParams.get("join_success"); |
94 | | - if (joinedClassSuccess && !isNaN(Number(joinedClassSuccess))) { |
95 | | - const joinClassInfo = userAndClassData.classroomsData.find( |
96 | | - (x) => x.id === Number(joinedClassSuccess) |
97 | | - ); |
98 | | - if (joinClassInfo) { |
99 | | - toast({ |
100 | | - description: ( |
101 | | - <div> |
102 | | - Successfully joined classroom |
103 | | - <span className="font-bold">{joinClassInfo.name}</span>! |
104 | | - </div> |
105 | | - ), |
106 | | - duration: 10000, |
107 | | - }); |
108 | | - refreshClassrooms(); |
109 | | - } |
110 | | - } |
| 112 | +// const deleteClassSuccess = searchParams.get("delete_success"); |
111 | 113 |
|
112 | | - const deleteClassSuccess = searchParams.get("delete_success"); |
| 114 | +// if (deleteClassSuccess && !isNaN(Number(deleteClassSuccess))) { |
| 115 | +// const deleteClassInfo = userAndClassData.classroomsData.find( |
| 116 | +// (x) => x.id === Number(deleteClassSuccess) |
| 117 | +// ); |
| 118 | +// if (deleteClassInfo) { |
| 119 | +// setUserAndClassData(userAndClassData); |
| 120 | +// // toast({ |
| 121 | +// // description: ( |
| 122 | +// // <div> |
| 123 | +// // Successfully deleted classroom |
| 124 | +// // <span className="font-bold">{deleteClassInfo.name}</span>! |
| 125 | +// // </div> |
| 126 | +// // ), |
| 127 | +// // duration: 10000, |
| 128 | +// // }); |
| 129 | +// } |
| 130 | +// } |
113 | 131 |
|
114 | | - if (deleteClassSuccess && !isNaN(Number(deleteClassSuccess))) { |
115 | | - const deleteClassInfo = userAndClassData.classroomsData.find( |
116 | | - (x) => x.id === Number(deleteClassSuccess) |
117 | | - ); |
118 | | - if (deleteClassInfo) { |
119 | | - toast({ |
120 | | - description: ( |
121 | | - <div> |
122 | | - Successfully deleted classroom |
123 | | - <span className="font-bold">{deleteClassInfo.name}</span>! |
124 | | - </div> |
125 | | - ), |
126 | | - duration: 10000, |
127 | | - }); |
128 | | - refreshClassrooms(); |
129 | | - } |
130 | | - } |
131 | | - |
132 | | - const archiveClassSuccess = searchParams.get("archiveClassSuccess"); |
| 132 | +// const archiveClassSuccess = searchParams.get("archiveClassSuccess"); |
133 | 133 |
|
134 | | - if (archiveClassSuccess && !isNaN(Number(archiveClassSuccess))) { |
135 | | - const archiveClassInfo = userAndClassData.classroomsData.find( |
136 | | - (x) => x.id === Number(archiveClassSuccess) |
137 | | - ); |
138 | | - if (archiveClassInfo) { |
139 | | - toast({ |
140 | | - description: ( |
141 | | - <div> |
142 | | - Successfully archived classroom |
143 | | - <span className="font-bold">{archiveClassInfo.name}</span>! |
144 | | - </div> |
145 | | - ), |
146 | | - duration: 10000, |
147 | | - }); |
148 | | - refreshClassrooms(); |
149 | | - } |
150 | | - } |
| 134 | +// if (archiveClassSuccess && !isNaN(Number(archiveClassSuccess))) { |
| 135 | +// const archiveClassInfo = userAndClassData.classroomsData.find( |
| 136 | +// (x) => x.id === Number(archiveClassSuccess) |
| 137 | +// ); |
| 138 | +// if (archiveClassInfo) { |
| 139 | +// toast({ |
| 140 | +// description: ( |
| 141 | +// <div> |
| 142 | +// Successfully archived classroom |
| 143 | +// <span className="font-bold">{archiveClassInfo.name}</span>! |
| 144 | +// </div> |
| 145 | +// ), |
| 146 | +// duration: 10000, |
| 147 | +// }); |
| 148 | +// refreshClassrooms(); |
| 149 | +// } |
| 150 | +// } |
| 151 | + |
| 152 | +// }, [searchParams]); |
151 | 153 |
|
152 | 154 | function mapToListItem( |
153 | 155 | classroomList: ClassroomWithMembers[], |
@@ -406,11 +408,16 @@ export default function ClassroomList() { |
406 | 408 | (classroom) => classroom.admin_user_id != userId |
407 | 409 | ); |
408 | 410 |
|
409 | | - const addClassroom = async () => { |
| 411 | + const addClassroom = async (classId: number) => { |
410 | 412 | if (newClassName.length != 0) { |
411 | 413 | try { |
412 | | - const userId = await getCurrentUserId(); |
413 | | - const result = await newClassroom(newClassName, userId); |
| 414 | + const result = await optimisticUpdateAndFetchClassroomData( |
| 415 | + classId, |
| 416 | + async () => newClassroom(newClassName, userId), |
| 417 | + { archived: true }, |
| 418 | + setUserAndClassData, |
| 419 | + refreshClassrooms |
| 420 | + ); |
414 | 421 | if (!result) { |
415 | 422 | // setResultText(`Error while making classroom!`); |
416 | 423 | return; |
|
0 commit comments