better code
Massimo Melina committed
Mar 5, 2025 at 22:30 UTC
4d2f455ae4f51e8190cd9ec95f244d467ee40a40
3 files changed
+157
-161
admin/src/InternetPage.ts
+1
-4
@@ -115,10 +115,7 @@ export default function InternetPage({ setTitleSide }: PageProps) {
115
}
116
117
function geoBox() {
118
- const countryOptions = useMemo(() => _.sortBy(COUNTRIES, 'name').map(x => ({
119
- value: x.code,
120
- label: x.name,
121
- })), [COUNTRIES])
118
+ const countryOptions = useMemo(() => COUNTRIES.map(x => ({ value: x.code, label: x.name })), [COUNTRIES])
119
return h(TitleCard, { title: "Geo IP", icon: Public },
120
h(ConfigForm<{
121
[CFG.geo_enable]: boolean
admin/src/countries.ts
+151
-151
@@ -1,258 +1,258 @@
1
-export const ALL = `🇦🇨|AC|Ascension Island
2
-🇦🇩|AD|Andorra
3
-🇦🇪|AE|United Arab Emirates
4
-🇦🇫|AF|Afghanistan
5
-🇦🇬|AG|Antigua & Barbuda
6
-🇦🇮|AI|Anguilla
1
+export const ALL = `🇦🇫|AF|Afghanistan
2
+🇦🇽|AX|Åland Islands
3
🇦🇱|AL|Albania
8
-🇦🇲|AM|Armenia
4
+🇩🇿|DZ|Algeria
5
+🇦🇸|AS|American Samoa
6
+🇦🇩|AD|Andorra
7
🇦🇴|AO|Angola
8
+🇦🇮|AI|Anguilla
9
🇦🇶|AQ|Antarctica
10
+🇦🇬|AG|Antigua & Barbuda
11
🇦🇷|AR|Argentina
12
-🇦🇸|AS|American Samoa
13
-🇦🇹|AT|Austria
14
-🇦🇺|AU|Australia
12
+🇦🇲|AM|Armenia
13
🇦🇼|AW|Aruba
16
-🇦🇽|AX|Åland Islands
14
+🇦🇨|AC|Ascension Island
15
+🇦🇺|AU|Australia
16
+🇦🇹|AT|Austria
17
🇦🇿|AZ|Azerbaijan
18
-🇧🇦|BA|Bosnia & Herzegovina
19
-🇧🇧|BB|Barbados
18
+🇧🇸|BS|Bahamas
19
+🇧🇭|BH|Bahrain
20
🇧🇩|BD|Bangladesh
21
+🇧🇧|BB|Barbados
22
+🇧🇾|BY|Belarus
23
🇧🇪|BE|Belgium
22
-🇧🇫|BF|Burkina Faso
23
-🇧🇬|BG|Bulgaria
24
-🇧🇭|BH|Bahrain
25
-🇧🇮|BI|Burundi
24
+🇧🇿|BZ|Belize
25
🇧🇯|BJ|Benin
27
-🇧🇱|BL|St. Barthélemy
26
🇧🇲|BM|Bermuda
29
-🇧🇳|BN|Brunei
30
-🇧🇴|BO|Bolivia
31
-🇧🇶|BQ|Caribbean Netherlands
32
-🇧🇷|BR|Brazil
33
-🇧🇸|BS|Bahamas
27
🇧🇹|BT|Bhutan
35
-🇧🇻|BV|Bouvet Island
28
+🇧🇴|BO|Bolivia
29
+🇧🇦|BA|Bosnia & Herzegovina
30
🇧🇼|BW|Botswana
37
-🇧🇾|BY|Belarus
38
-🇧🇿|BZ|Belize
31
+🇧🇻|BV|Bouvet Island
32
+🇧🇷|BR|Brazil
33
+🇮🇴|IO|British Indian Ocean Territory
34
+🇻🇬|VG|British Virgin Islands
35
+🇧🇳|BN|Brunei
36
+🇧🇬|BG|Bulgaria
37
+🇧🇫|BF|Burkina Faso
38
+🇧🇮|BI|Burundi
39
+🇰🇭|KH|Cambodia
40
+🇨🇲|CM|Cameroon
41
🇨🇦|CA|Canada
40
-🇨🇨|CC|Cocos (Keeling) Islands
41
-🇨🇩|CD|Congo - Kinshasa
42
+🇮🇨|IC|Canary Islands
43
+🇨🇻|CV|Cape Verde
44
+🇧🇶|BQ|Caribbean Netherlands
45
+🇰🇾|KY|Cayman Islands
46
🇨🇫|CF|Central African Republic
43
-🇨🇬|CG|Congo - Brazzaville
44
-🇨🇭|CH|Switzerland
45
-🇨🇮|CI|Côte d'Ivoire
46
-🇨🇰|CK|Cook Islands
47
+🇪🇦|EA|Ceuta & Melilla
48
+🇹🇩|TD|Chad
49
🇨🇱|CL|Chile
48
-🇨🇲|CM|Cameroon
50
🇨🇳|CN|China
50
-🇨🇴|CO|Colombia
51
+🇨🇽|CX|Christmas Island
52
🇨🇵|CP|Clipperton Island
53
+🇨🇨|CC|Cocos (Keeling) Islands
54
+🇨🇴|CO|Colombia
55
+🇰🇲|KM|Comoros
56
+🇨🇬|CG|Congo - Brazzaville
57
+🇨🇩|CD|Congo - Kinshasa
58
+🇨🇰|CK|Cook Islands
59
🇨🇷|CR|Costa Rica
60
+🇨🇮|CI|Côte d'Ivoire
61
+🇭🇷|HR|Croatia
62
🇨🇺|CU|Cuba
54
-🇨🇻|CV|Cape Verde
63
🇨🇼|CW|Curaçao
56
-🇨🇽|CX|Christmas Island
64
🇨🇾|CY|Cyprus
65
🇨🇿|CZ|Czechia
59
-🇩🇪|DE|Germany
66
+🇩🇰|DK|Denmark
67
🇩🇬|DG|Diego Garcia
68
🇩🇯|DJ|Djibouti
62
-🇩🇰|DK|Denmark
69
🇩🇲|DM|Dominica
70
🇩🇴|DO|Dominican Republic
65
-🇩🇿|DZ|Algeria
66
-🇪🇦|EA|Ceuta & Melilla
71
🇪🇨|EC|Ecuador
68
-🇪🇪|EE|Estonia
72
🇪🇬|EG|Egypt
70
-🇪🇭|EH|Western Sahara
73
+🇸🇻|SV|El Salvador
74
+🇬🇶|GQ|Equatorial Guinea
75
🇪🇷|ER|Eritrea
72
-🇪🇸|ES|Spain
76
+🇪🇪|EE|Estonia
77
+🇸🇿|SZ|Eswatini
78
🇪🇹|ET|Ethiopia
74
-🇫🇮|FI|Finland
75
-🇫🇯|FJ|Fiji
79
🇫🇰|FK|Falkland Islands
77
-🇫🇲|FM|Micronesia
80
🇫🇴|FO|Faroe Islands
81
+🇫🇯|FJ|Fiji
82
+🇫🇮|FI|Finland
83
🇫🇷|FR|France
84
+🇬🇫|GF|French Guiana
85
+🇵🇫|PF|French Polynesia
86
+🇹🇫|TF|French Southern Territories
87
🇬🇦|GA|Gabon
81
-🇬🇧|GB|United Kingdom
82
-🇬🇩|GD|Grenada
88
+🇬🇲|GM|Gambia
89
🇬🇪|GE|Georgia
84
-🇬🇫|GF|French Guiana
85
-🇬🇬|GG|Guernsey
90
+🇩🇪|DE|Germany
91
🇬🇭|GH|Ghana
92
🇬🇮|GI|Gibraltar
93
+🇬🇷|GR|Greece
94
🇬🇱|GL|Greenland
89
-🇬🇲|GM|Gambia
90
-🇬🇳|GN|Guinea
95
+🇬🇩|GD|Grenada
96
🇬🇵|GP|Guadeloupe
92
-🇬🇶|GQ|Equatorial Guinea
93
-🇬🇷|GR|Greece
94
-🇬🇸|GS|South Georgia & South Sandwich Islands
95
-🇬🇹|GT|Guatemala
97
🇬🇺|GU|Guam
98
+🇬🇹|GT|Guatemala
99
+🇬🇬|GG|Guernsey
100
+🇬🇳|GN|Guinea
101
🇬🇼|GW|Guinea-Bissau
102
🇬🇾|GY|Guyana
99
-🇭🇰|HK|Hong Kong SAR China
103
+🇭🇹|HT|Haiti
104
🇭🇲|HM|Heard & McDonald Islands
105
🇭🇳|HN|Honduras
102
-🇭🇷|HR|Croatia
103
-🇭🇹|HT|Haiti
106
+🇭🇰|HK|Hong Kong SAR China
107
🇭🇺|HU|Hungary
105
-🇮🇨|IC|Canary Islands
108
+🇮🇸|IS|Iceland
109
+🇮🇳|IN|India
110
🇮🇩|ID|Indonesia
111
+🇮🇷|IR|Iran
112
+🇮🇶|IQ|Iraq
113
🇮🇪|IE|Ireland
108
-🇮🇱|IL|Israel
114
🇮🇲|IM|Isle of Man
110
-🇮🇳|IN|India
111
-🇮🇴|IO|British Indian Ocean Territory
112
-🇮🇶|IQ|Iraq
113
-🇮🇷|IR|Iran
114
-🇮🇸|IS|Iceland
115
+🇮🇱|IL|Israel
116
🇮🇹|IT|Italy
116
-🇯🇪|JE|Jersey
117
🇯🇲|JM|Jamaica
118
-🇯🇴|JO|Jordan
118
🇯🇵|JP|Japan
119
+🇯🇪|JE|Jersey
120
+🇯🇴|JO|Jordan
121
+🇰🇿|KZ|Kazakhstan
122
🇰🇪|KE|Kenya
121
-🇰🇬|KG|Kyrgyzstan
122
-🇰🇭|KH|Cambodia
123
🇰🇮|KI|Kiribati
124
-🇰🇲|KM|Comoros
125
-🇰🇳|KN|St. Kitts & Nevis
126
-🇰🇵|KP|North Korea
127
-🇰🇷|KR|South Korea
124
+🇽🇰|XK|Kosovo
125
🇰🇼|KW|Kuwait
129
-🇰🇾|KY|Cayman Islands
130
-🇰🇿|KZ|Kazakhstan
126
+🇰🇬|KG|Kyrgyzstan
127
🇱🇦|LA|Laos
128
+🇱🇻|LV|Latvia
129
🇱🇧|LB|Lebanon
133
-🇱🇨|LC|St. Lucia
134
-🇱🇮|LI|Liechtenstein
135
-🇱🇰|LK|Sri Lanka
136
-🇱🇷|LR|Liberia
130
🇱🇸|LS|Lesotho
131
+🇱🇷|LR|Liberia
132
+🇱🇾|LY|Libya
133
+🇱🇮|LI|Liechtenstein
134
🇱🇹|LT|Lithuania
135
🇱🇺|LU|Luxembourg
140
-🇱🇻|LV|Latvia
141
-🇱🇾|LY|Libya
142
-🇲🇦|MA|Morocco
143
-🇲🇨|MC|Monaco
144
-🇲🇩|MD|Moldova
145
-🇲🇪|ME|Montenegro
146
-🇲🇫|MF|St. Martin
136
+🇲🇴|MO|Macao SAR China
137
🇲🇬|MG|Madagascar
148
-🇲🇭|MH|Marshall Islands
149
-🇲🇰|MK|North Macedonia
138
+🇲🇼|MW|Malawi
139
+🇲🇾|MY|Malaysia
140
+🇲🇻|MV|Maldives
141
🇲🇱|ML|Mali
151
-🇲🇲|MM|Myanmar (Burma)
152
-🇲🇳|MN|Mongolia
153
-🇲🇴|MO|Macao SAR China
154
-🇲🇵|MP|Northern Mariana Islands
142
+🇲🇹|MT|Malta
143
+🇲🇭|MH|Marshall Islands
144
🇲🇶|MQ|Martinique
145
🇲🇷|MR|Mauritania
157
-🇲🇸|MS|Montserrat
158
-🇲🇹|MT|Malta
146
🇲🇺|MU|Mauritius
160
-🇲🇻|MV|Maldives
161
-🇲🇼|MW|Malawi
147
+🇾🇹|YT|Mayotte
148
🇲🇽|MX|Mexico
163
-🇲🇾|MY|Malaysia
149
+🇫🇲|FM|Micronesia
150
+🇲🇩|MD|Moldova
151
+🇲🇨|MC|Monaco
152
+🇲🇳|MN|Mongolia
153
+🇲🇪|ME|Montenegro
154
+🇲🇸|MS|Montserrat
155
+🇲🇦|MA|Morocco
156
🇲🇿|MZ|Mozambique
157
+🇲🇲|MM|Myanmar (Burma)
158
🇳🇦|NA|Namibia
159
+🇳🇷|NR|Nauru
160
+🇳🇵|NP|Nepal
161
+🇳🇱|NL|Netherlands
162
🇳🇨|NC|New Caledonia
163
+🇳🇿|NZ|New Zealand
164
+🇳🇮|NI|Nicaragua
165
🇳🇪|NE|Niger
168
-🇳🇫|NF|Norfolk Island
166
🇳🇬|NG|Nigeria
170
-🇳🇮|NI|Nicaragua
171
-🇳🇱|NL|Netherlands
172
-🇳🇴|NO|Norway
173
-🇳🇵|NP|Nepal
174
-🇳🇷|NR|Nauru
167
🇳🇺|NU|Niue
176
-🇳🇿|NZ|New Zealand
168
+🇳🇫|NF|Norfolk Island
169
+🇰🇵|KP|North Korea
170
+🇲🇰|MK|North Macedonia
171
+🇲🇵|MP|Northern Mariana Islands
172
+🇳🇴|NO|Norway
173
🇴🇲|OM|Oman
174
+🇵🇰|PK|Pakistan
175
+🇵🇼|PW|Palau
176
+🇵🇸|PS|Palestinian Territories
177
🇵🇦|PA|Panama
179
-🇵🇪|PE|Peru
180
-🇵🇫|PF|French Polynesia
178
🇵🇬|PG|Papua New Guinea
179
+🇵🇾|PY|Paraguay
180
+🇵🇪|PE|Peru
181
🇵🇭|PH|Philippines
183
-🇵🇰|PK|Pakistan
184
-🇵🇱|PL|Poland
185
-🇵🇲|PM|St. Pierre & Miquelon
182
🇵🇳|PN|Pitcairn Islands
187
-🇵🇷|PR|Puerto Rico
188
-🇵🇸|PS|Palestinian Territories
183
+🇵🇱|PL|Poland
184
🇵🇹|PT|Portugal
190
-🇵🇼|PW|Palau
191
-🇵🇾|PY|Paraguay
185
+🇵🇷|PR|Puerto Rico
186
🇶🇦|QA|Qatar
187
🇷🇪|RE|Réunion
188
🇷🇴|RO|Romania
195
-🇷🇸|RS|Serbia
189
🇷🇺|RU|Russia
190
🇷🇼|RW|Rwanda
191
+🇼🇸|WS|Samoa
192
+🇸🇲|SM|San Marino
193
+🇸🇹|ST|São Tomé & Príncipe
194
🇸🇦|SA|Saudi Arabia
199
-🇸🇧|SB|Solomon Islands
195
+🇸🇳|SN|Senegal
196
+🇷🇸|RS|Serbia
197
🇸🇨|SC|Seychelles
201
-🇸🇩|SD|Sudan
202
-🇸🇪|SE|Sweden
198
+🇸🇱|SL|Sierra Leone
199
🇸🇬|SG|Singapore
204
-🇸🇭|SH|St. Helena
205
-🇸🇮|SI|Slovenia
206
-🇸🇯|SJ|Svalbard & Jan Mayen
200
+🇸🇽|SX|Sint Maarten
201
🇸🇰|SK|Slovakia
208
-🇸🇱|SL|Sierra Leone
209
-🇸🇲|SM|San Marino
210
-🇸🇳|SN|Senegal
202
+🇸🇮|SI|Slovenia
203
+🇸🇧|SB|Solomon Islands
204
🇸🇴|SO|Somalia
212
-🇸🇷|SR|Suriname
205
+🇿🇦|ZA|South Africa
206
+🇬🇸|GS|South Georgia & South Sandwich Islands
207
+🇰🇷|KR|South Korea
208
🇸🇸|SS|South Sudan
214
-🇸🇹|ST|São Tomé & Príncipe
215
-🇸🇻|SV|El Salvador
216
-🇸🇽|SX|Sint Maarten
209
+🇪🇸|ES|Spain
210
+🇱🇰|LK|Sri Lanka
211
+🇧🇱|BL|St. Barthélemy
212
+🇸🇭|SH|St. Helena
213
+🇰🇳|KN|St. Kitts & Nevis
214
+🇱🇨|LC|St. Lucia
215
+🇲🇫|MF|St. Martin
216
+🇵🇲|PM|St. Pierre & Miquelon
217
+🇻🇨|VC|St. Vincent & Grenadines
218
+🇸🇩|SD|Sudan
219
+🇸🇷|SR|Suriname
220
+🇸🇯|SJ|Svalbard & Jan Mayen
221
+🇸🇪|SE|Sweden
222
+🇨🇭|CH|Switzerland
223
🇸🇾|SY|Syria
218
-🇸🇿|SZ|Eswatini
219
-🇹🇦|TA|Tristan da Cunha
220
-🇹🇨|TC|Turks & Caicos Islands
221
-🇹🇩|TD|Chad
222
-🇹🇫|TF|French Southern Territories
223
-🇹🇬|TG|Togo
224
-🇹🇭|TH|Thailand
224
+🇹🇼|TW|Taiwan
225
🇹🇯|TJ|Tajikistan
226
-🇹🇰|TK|Tokelau
226
+🇹🇿|TZ|Tanzania
227
+🇹🇭|TH|Thailand
228
🇹🇱|TL|Timor-Leste
228
-🇹🇲|TM|Turkmenistan
229
-🇹🇳|TN|Tunisia
229
+🇹🇬|TG|Togo
230
+🇹🇰|TK|Tokelau
231
🇹🇴|TO|Tonga
231
-🇹🇷|TR|Türkiye
232
🇹🇹|TT|Trinidad & Tobago
233
+🇹🇦|TA|Tristan da Cunha
234
+🇹🇳|TN|Tunisia
235
+🇹🇷|TR|Türkiye
236
+🇹🇲|TM|Turkmenistan
237
+🇹🇨|TC|Turks & Caicos Islands
238
🇹🇻|TV|Tuvalu
234
-🇹🇼|TW|Taiwan
235
-🇹🇿|TZ|Tanzania
236
-🇺🇦|UA|Ukraine
237
-🇺🇬|UG|Uganda
239
🇺🇲|UM|U.S. Outlying Islands
240
+🇻🇮|VI|U.S. Virgin Islands
241
+🇺🇬|UG|Uganda
242
+🇺🇦|UA|Ukraine
243
+🇦🇪|AE|United Arab Emirates
244
+🇬🇧|GB|United Kingdom
245
🇺🇳|UN|United Nations
246
🇺🇸|US|United States
247
🇺🇾|UY|Uruguay
248
🇺🇿|UZ|Uzbekistan
249
+🇻🇺|VU|Vanuatu
250
🇻🇦|VA|Vatican City
244
-🇻🇨|VC|St. Vincent & Grenadines
251
🇻🇪|VE|Venezuela
246
-🇻🇬|VG|British Virgin Islands
247
-🇻🇮|VI|U.S. Virgin Islands
252
🇻🇳|VN|Vietnam
249
-🇻🇺|VU|Vanuatu
253
🇼🇫|WF|Wallis & Futuna
251
-🇼🇸|WS|Samoa
252
-🇽🇰|XK|Kosovo
254
+🇪🇭|EH|Western Sahara
255
🇾🇪|YE|Yemen
254
-🇾🇹|YT|Mayotte
255
-🇿🇦|ZA|South Africa
256
🇿🇲|ZM|Zambia
257
🇿🇼|ZW|Zimbabwe`.split('\n').map(x => {
258
const [flag,code,name] = x.split('|')
shared/api.ts
+5
-6
@@ -48,15 +48,14 @@ export function apiCall<T=any>(cmd: string, params?: Dict, options: ApiCallOptio
48
stop?.()
49
let body: any = await res.text()
50
let data: any
51
- try { data = options.skipParse ? undefined : JSON.parse(body) }
52
- catch {}
53
- const result = data ?? body
51
+ try { data = options.skipParse ? body : JSON.parse(body) }
52
+ catch { data = body }
53
if (!options?.skipLog)
55
- console.debug(res.ok ? 'API' : 'API FAILED', cmd, params??'', '>>', result)
56
- await options.onResponse?.(res, result)
54
+ console.debug(res.ok ? 'API' : 'API FAILED', cmd, params??'', '>>', data)
55
+ await options.onResponse?.(res, data)
56
if (!res.ok)
57
throw new ApiError(res.status, data === undefined ? body : `Failed API ${cmd}: ${res.statusText}`, data)
59
- return result as Awaited<T extends (...args: any[]) => infer R ? Awaited<R> : T>
58
+ return data as Awaited<T extends (...args: any[]) => infer R ? Awaited<R> : T>
59
}, err => {
60
stop?.()
61
if (err?.message?.includes('fetch')) {