From cbef1d578b275becf9e2da030a4a29166735a0f3 Mon Sep 17 00:00:00 2001 From: NaiJi Date: Mon, 17 Jul 2023 12:23:17 -0300 Subject: [PATCH] feat(location): Make flag getter a part of server provider location object --- .../json/digital_ocean_server_info.dart | 37 ++++++++++++++++ .../models/json/hetzner_server_info.dart | 18 ++++++++ .../models/server_provider_location.dart | 6 +-- .../server_providers/digital_ocean.dart | 42 +------------------ .../providers/server_providers/hetzner.dart | 22 +--------- .../initializing/server_type_picker.dart | 2 +- 6 files changed, 61 insertions(+), 66 deletions(-) diff --git a/lib/logic/models/json/digital_ocean_server_info.dart b/lib/logic/models/json/digital_ocean_server_info.dart index 9351761d..811536e4 100644 --- a/lib/logic/models/json/digital_ocean_server_info.dart +++ b/lib/logic/models/json/digital_ocean_server_info.dart @@ -36,6 +36,43 @@ class DigitalOceanLocation { static DigitalOceanLocation fromJson(final Map json) => _$DigitalOceanLocationFromJson(json); + + String get flag { + String emoji = ''; + + switch (slug.substring(0, 3)) { + case 'fra': + emoji = '🇩🇪'; + break; + + case 'ams': + emoji = '🇳🇱'; + break; + + case 'sgp': + emoji = '🇸🇬'; + break; + + case 'lon': + emoji = '🇬🇧'; + break; + + case 'tor': + emoji = '🇨🇦'; + break; + + case 'blr': + emoji = '🇮🇳'; + break; + + case 'nyc': + case 'sfo': + emoji = '🇺🇸'; + break; + } + + return emoji; + } } @JsonSerializable() diff --git a/lib/logic/models/json/hetzner_server_info.dart b/lib/logic/models/json/hetzner_server_info.dart index 557f8ea7..ece29de0 100644 --- a/lib/logic/models/json/hetzner_server_info.dart +++ b/lib/logic/models/json/hetzner_server_info.dart @@ -135,6 +135,24 @@ class HetznerLocation { static HetznerLocation fromJson(final Map json) => _$HetznerLocationFromJson(json); + + String get flag { + String emoji = ''; + switch (country.substring(0, 2)) { + case 'DE': + emoji = '🇩🇪'; + break; + + case 'FI': + emoji = '🇫🇮'; + break; + + case 'US': + emoji = '🇺🇸'; + break; + } + return emoji; + } } /// A Volume is a highly-available, scalable, and SSD-based block storage for Servers. diff --git a/lib/logic/models/server_provider_location.dart b/lib/logic/models/server_provider_location.dart index f76c226f..688eb972 100644 --- a/lib/logic/models/server_provider_location.dart +++ b/lib/logic/models/server_provider_location.dart @@ -3,13 +3,11 @@ class ServerProviderLocation { required this.title, required this.identifier, this.description, - this.flag, + this.flag = '', }); final String title; final String identifier; final String? description; - - /// as emoji - final String? flag; + final String flag; } diff --git a/lib/logic/providers/server_providers/digital_ocean.dart b/lib/logic/providers/server_providers/digital_ocean.dart index 057c99df..1269fa18 100644 --- a/lib/logic/providers/server_providers/digital_ocean.dart +++ b/lib/logic/providers/server_providers/digital_ocean.dart @@ -293,43 +293,6 @@ class DigitalOceanServerProvider extends ServerProvider { return success; } - String? getEmojiFlag(final String query) { - String? emoji; - - switch (query.toLowerCase().substring(0, 3)) { - case 'fra': - emoji = '🇩🇪'; - break; - - case 'ams': - emoji = '🇳🇱'; - break; - - case 'sgp': - emoji = '🇸🇬'; - break; - - case 'lon': - emoji = '🇬🇧'; - break; - - case 'tor': - emoji = '🇨🇦'; - break; - - case 'blr': - emoji = '🇮🇳'; - break; - - case 'nyc': - case 'sfo': - emoji = '🇺🇸'; - break; - } - - return emoji; - } - @override Future>> getAvailableLocations() async { @@ -351,7 +314,7 @@ class DigitalOceanServerProvider extends ServerProvider { location = ServerProviderLocation( title: rawLocation.slug, description: rawLocation.name, - flag: getEmojiFlag(rawLocation.slug), + flag: rawLocation.flag, identifier: rawLocation.slug, ); } catch (e) { @@ -662,8 +625,7 @@ class DigitalOceanServerProvider extends ServerProvider { ServerMetadataEntity( type: MetadataType.location, trId: 'server.location', - value: - '${droplet['region']['name']} ${getEmojiFlag(droplet['region']['slug'].toString()) ?? ''}', + value: '${droplet['region']['name']}', ), ServerMetadataEntity( type: MetadataType.other, diff --git a/lib/logic/providers/server_providers/hetzner.dart b/lib/logic/providers/server_providers/hetzner.dart index ae680088..140c1542 100644 --- a/lib/logic/providers/server_providers/hetzner.dart +++ b/lib/logic/providers/server_providers/hetzner.dart @@ -335,26 +335,6 @@ class HetznerServerProvider extends ServerProvider { return result; } - String? getEmojiFlag(final String query) { - String? emoji; - - switch (query.toLowerCase()) { - case 'de': - emoji = '🇩🇪'; - break; - - case 'fi': - emoji = '🇫🇮'; - break; - - case 'us': - emoji = '🇺🇸'; - break; - } - - return emoji; - } - @override Future> trySetServerLocation( final String location, @@ -396,7 +376,7 @@ class HetznerServerProvider extends ServerProvider { location = ServerProviderLocation( title: rawLocation.city, description: rawLocation.description, - flag: getEmojiFlag(rawLocation.country), + flag: rawLocation.flag, identifier: rawLocation.name, ); } catch (e) { diff --git a/lib/ui/pages/setup/initializing/server_type_picker.dart b/lib/ui/pages/setup/initializing/server_type_picker.dart index 8ca01e44..6212bec3 100644 --- a/lib/ui/pages/setup/initializing/server_type_picker.dart +++ b/lib/ui/pages/setup/initializing/server_type_picker.dart @@ -107,7 +107,7 @@ class SelectLocationPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - '${location.flag ?? ''} ${location.title}', + '${location.flag} ${location.title}', style: Theme.of(context) .textTheme .titleMedium,