@@ -2,17 +2,13 @@ import { createContext, useEffect, useState } from 'react'
22import { useLocation } from 'react-router-dom'
33
44interface ModalContextType {
5- settingsOpen : boolean
6- setSettingsOpen : ( value : boolean ) => void
7- shortcutsEditorOpen : boolean
8- setShortcutsEditorOpen : ( value : boolean ) => void
5+ openModals : string [ ]
6+ setModalOpen : ( modalName : string , value : boolean ) => void
97}
108
119const ModalContext = createContext < ModalContextType > ( {
12- settingsOpen : false ,
13- setSettingsOpen : ( ) => { } ,
14- shortcutsEditorOpen : false ,
15- setShortcutsEditorOpen : ( ) => { }
10+ openModals : [ ] ,
11+ setModalOpen : ( ) => { }
1612} )
1713
1814interface ModalContextProviderProps {
@@ -21,41 +17,24 @@ interface ModalContextProviderProps {
2117
2218const ModalContextProvider = ( { children } : ModalContextProviderProps ) => {
2319 const location = useLocation ( )
24- const [ settingsOpen , _setSettingsOpen ] = useState ( false )
25- const [ shortcutsEditorOpen , _setShortcutsEditorOpen ] = useState ( false )
20+ const [ openModals , setOpenModals ] = useState < string [ ] > ( [ ] )
2621
27- function setSettingsOpen ( value : boolean ) {
28- if ( value ) {
29- _setShortcutsEditorOpen ( false )
30- _setSettingsOpen ( true )
31- } else {
32- _setSettingsOpen ( false )
33- }
34- }
35-
36- function setShortcutsEditorOpen ( value : boolean ) {
37- if ( value ) {
38- _setSettingsOpen ( false )
39- _setShortcutsEditorOpen ( true )
40- } else {
41- _setShortcutsEditorOpen ( false )
42- }
22+ const setModalOpen = ( modalName : string , value : boolean ) => {
23+ setOpenModals ( prev => {
24+ if ( value ) return [ modalName ]
25+ else return prev . filter ( modal => modal !== modalName )
26+ } )
4327 }
4428
4529 useEffect ( ( ) => {
46- if ( settingsOpen || shortcutsEditorOpen ) {
47- _setSettingsOpen ( false )
48- _setShortcutsEditorOpen ( false )
49- }
30+ setOpenModals ( [ ] )
5031 } , [ location . pathname ] )
5132
5233 return (
5334 < ModalContext . Provider
5435 value = { {
55- settingsOpen,
56- setSettingsOpen,
57- shortcutsEditorOpen,
58- setShortcutsEditorOpen
36+ openModals,
37+ setModalOpen
5938 } }
6039 >
6140 { children }
0 commit comments