@@ -14,6 +14,8 @@ import {
14
14
deleteAddress ,
15
15
updateAddress ,
16
16
} from "../../redux/slices/walletSlice" ;
17
+ import CustomSelector from "./CustomSelector" ;
18
+ import shortenAddress from "../../utils/shortenAddress" ;
17
19
18
20
function SettingsPopup ( { onClose, preferredTab, newWallet, walletToEdit } ) {
19
21
const [ activeTab , setActiveTab ] = useState ( preferredTab || "settings" ) ;
@@ -47,134 +49,67 @@ function SettingsPopup({ onClose, preferredTab, newWallet, walletToEdit }) {
47
49
function GeneralSettings ( ) {
48
50
const generalSettings = useSelector ( ( state ) => state . settings ) ;
49
51
const dispatch = useDispatch ( ) ;
52
+
53
+ const handleCurrencyChange = ( e ) => {
54
+ dispatch (
55
+ updateSettings ( {
56
+ currency : e . target . value ,
57
+ timezone : generalSettings . timezone ,
58
+ } )
59
+ ) ;
60
+ }
61
+
62
+ const handleTimezoneChange = ( e ) => {
63
+ dispatch (
64
+ updateSettings ( {
65
+ currency : generalSettings . currency ,
66
+ timezone : e . target . value ,
67
+ } )
68
+ ) ;
69
+ }
50
70
return (
51
71
< div className = "flex flex-col gap-6 md:gap-[45px]" >
52
72
< div className = "flex flex-row gap-2 md:gap-4 items-center" >
53
73
< p className = "flex font-medium text-[16px] md:text-[18px]" > Currency:</ p >
54
- < select
55
- id = "currency"
56
- name = "currency"
57
- className = "flex items-center bg-tychePrimary text-white text-[14px] md:text-[16px] px-4 md:px-6 py-1 h-[40px] md:h-[50px] rounded-full w-fit focus:outline-none focus:ring-tycheGreen focus:border-tycheGreen"
58
- onChange = { ( e ) =>
59
- dispatch (
60
- updateSettings ( {
61
- currency : e . target . value ,
62
- timezone : generalSettings . timezone ,
63
- } )
64
- )
65
- }
66
- >
67
- < option selected = { generalSettings . currency === "USD" } > USD</ option >
68
- < option selected = { generalSettings . currency === "EUR" } > EUR</ option >
69
- < option selected = { generalSettings . currency === "GBP" } > GBP</ option >
70
- </ select >
74
+ < CustomSelector
75
+ items = { [ { USD : "USD" } , { EUR : "EUR" } , { GBP : "GBP" } ] }
76
+ selected = { generalSettings . currency }
77
+ onChange = { handleCurrencyChange }
78
+ />
71
79
</ div >
72
80
< div className = "flex flex-row gap-2 md:gap-4 items-center" >
73
81
< p className = "flex font-medium text-[16px] md:text-[18px] whitespace-nowrap" >
74
82
Timezone:
75
83
</ p >
76
- < select
77
- id = "timezone"
78
- name = "timezone"
79
- className = "flex items-center bg-tychePrimary text-white text-[12px] md:text-[14px] px-2 md:px-4 py-1 h-[40px] md:h-[50px] w-fit max-w-[200px] md:max-w-none rounded-full focus:outline-none focus:ring-tycheGreen focus:border-tycheGreen"
80
- onChange = { ( e ) =>
81
- dispatch (
82
- updateSettings ( {
83
- currency : generalSettings . currency ,
84
- timezone : e . target . value ,
85
- } )
86
- )
87
- }
88
- >
89
- < option
90
- value = "Pacific/Honolulu"
91
- selected = { generalSettings . timezone === "Pacific/Honolulu" }
92
- >
93
- Pacific/Honolulu (HST)
94
- </ option >
95
- < option
96
- value = "America/Anchorage"
97
- selected = { generalSettings . timezone === "America/Anchorage" }
98
- >
99
- America/Anchorage (AKST)
100
- </ option >
101
- < option
102
- value = "America/Los_Angeles"
103
- selected = { generalSettings . timezone === "America/Los_Angeles" }
104
- >
105
- America/Los Angeles (PST)
106
- </ option >
107
- < option
108
- value = "America/Denver"
109
- selected = { generalSettings . timezone === "America/Denver" }
110
- >
111
- America/Denver (MST)
112
- </ option >
113
- < option
114
- value = "America/Chicago"
115
- selected = { generalSettings . timezone === "America/Chicago" }
116
- >
117
- America/Chicago (CST)
118
- </ option >
119
- < option
120
- value = "America/New_York"
121
- selected = { generalSettings . timezone === "America/New_York" }
122
- >
123
- America/New York (EST)
124
- </ option >
125
- < option
126
- value = "Europe/London"
127
- selected = { generalSettings . timezone === "Europe/London" }
128
- >
129
- Europe/London (GMT+0)
130
- </ option >
131
- < option
132
- value = "Europe/Paris"
133
- selected = { generalSettings . timezone === "Europe/Paris" }
134
- >
135
- Europe/Paris (CET)
136
- </ option >
137
- < option
138
- value = "Europe/Berlin"
139
- selected = { generalSettings . timezone === "Europe/Berlin" }
140
- >
141
- Europe/Berlin (CET)
142
- </ option >
143
- < option
144
- value = "Europe/Istanbul"
145
- selected = { generalSettings . timezone === "Europe/Istanbul" }
146
- >
147
- Europe/Istanbul (TRT)
148
- </ option >
149
- < option selected = { generalSettings . timezone === "Europe/Moscow" } >
150
- Europe/Moscow (MSK)
151
- </ option >
152
- < option
153
- value = "Asia/Dubai"
154
- selected = { generalSettings . timezone === "Asia/Dubai" }
155
- >
156
- Asia/Dubai (GST)
157
- </ option >
158
- < option
159
- value = "Asia/Tokyo"
160
- selected = { generalSettings . timezone === "Asia/Tokyo" }
161
- >
162
- Asia/Tokyo (JST)
163
- </ option >
164
- < option
165
- value = "Australia/Sydney"
166
- selected = { generalSettings . timezone === "Australia/Sydney" }
167
- >
168
- Australia/Sydney (AEST)
169
- </ option >
170
- </ select >
84
+ < CustomSelector
85
+ items = { [
86
+ { "Pacific/Honolulu" : "Pacific/Honolulu (HST)" } ,
87
+ { "America/Anchorage" : "America/Anchorage (AKST)" } ,
88
+ { "America/Los_Angeles" : "America/Los Angeles (PST)" } ,
89
+ { "America/Denver" : "America/Denver (MST)" } ,
90
+ { "America/Chicago" : "America/Chicago (CST)" } ,
91
+ { "America/New_York" : "America/New York (EST)" } ,
92
+ { "Europe/London" : "Europe/London (GMT+0)" } ,
93
+ { "Europe/Paris" : "Europe/Paris (CET)" } ,
94
+ { "Europe/Berlin" : "Europe/Berlin (CET)" } ,
95
+ { "Europe/Istanbul" : "Europe/Istanbul (TRT)" } ,
96
+ { "Europe/Moscow" : "Europe/Moscow (MSK)" } ,
97
+ { "Asia/Dubai" : "Asia/Dubai (GST)" } ,
98
+ { "Asia/Tokyo" : "Asia/Tokyo (JST)" } ,
99
+ { "Australia/Sydney" : "Australia/Sydney (AEST)" } ,
100
+ ] }
101
+ selected = { generalSettings . timezone }
102
+ onChange = { handleTimezoneChange }
103
+ />
171
104
</ div >
172
105
</ div >
173
106
) ;
174
107
}
175
108
109
+
110
+
176
111
function SavedWallets ( { newWallet, walletToEdit, onClose } ) {
177
- const networks = getSupportedNetworks ( ) ;
112
+ const networks = [ "All Networks" , ... getSupportedNetworks ( ) ] ;
178
113
const [ selectedNetwork , setSelectedNetwork ] = useState ( "All Networks" ) ;
179
114
const [ saveWalletButtonClicked , setSaveWalletButtonClicked ] = useState ( false ) ;
180
115
const [ editWalletId , setEditWalletId ] = useState ( null ) ;
@@ -228,38 +163,32 @@ function SavedWallets({ newWallet, walletToEdit, onClose }) {
228
163
< >
229
164
< div className = "flex flex-col h-full" >
230
165
{ /* Network selector */ }
231
- < select
232
- id = "currency"
233
- name = "currency"
234
- className = "flex items-center bg-tychePrimary text-white text-[16px] md:text-[20px] py-[13px] w-fit px-[20px] h-[50px] rounded-full focus:outline-none focus:ring-tycheGreen focus:border-tycheGreen mb-4"
166
+ < CustomSelector
235
167
onChange = { handleNetworkChange }
236
- >
237
- < option > All Networks</ option >
238
- { networks . map ( ( network ) => (
239
- < option key = { network } value = { network } >
240
- { network }
241
- </ option >
242
- ) ) }
243
- </ select >
244
-
168
+ items = { networks . map ( ( network ) => ( { [ network ] : network } ) ) }
169
+ selected = { selectedNetwork }
170
+ />
245
171
{ /* Table header and content */ }
246
- < div className = "flex flex-col flex-grow min-h-0" >
247
- { addresses . length === 0 ? (
172
+ < div className = "flex flex-col flex-grow min-h-0 mt-4" >
173
+ { addresses . filter (
174
+ ( wallet ) =>
175
+ selectedNetwork === "All Networks" || wallet . network === selectedNetwork
176
+ ) . length === 0 ? (
248
177
< p className = "flex font-bold text-[16px] md:text-[20px] w-full justify-center" >
249
178
There is no saved address!
250
179
</ p >
251
180
) : (
252
181
< div className = "hidden md:flex flex-row gap-4 items-center w-full px-6 mb-4" >
253
- < p className = "flex font-bold text-[16px] md:text-[18px] w-[200px] " >
182
+ < p className = "flex font-bold text-[16px] md:text-[18px] w-full " >
254
183
Address
255
184
</ p >
256
- < p className = "flex font-bold text-[16px] md:text-[18px] w-[200px] " >
185
+ < p className = "flex font-bold text-[16px] md:text-[18px] w-full " >
257
186
Tag
258
187
</ p >
259
- < p className = "flex font-bold text-[16px] md:text-[18px] w-[200px] " >
188
+ < p className = "flex font-bold text-[16px] md:text-[18px] w-full " >
260
189
Network
261
190
</ p >
262
- < p className = "flex font-bold text-[16px] md:text-[18px] w-[100px] justify-end" >
191
+ < p className = "flex font-bold text-[16px] md:text-[18px] w-full justify-end" >
263
192
Operations
264
193
</ p >
265
194
</ div >
@@ -287,19 +216,19 @@ function SavedWallets({ newWallet, walletToEdit, onClose }) {
287
216
key = { index }
288
217
className = "flex flex-col md:flex-row gap-3 items-start md:items-center w-full rounded-[25px] p-4 md:px-6 bg-white"
289
218
>
290
- < div className = "flex flex-col w-full md:w-[200px] " >
219
+ < div className = "flex flex-col w-full" >
291
220
< span className = "text-[14px] font-bold md:hidden" >
292
221
Address:
293
222
</ span >
294
223
< span
295
224
className = "text-[14px] md:text-[16px] text-tycheDarkBlue break-words md:truncate cursor-pointer hover:underline"
296
225
onClick = { handleAddressClick ( wallet ) }
297
226
>
298
- { wallet . address }
227
+ { shortenAddress ( wallet . address ) }
299
228
</ span >
300
229
</ div >
301
230
302
- < div className = "flex flex-col w-full md:w-[200px] " >
231
+ < div className = "flex flex-col w-full" >
303
232
< span className = "text-[14px] font-bold md:hidden" >
304
233
Tag:
305
234
</ span >
@@ -308,7 +237,7 @@ function SavedWallets({ newWallet, walletToEdit, onClose }) {
308
237
</ span >
309
238
</ div >
310
239
311
- < div className = "flex flex-col w-full md:w-[200px] " >
240
+ < div className = "flex flex-col w-full" >
312
241
< span className = "text-[14px] font-bold md:hidden" >
313
242
Network:
314
243
</ span >
@@ -317,15 +246,15 @@ function SavedWallets({ newWallet, walletToEdit, onClose }) {
317
246
</ span >
318
247
</ div >
319
248
320
- < div className = "flex flex-row gap-4 w-full md:w-[100px] justify-end md:justify-end mt-2 md:mt-0" >
249
+ < div className = "flex flex-row gap-4 w-full justify-end md:justify-end mt-2 md:mt-0" >
321
250
< button
322
251
className = "p-2 hover:bg-gray-100 rounded-full"
323
252
onClick = { ( ) => handleEditWallet ( wallet ) }
324
253
>
325
254
< img
326
255
src = { tagEditIcon }
327
256
alt = "Edit"
328
- className = "w-5 h-5 md:w-6 md:h-6"
257
+ className = "max- w-5 max- h-5 min-w-5 min-h-5 md:max- w-6 md:max-h-6 md:min-w-6 md:min- h-6"
329
258
/>
330
259
</ button >
331
260
< button
@@ -335,7 +264,7 @@ function SavedWallets({ newWallet, walletToEdit, onClose }) {
335
264
< img
336
265
src = { tagDeleteIcon }
337
266
alt = "Delete"
338
- className = "w-5 h-5 md:w-6 md:h-6"
267
+ className = "max- w-5 max- h-5 min-w-5 min-h-5 md:max- w-6 md:max-h-6 md:min-w-6 md:min- h-6"
339
268
/>
340
269
</ button >
341
270
</ div >
@@ -512,7 +441,7 @@ function AddOrEditWallet({ wallet, onSave, onCancel }) {
512
441
< img
513
442
src = { tagConfirmIcon }
514
443
alt = "Confirm"
515
- className = "w-5 h-5 md:w-6 md:h-6"
444
+ className = "max- w-5 max- h-5 min-w-5 min-h-5 md:max- w-6 md:max-h-6 md:min-w-6 md:min- h-6"
516
445
/>
517
446
</ button >
518
447
< button
@@ -522,7 +451,7 @@ function AddOrEditWallet({ wallet, onSave, onCancel }) {
522
451
< img
523
452
src = { tagCancelIcon }
524
453
alt = "Cancel"
525
- className = "w-5 h-5 md:w-6 md:h-6"
454
+ className = "max- w-5 max- h-5 min-w-5 min-h-5 md:max- w-6 md:max-h-6 md:min-w-6 md:min- h-6"
526
455
/>
527
456
</ button >
528
457
</ div >
0 commit comments