v0.9.46 Add event scheduler

This commit is contained in:
2026-03-17 09:48:09 -04:00
parent 3c62782a8d
commit fed5e75122
10 changed files with 1293 additions and 7 deletions

View File

@@ -15,6 +15,7 @@ import AboutModal from '../components/AboutModal.jsx';
import HelpModal from '../components/HelpModal.jsx';
import NavDrawer from '../components/NavDrawer.jsx';
import GroupManagerModal from '../components/GroupManagerModal.jsx';
import ScheduleManagerModal from '../components/ScheduleManagerModal.jsx';
import './Chat.css';
function urlBase64ToUint8Array(base64String) {
@@ -36,7 +37,7 @@ export default function Chat() {
const [activeGroupId, setActiveGroupId] = useState(null);
const [notifications, setNotifications] = useState([]);
const [unreadGroups, setUnreadGroups] = useState(new Map());
const [modal, setModal] = useState(null); // 'profile' | 'users' | 'settings' | 'newchat' | 'help' | 'groupmanager'
const [modal, setModal] = useState(null); // 'profile' | 'users' | 'settings' | 'newchat' | 'help' | 'groupmanager' | 'schedulemanager'
const [drawerOpen, setDrawerOpen] = useState(false);
const [features, setFeatures] = useState({ branding: false, groupManager: false, scheduleManager: false, appType: 'JAMA-Chat', teamToolManagers: [] });
const [helpDismissed, setHelpDismissed] = useState(true); // true until status loaded
@@ -371,6 +372,7 @@ export default function Chat() {
onClose={() => setDrawerOpen(false)}
onMessages={() => { setDrawerOpen(false); }}
onGroupManager={() => { setDrawerOpen(false); setModal('groupmanager'); }}
onScheduleManager={() => { setDrawerOpen(false); setModal('schedulemanager'); }}
onBranding={() => { setDrawerOpen(false); setModal('branding'); }}
onSettings={() => { setDrawerOpen(false); setModal('settings'); }}
onUsers={() => { setDrawerOpen(false); setModal('users'); }}
@@ -381,6 +383,12 @@ export default function Chat() {
{modal === 'settings' && <SettingsModal onClose={() => setModal(null)} onFeaturesChanged={setFeatures} />}
{modal === 'branding' && <BrandingModal onClose={() => setModal(null)} />}
{modal === 'groupmanager' && <GroupManagerModal onClose={() => setModal(null)} />}
{modal === 'schedulemanager' && (
<ScheduleManagerModal
onClose={() => setModal(null)}
isToolManager={user?.role === 'admin' || (features.teamToolManagers || []).some(gid => (features.userGroupMemberships || []).includes(gid))}
/>
)}
{modal === 'newchat' && <NewChatModal onClose={() => setModal(null)} onCreated={(g) => { loadGroups(); setModal(null); setActiveGroupId(g.id); }} />}
{modal === 'about' && <AboutModal onClose={() => setModal(null)} />}
{modal === 'help' && <HelpModal onClose={() => setModal(null)} dismissed={helpDismissed} />}