fix random
All checks were successful
Deploy on Master Change / deploy (push) Successful in 1m17s

This commit is contained in:
2026-07-13 10:29:34 +07:00
parent 0583c7869a
commit 06f2edb195
11 changed files with 476 additions and 71 deletions

View File

@@ -8,6 +8,7 @@ import {
apiFetchClassSessionLogs,
apiFetchClasses,
apiFetchScheduleConflicts,
apiMyClasses,
} from '../api';
import { DEFAULT_ALLOWED_APPS } from '../constants';
import type {
@@ -40,32 +41,29 @@ export const LearningTab: React.FC = () => {
const [dayFilter, setDayFilter] = useState<number | null>(null);
const [viewMode, setViewMode] = useState<ViewMode>('list');
const [onlyMyClasses, setOnlyMyClasses] = useState<boolean>(false);
const [myClasses, setMyClasses] = useState<number[]>(() => {
try {
const stored = localStorage.getItem('sc_my_classes_details');
const list = stored ? JSON.parse(stored) : [];
return Array.isArray(list) ? list.map((item: any) => item.id) : [];
} catch {
return [];
}
});
const [myClasses, setMyClasses] = useState<number[]>([]);
const toggleMyClass = (classId: number, name: string, code: string) => {
let list: any[] = [];
try {
const stored = localStorage.getItem('sc_my_classes_details');
list = stored ? JSON.parse(stored) : [];
} catch (e) {}
const refreshMyClasses = () => {
apiMyClasses.list().then((items) => {
setMyClasses(items.map((c) => c.rkId));
}).catch(() => {});
};
const exists = list.some(item => item.id === classId);
let nextList;
if (exists) {
nextList = list.filter(item => item.id !== classId);
useEffect(() => {
refreshMyClasses();
window.addEventListener('my-classes-updated', refreshMyClasses);
return () => window.removeEventListener('my-classes-updated', refreshMyClasses);
}, []);
const toggleMyClass = (classId: number, _name: string, _code: string) => {
const isMyClass = myClasses.includes(classId);
if (isMyClass) {
setMyClasses((prev) => prev.filter((id) => id !== classId));
apiMyClasses.remove(classId).catch(() => {});
} else {
nextList = [...list, { id: classId, name, code }];
setMyClasses((prev) => [...prev, classId]);
apiMyClasses.add(classId).catch(() => {});
}
localStorage.setItem('sc_my_classes_details', JSON.stringify(nextList));
setMyClasses(nextList.map(item => item.id));
window.dispatchEvent(new Event('my-classes-updated'));
};