@@ -5,12 +5,18 @@ import Modal from 'react-modal';
5
5
import { p2p } from '@deriv/api' ;
6
6
import { Button , Text } from '@deriv-com/ui' ;
7
7
import { useDevice } from '../../../hooks' ;
8
+ import { useSwitchTab } from '../../../hooks/useSwitchTab' ;
8
9
import P2PUserIcon from '../../../public/ic-cashier-p2p-user.svg' ;
9
10
import { Input } from '../../Input' ;
10
11
import { customStyles } from '../helpers' ;
11
12
import './NicknameModal.scss' ;
12
13
13
- const NicknameModal = ( ) => {
14
+ type TNicknameModalProps = {
15
+ isModalOpen : boolean | undefined ;
16
+ setIsModalOpen : React . Dispatch < React . SetStateAction < boolean | undefined > > ;
17
+ } ;
18
+
19
+ const NicknameModal = ( { isModalOpen, setIsModalOpen } : TNicknameModalProps ) => {
14
20
const ReactModal = Modal as ComponentType < ReactModal [ 'props' ] > ;
15
21
const {
16
22
control,
@@ -24,14 +30,14 @@ const NicknameModal = () => {
24
30
mode : 'onChange' ,
25
31
} ) ;
26
32
27
- const { error, isError, mutate, reset } = p2p . advertiser . useCreate ( ) ;
33
+ const switchTab = useSwitchTab ( ) ;
34
+ const { error, isError, isSuccess, mutate, reset } = p2p . advertiser . useCreate ( ) ;
28
35
const { isMobile } = useDevice ( ) ;
29
36
const textSize = isMobile ? 'md' : 'sm' ;
30
37
const debouncedReset = debounce ( reset , 3000 ) ;
31
38
32
39
const onSubmit = ( ) => {
33
40
mutate ( { name : getValues ( 'nickname' ) } ) ;
34
- debouncedReset ( ) ;
35
41
} ;
36
42
37
43
const errorMessage = error ?. error ?. message || 'Can only contain letters, numbers, and special characters .-_@.' ;
@@ -42,16 +48,16 @@ const NicknameModal = () => {
42
48
Modal . setAppElement ( '#v2_modal_root' ) ;
43
49
} , [ ] ) ;
44
50
51
+ useEffect ( ( ) => {
52
+ if ( isSuccess ) {
53
+ setIsModalOpen ( false ) ;
54
+ } else if ( isError ) {
55
+ debouncedReset ( ) ;
56
+ }
57
+ } , [ isError , isSuccess ] ) ;
58
+
45
59
return (
46
- < ReactModal
47
- className = 'p2p-v2-nickname-modal'
48
- isOpen = { true }
49
- onRequestClose = { ( ) => {
50
- // Implement return function here
51
- } }
52
- shouldCloseOnOverlayClick
53
- style = { customStyles }
54
- >
60
+ < ReactModal className = 'p2p-v2-nickname-modal' isOpen = { ! ! isModalOpen } style = { customStyles } >
55
61
< form className = 'p2p-v2-nickname-modal__form' onSubmit = { handleSubmit ( onSubmit ) } >
56
62
< P2PUserIcon />
57
63
< Text className = 'p2p-v2-nickname-modal__form-title' weight = 'bold' >
@@ -72,12 +78,21 @@ const NicknameModal = () => {
72
78
Your nickname cannot be changed later.
73
79
</ Text >
74
80
< div className = 'p2p-v2-nickname-modal__form__button-group' >
75
- < Button className = 'p2p-v2-nickname-modal__form__button-group__cancel' size = 'lg' variant = 'outlined' >
81
+ < Button
82
+ className = 'p2p-v2-nickname-modal__form__button-group__cancel'
83
+ onClick = { ( ) => {
84
+ switchTab ( 'buy-sell' ) ;
85
+ setIsModalOpen ( false ) ;
86
+ } }
87
+ size = 'lg'
88
+ type = 'button'
89
+ variant = 'outlined'
90
+ >
76
91
< Text size = { textSize } weight = 'bold' >
77
92
Cancel
78
93
</ Text >
79
94
</ Button >
80
- < Button disabled = { watchNickname === '' || hasError } size = 'lg' >
95
+ < Button disabled = { watchNickname === '' || hasError } size = 'lg' type = 'submit' >
81
96
< Text color = 'white' size = { textSize } weight = 'bold' >
82
97
Confirm
83
98
</ Text >
0 commit comments