diff options
Diffstat (limited to 'frontend/src/hooks/UseMessageLoad.tsx')
| -rw-r--r-- | frontend/src/hooks/UseMessageLoad.tsx | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/frontend/src/hooks/UseMessageLoad.tsx b/frontend/src/hooks/UseMessageLoad.tsx new file mode 100644 index 0000000..defd2b3 --- /dev/null +++ b/frontend/src/hooks/UseMessageLoad.tsx | |||
| @@ -0,0 +1,35 @@ | |||
| 1 | import React, { useState } from 'react'; | ||
| 2 | import MessageDialogLoad from "../components/MessageDialogLoad"; | ||
| 3 | |||
| 4 | const useMessageLoad = () => { | ||
| 5 | const [isOpen, setIsOpen] = useState(false); | ||
| 6 | |||
| 7 | const [title, setTitle] = useState<string>(""); | ||
| 8 | const [resolvePromise, setResolvePromise] = useState<(() => void) | null>(null); | ||
| 9 | |||
| 10 | const messageLoad = (title: string) => { | ||
| 11 | setIsOpen(true); | ||
| 12 | setTitle(title); | ||
| 13 | return new Promise((resolve) => { | ||
| 14 | setResolvePromise(() => resolve); | ||
| 15 | }); | ||
| 16 | }; | ||
| 17 | |||
| 18 | const messageLoadClose = () => { | ||
| 19 | setIsOpen(false); | ||
| 20 | if (resolvePromise) { | ||
| 21 | resolvePromise(); | ||
| 22 | setResolvePromise(null); | ||
| 23 | } | ||
| 24 | }; | ||
| 25 | |||
| 26 | const MessageDialogLoadComponent = isOpen && ( | ||
| 27 | <div className="dialog-container"> | ||
| 28 | <MessageDialogLoad title={title} onClose={messageLoadClose}></MessageDialogLoad> | ||
| 29 | </div> | ||
| 30 | ); | ||
| 31 | |||
| 32 | return { messageLoad, messageLoadClose, MessageDialogLoadComponent }; | ||
| 33 | } | ||
| 34 | |||
| 35 | export default useMessageLoad; | ||