@@ -2,9 +2,10 @@ import { useMemo, useState } from 'react';
2
2
import { useLocation } from 'react-router-dom' ;
3
3
4
4
import { WalletKeyring } from '@/shared/types' ;
5
- import { Button , Column , Content , Header , Input , Layout } from '@/ui/components' ;
5
+ import { Button , Column , Content , Header , Layout } from '@/ui/components' ;
6
6
import { useAppDispatch } from '@/ui/state/hooks' ;
7
7
import { keyringsActions } from '@/ui/state/keyrings/reducer' ;
8
+ import { colors } from '@/ui/theme/colors' ;
8
9
import { useWallet } from '@/ui/utils' ;
9
10
10
11
export default function EditWalletNameScreen ( ) {
@@ -14,16 +15,16 @@ export default function EditWalletNameScreen() {
14
15
} ;
15
16
16
17
const wallet = useWallet ( ) ;
17
- const [ alianName , setAlianName ] = useState ( '' ) ;
18
+ const [ alianName , setAlianName ] = useState ( keyring . alianName || '' ) ;
18
19
const dispatch = useAppDispatch ( ) ;
19
20
const handleOnClick = async ( ) => {
20
21
const newKeyring = await wallet . setKeyringAlianName ( keyring , alianName || keyring . alianName ) ;
21
22
dispatch ( keyringsActions . updateKeyringName ( newKeyring ) ) ;
22
23
window . history . go ( - 1 ) ;
23
24
} ;
24
25
25
- const handleOnKeyUp = ( e : React . KeyboardEvent < HTMLInputElement > ) => {
26
- if ( 'Enter' == e . key ) {
26
+ const handleOnKeyUp = ( e : React . KeyboardEvent < HTMLTextAreaElement > ) => {
27
+ if ( 'Enter' == e . key && e . ctrlKey ) {
27
28
handleOnClick ( ) ;
28
29
}
29
30
} ;
@@ -35,25 +36,67 @@ export default function EditWalletNameScreen() {
35
36
return true ;
36
37
} , [ alianName ] ) ;
37
38
39
+ const calculateRows = useMemo ( ( ) => {
40
+ return Math . min ( 5 , Math . max ( 1 , Math . ceil ( alianName . length / 40 ) ) ) ;
41
+ } , [ alianName ] ) ;
42
+
43
+ const truncatedTitle = useMemo ( ( ) => {
44
+ if ( keyring . alianName . length > 20 ) {
45
+ return keyring . alianName . slice ( 0 , 20 ) + '...' ;
46
+ }
47
+ return keyring . alianName ;
48
+ } , [ keyring . alianName ] ) ;
49
+
38
50
return (
39
51
< Layout >
40
- < Header
41
- onBack = { ( ) => {
42
- window . history . go ( - 1 ) ;
43
- } }
44
- title = { keyring . alianName }
45
- />
52
+ < div style = { { position : 'relative' } } >
53
+ < Header
54
+ onBack = { ( ) => {
55
+ window . history . go ( - 1 ) ;
56
+ } }
57
+ title = { truncatedTitle }
58
+ />
59
+ </ div >
46
60
< Content >
47
61
< Column gap = "lg" >
48
- < Input
49
- placeholder = { keyring . alianName }
50
- onChange = { ( e ) => {
51
- setAlianName ( e . target . value ) ;
52
- } }
53
- defaultValue = { keyring . alianName }
54
- onKeyUp = { ( e ) => handleOnKeyUp ( e ) }
55
- autoFocus = { true }
56
- />
62
+ < div
63
+ style = { {
64
+ display : 'flex' ,
65
+ flexDirection : 'row' ,
66
+ alignItems : 'center' ,
67
+ backgroundColor : colors . black ,
68
+ paddingLeft : 15.2 ,
69
+ paddingRight : 15.2 ,
70
+ borderRadius : 10 ,
71
+ borderWidth : 1 ,
72
+ borderColor : colors . line2
73
+ } } >
74
+ < textarea
75
+ placeholder = { keyring . alianName }
76
+ onChange = { ( e ) => {
77
+ setAlianName ( e . target . value ) ;
78
+ } }
79
+ value = { alianName }
80
+ onKeyUp = { handleOnKeyUp }
81
+ autoFocus = { true }
82
+ rows = { calculateRows }
83
+ style = { {
84
+ display : 'flex' ,
85
+ flex : 1 ,
86
+ borderWidth : 0 ,
87
+ outlineWidth : 0 ,
88
+ backgroundColor : 'rgba(0,0,0,0)' ,
89
+ alignSelf : 'stretch' ,
90
+ padding : '11px 0' ,
91
+ overflowWrap : 'break-word' ,
92
+ wordWrap : 'break-word' ,
93
+ wordBreak : 'break-all' ,
94
+ whiteSpace : 'pre-wrap' ,
95
+ resize : 'none' ,
96
+ lineHeight : '22px'
97
+ } }
98
+ />
99
+ </ div >
57
100
< Button
58
101
disabled = { ! isValidName }
59
102
text = "Change Wallet Name"
0 commit comments