summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorEmīls Piņķis <emils@mullvad.net>2019-03-18 15:01:08 +0000
committerEmīls Piņķis <emils@mullvad.net>2019-03-18 15:03:55 +0000
commita5e93e5617839e5bceb2e4e8e20a7538710e48e5 (patch)
treebdc079f15cbc067e86f36624b7cff6afbe53e1db
parente2e46db34d2bd5262e30baadec3f984dfc2183ec (diff)
downloadmullvadvpn-a5e93e5617839e5bceb2e4e8e20a7538710e48e5.tar.xz
mullvadvpn-a5e93e5617839e5bceb2e4e8e20a7538710e48e5.zip
Sort relay list countries and cities by name in GUI
-rw-r--r--gui/src/renderer/app.tsx38
1 files changed, 25 insertions, 13 deletions
diff --git a/gui/src/renderer/app.tsx b/gui/src/renderer/app.tsx
index a6c92aa672..3d2c79230d 100644
--- a/gui/src/renderer/app.tsx
+++ b/gui/src/renderer/app.tsx
@@ -543,19 +543,31 @@ export default class AppRenderer {
}
private setRelays(relayList: IRelayList) {
- const locations = relayList.countries.map((country) => ({
- name: country.name,
- code: country.code,
- hasActiveRelays: country.cities.some((city) => city.relays.length > 0),
- cities: country.cities.map((city) => ({
- name: city.name,
- code: city.code,
- latitude: city.latitude,
- longitude: city.longitude,
- hasActiveRelays: city.relays.length > 0,
- relays: city.relays,
- })),
- }));
+ const compareStrings = (strA: string, strB: string) => {
+ if (strA > strB) {
+ return 1;
+ } else if (strA < strB) {
+ return -1;
+ }
+ return 0;
+ };
+ const locations = relayList.countries
+ .map((country) => ({
+ name: country.name,
+ code: country.code,
+ hasActiveRelays: country.cities.some((city) => city.relays.length > 0),
+ cities: country.cities
+ .map((city) => ({
+ name: city.name,
+ code: city.code,
+ latitude: city.latitude,
+ longitude: city.longitude,
+ hasActiveRelays: city.relays.length > 0,
+ relays: city.relays,
+ }))
+ .sort((cityA, cityB) => compareStrings(cityA.name, cityB.name)),
+ }))
+ .sort((countryA, countryB) => compareStrings(countryA.name, countryB.name));
this.reduxActions.settings.updateRelayLocations(locations);
}