aboutsummaryrefslogtreecommitdiff
path: root/frontend/src/hooks/UseMessage.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/hooks/UseMessage.tsx')
-rw-r--r--frontend/src/hooks/UseMessage.tsx60
1 files changed, 33 insertions, 27 deletions
diff --git a/frontend/src/hooks/UseMessage.tsx b/frontend/src/hooks/UseMessage.tsx
index 97ec746..b639fac 100644
--- a/frontend/src/hooks/UseMessage.tsx
+++ b/frontend/src/hooks/UseMessage.tsx
@@ -1,37 +1,43 @@
1import React, { useState } from 'react'; 1import React, { useState } from "react";
2import MessageDialog from "@components/MessageDialog"; 2import MessageDialog from "@components/MessageDialog";
3 3
4const useMessage = () => { 4const useMessage = () => {
5 const [isOpen, setIsOpen] = useState(false); 5 const [isOpen, setIsOpen] = useState(false);
6 6
7 const [title, setTitle] = useState<string>(""); 7 const [title, setTitle] = useState<string>("");
8 const [subtitle, setSubtitle] = useState<string>(""); 8 const [subtitle, setSubtitle] = useState<string>("");
9 const [resolvePromise, setResolvePromise] = useState<(() => void) | null>(null); 9 const [resolvePromise, setResolvePromise] = useState<(() => void) | null>(
10 null
11 );
10 12
11 const message = (title: string, subtitle: string) => { 13 const message = (title: string, subtitle: string) => {
12 setIsOpen(true); 14 setIsOpen(true);
13 setTitle(title); 15 setTitle(title);
14 setSubtitle(subtitle); 16 setSubtitle(subtitle);
15 return new Promise((resolve) => { 17 return new Promise(resolve => {
16 setResolvePromise(() => resolve); 18 setResolvePromise(() => resolve);
17 }); 19 });
18 }; 20 };
19 21
20 const handleClose = () => { 22 const handleClose = () => {
21 setIsOpen(false); 23 setIsOpen(false);
22 if (resolvePromise) { 24 if (resolvePromise) {
23 resolvePromise(); 25 resolvePromise();
24 setResolvePromise(null); 26 setResolvePromise(null);
25 } 27 }
26 }; 28 };
27 29
28 const MessageDialogComponent = isOpen && ( 30 const MessageDialogComponent = isOpen && (
29 <div className="dialog-container"> 31 <div className="dialog-container">
30 <MessageDialog title={title} subtitle={subtitle} onClose={handleClose}></MessageDialog> 32 <MessageDialog
31 </div> 33 title={title}
32 ); 34 subtitle={subtitle}
35 onClose={handleClose}
36 ></MessageDialog>
37 </div>
38 );
33 39
34 return { message, MessageDialogComponent }; 40 return { message, MessageDialogComponent };
35} 41};
36 42
37export default useMessage; 43export default useMessage;