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')) {