mirror of
https://github.com/lordmathis/lemma.git
synced 2025-11-08 00:44:22 +00:00
Migrate ModalContext and WorkspaceContext
This commit is contained in:
62
app/src/contexts/ModalContext.tsx
Normal file
62
app/src/contexts/ModalContext.tsx
Normal file
@@ -0,0 +1,62 @@
|
||||
import React, { createContext, useContext, useState, ReactNode } from 'react';
|
||||
|
||||
interface ModalContextType {
|
||||
newFileModalVisible: boolean;
|
||||
setNewFileModalVisible: React.Dispatch<React.SetStateAction<boolean>>;
|
||||
deleteFileModalVisible: boolean;
|
||||
setDeleteFileModalVisible: React.Dispatch<React.SetStateAction<boolean>>;
|
||||
commitMessageModalVisible: boolean;
|
||||
setCommitMessageModalVisible: React.Dispatch<React.SetStateAction<boolean>>;
|
||||
settingsModalVisible: boolean;
|
||||
setSettingsModalVisible: React.Dispatch<React.SetStateAction<boolean>>;
|
||||
switchWorkspaceModalVisible: boolean;
|
||||
setSwitchWorkspaceModalVisible: React.Dispatch<React.SetStateAction<boolean>>;
|
||||
createWorkspaceModalVisible: boolean;
|
||||
setCreateWorkspaceModalVisible: React.Dispatch<React.SetStateAction<boolean>>;
|
||||
}
|
||||
|
||||
// Create the context with a default undefined value
|
||||
const ModalContext = createContext<ModalContextType | null>(null);
|
||||
|
||||
interface ModalProviderProps {
|
||||
children: ReactNode;
|
||||
}
|
||||
|
||||
export const ModalProvider: React.FC<ModalProviderProps> = ({ children }) => {
|
||||
const [newFileModalVisible, setNewFileModalVisible] = useState(false);
|
||||
const [deleteFileModalVisible, setDeleteFileModalVisible] = useState(false);
|
||||
const [commitMessageModalVisible, setCommitMessageModalVisible] =
|
||||
useState(false);
|
||||
const [settingsModalVisible, setSettingsModalVisible] = useState(false);
|
||||
const [switchWorkspaceModalVisible, setSwitchWorkspaceModalVisible] =
|
||||
useState(false);
|
||||
const [createWorkspaceModalVisible, setCreateWorkspaceModalVisible] =
|
||||
useState(false);
|
||||
|
||||
const value: ModalContextType = {
|
||||
newFileModalVisible,
|
||||
setNewFileModalVisible,
|
||||
deleteFileModalVisible,
|
||||
setDeleteFileModalVisible,
|
||||
commitMessageModalVisible,
|
||||
setCommitMessageModalVisible,
|
||||
settingsModalVisible,
|
||||
setSettingsModalVisible,
|
||||
switchWorkspaceModalVisible,
|
||||
setSwitchWorkspaceModalVisible,
|
||||
createWorkspaceModalVisible,
|
||||
setCreateWorkspaceModalVisible,
|
||||
};
|
||||
|
||||
return (
|
||||
<ModalContext.Provider value={value}>{children}</ModalContext.Provider>
|
||||
);
|
||||
};
|
||||
|
||||
export const useModalContext = (): ModalContextType => {
|
||||
const context = useContext(ModalContext);
|
||||
if (context === null) {
|
||||
throw new Error('useModalContext must be used within a ModalProvider');
|
||||
}
|
||||
return context;
|
||||
};
|
||||
Reference in New Issue
Block a user