1
- import React from 'react' ;
1
+ import React , { useCallback , useState } from 'react' ;
2
2
import { observer } from 'mobx-react-lite' ;
3
3
import styled from '@emotion/styled' ;
4
4
import nodeConnectSvg from 'assets/images/lightning-node-connect.svg' ;
5
5
import { usePrefixedTranslation } from 'hooks' ;
6
6
import { useStore } from 'store' ;
7
- import { Copy } from 'components/base' ;
7
+ import { BoltOutlined , Copy , DisplayLarge , QRCode } from 'components/base' ;
8
8
import AddSession from './AddSession' ;
9
9
import PurpleButton from './PurpleButton' ;
10
+ import QRCodeModal from './QRCodeModal' ;
10
11
import SessionList from './SessionList' ;
11
12
12
13
const Styled = {
13
14
Wrapper : styled . section `
14
15
padding-top: 80px;
15
16
` ,
16
- DisplayLarge : styled . div `
17
- font-family: ${ props => props . theme . fonts . open . semiBold } ;
18
- font-size: 32px;
19
- line-height: 40px;
20
- margin-top: 32px;
21
- margin-bottom: 16px;
22
- ` ,
23
17
Description : styled . div `
24
18
margin-bottom: 32px;
25
19
` ,
20
+ Actions : styled . div `
21
+ > a,
22
+ > button {
23
+ margin-right: 16px;
24
+ }
25
+ ` ,
26
26
Divider : styled . div `
27
27
max-width: 640px;
28
28
border: 1px solid #384770;
@@ -32,29 +32,49 @@ const Styled = {
32
32
33
33
const ConnectPage : React . FC = ( ) => {
34
34
const { l } = usePrefixedTranslation ( 'cmps.connect.ConnectPage' ) ;
35
+ const [ showQR , setShowQR ] = useState ( false ) ;
35
36
const { sessionStore } = useStore ( ) ;
36
37
37
- const { Wrapper, DisplayLarge, Description, Divider } = Styled ;
38
+ const toggleQRModal = useCallback ( ( ) => setShowQR ( v => ! v ) , [ ] ) ;
39
+
40
+ const { Wrapper, Description, Actions, Divider } = Styled ;
38
41
return ! sessionStore . hasMultiple ? (
39
42
< Wrapper >
40
43
< img src = { nodeConnectSvg } alt = { l ( 'pageTitle' ) } />
41
- < DisplayLarge > { l ( 'pageTitle' ) } </ DisplayLarge >
44
+ < DisplayLarge space = { 16 } > { l ( 'pageTitle' ) } </ DisplayLarge >
42
45
< Description >
43
46
{ l ( 'description1' ) }
44
47
< br />
45
48
{ l ( 'description2' ) }
46
49
</ Description >
47
- < PurpleButton onClick = { sessionStore . copyFirstPhrase } >
48
- < Copy />
49
- { l ( 'copyPhraseLabel' ) }
50
- </ PurpleButton >
50
+ < Actions >
51
+ < a href = { sessionStore . firstSessionTerminalUrl } target = "_blank" rel = "noreferrer" >
52
+ < PurpleButton >
53
+ < BoltOutlined />
54
+ { l ( 'connectTerminalBtn' ) }
55
+ </ PurpleButton >
56
+ </ a >
57
+ < PurpleButton secondary onClick = { sessionStore . copyFirstPhrase } >
58
+ < Copy />
59
+ { l ( 'copyPhraseBtn' ) }
60
+ </ PurpleButton >
61
+ < PurpleButton secondary onClick = { toggleQRModal } >
62
+ < QRCode />
63
+ { l ( 'generateQrBtn' ) }
64
+ </ PurpleButton >
65
+ < QRCodeModal
66
+ url = { sessionStore . firstSessionTerminalUrl }
67
+ visible = { showQR }
68
+ onClose = { toggleQRModal }
69
+ />
70
+ </ Actions >
51
71
< Divider />
52
72
< Description > { l ( 'addlDesc' ) } </ Description >
53
73
< AddSession />
54
74
</ Wrapper >
55
75
) : (
56
76
< Wrapper >
57
- < DisplayLarge > { l ( 'pageTitle' ) } </ DisplayLarge >
77
+ < DisplayLarge space = { 16 } > { l ( 'pageTitle' ) } </ DisplayLarge >
58
78
< Description > { l ( 'description1' ) } </ Description >
59
79
< AddSession primary />
60
80
< SessionList />
0 commit comments