This commit is contained in:
@@ -101,6 +101,25 @@ function App() {
|
||||
const route = useRoute();
|
||||
const { staff, logout } = useAuth();
|
||||
const [sidebarOpen, setSidebarOpen] = useState(false);
|
||||
const [myClasses, setMyClasses] = useState<{ id: number; name: string; code: string }[]>(() => {
|
||||
try {
|
||||
const stored = localStorage.getItem('sc_my_classes_details');
|
||||
return stored ? JSON.parse(stored) : [];
|
||||
} catch {
|
||||
return [];
|
||||
}
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
const handleUpdate = () => {
|
||||
try {
|
||||
const stored = localStorage.getItem('sc_my_classes_details');
|
||||
setMyClasses(stored ? JSON.parse(stored) : []);
|
||||
} catch (e) {}
|
||||
};
|
||||
window.addEventListener('my-classes-updated', handleUpdate);
|
||||
return () => window.removeEventListener('my-classes-updated', handleUpdate);
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
const initial = parseRoute();
|
||||
@@ -219,6 +238,36 @@ function App() {
|
||||
</button>
|
||||
</li>
|
||||
|
||||
{myClasses.length > 0 && (
|
||||
<>
|
||||
<div className="nav-header">Lớp của tôi</div>
|
||||
{myClasses.map((c) => (
|
||||
<li key={c.id} className="nav-item">
|
||||
<button
|
||||
className={navBtn(route.classId === c.id && route.tab === 'learning')}
|
||||
onClick={() => {
|
||||
navigate('learning', c.id, c.name, 'class');
|
||||
setSidebarOpen(false);
|
||||
}}
|
||||
title={c.name}
|
||||
style={{
|
||||
paddingLeft: '1.75rem',
|
||||
fontSize: '0.82rem',
|
||||
overflow: 'hidden',
|
||||
textOverflow: 'ellipsis',
|
||||
whiteSpace: 'nowrap',
|
||||
display: 'block',
|
||||
width: '100%',
|
||||
textAlign: 'left'
|
||||
}}
|
||||
>
|
||||
🏫 {c.code || c.name}
|
||||
</button>
|
||||
</li>
|
||||
))}
|
||||
</>
|
||||
)}
|
||||
|
||||
<div className="nav-header">Công tác sinh viên</div>
|
||||
<li className="nav-item">
|
||||
<button
|
||||
|
||||
Reference in New Issue
Block a user