diff options
author | Ludwig Schwiedrzik <ludwig.schwiedrzik@d-fine.com> | 2024-08-13 17:23:45 +0200 |
---|---|---|
committer | Scott Murray <scott.murray@konsulko.com> | 2024-09-10 19:52:10 +0000 |
commit | a2dcd701777968a65d3176eaf28aa7023d97c16b (patch) | |
tree | 65a5861430a1fde81160cd116fd70fba40cd1fb3 /lib/data/data_providers/app_config_provider.dart | |
parent | d3ea8d7fa4518c258fca3c825ee895487fcaa8ec (diff) |
Implementation of Persistent Storage API to the flutter homescreen
Added protobuf definition of Persistent Storage API.
Generated grpc-compliant code from protobuf API definition.
Set up storage_client based on similar radio_client.
Updated app_confi_provider and app_provider to include new API features
and prepare for implementation of persistent storage of users, user
preferences.
Added unit tests for all API rpcs.
Bug-AGL: [SPEC-5227]
Change-Id: I759501bcb9de3a70a14718f8b3a87bedcf811baa
Signed-off-by: Tom Kronsbein <tom.kronsbein@d-fine.com>
Signed-off-by: Ludwig Schwiedrzik <ludwig.schwiedrzik@d-fine.com>
Diffstat (limited to 'lib/data/data_providers/app_config_provider.dart')
-rw-r--r-- | lib/data/data_providers/app_config_provider.dart | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/lib/data/data_providers/app_config_provider.dart b/lib/data/data_providers/app_config_provider.dart index 6a4ea02..b82eb54 100644 --- a/lib/data/data_providers/app_config_provider.dart +++ b/lib/data/data_providers/app_config_provider.dart @@ -56,6 +56,23 @@ class RadioConfig { } } +class StorageConfig { + final String hostname; + final int port; + + static String defaultHostname = 'localhost'; + static int defaultPort = 50054; + + StorageConfig( + {required this.hostname, required this.port}); + + static StorageConfig defaultConfig() { + return StorageConfig( + hostname: StorageConfig.defaultHostname, + port: StorageConfig.defaultPort); + } +} + class MpdConfig { final String hostname; final int port; @@ -77,6 +94,7 @@ class AppConfig { final bool randomHybridAnimation; final KuksaConfig kuksaConfig; final RadioConfig radioConfig; + final StorageConfig storageConfig; final MpdConfig mpdConfig; static String configFilePath = '/etc/xdg/AGL/ics-homescreen.yaml'; @@ -87,6 +105,7 @@ class AppConfig { required this.randomHybridAnimation, required this.kuksaConfig, required this.radioConfig, + required this.storageConfig, required this.mpdConfig}); static KuksaConfig parseKuksaConfig(YamlMap kuksaMap) { @@ -182,6 +201,25 @@ class AppConfig { } } + static StorageConfig parseStorageConfig(YamlMap storageMap) { + try { + String hostname = StorageConfig.defaultHostname; + if (storageMap.containsKey('hostname')) { + hostname = storageMap['hostname']; + } + + int port = StorageConfig.defaultPort; + if (storageMap.containsKey('port')) { + port = storageMap['port']; + } + + return StorageConfig(hostname: hostname, port: port); + } catch (_) { + debugPrint("Invalid storage configuration, using defaults"); + return StorageConfig.defaultConfig(); + } + } + static MpdConfig parseMpdConfig(YamlMap mpdMap) { try { String hostname = MpdConfig.defaultHostname; @@ -229,6 +267,13 @@ final appConfigProvider = Provider((ref) { radioConfig = RadioConfig.defaultConfig(); } + StorageConfig storageConfig; + if (yamlMap.containsKey('storage')) { + storageConfig = AppConfig.parseStorageConfig(yamlMap['storage']); + } else { + storageConfig = StorageConfig.defaultConfig(); + } + MpdConfig mpdConfig; if (yamlMap.containsKey('mpd')) { mpdConfig = AppConfig.parseMpdConfig(yamlMap['mpd']); @@ -266,6 +311,7 @@ final appConfigProvider = Provider((ref) { randomHybridAnimation: randomHybridAnimation, kuksaConfig: kuksaConfig, radioConfig: radioConfig, + storageConfig: storageConfig, mpdConfig: mpdConfig); } catch (_) { return AppConfig( @@ -274,6 +320,7 @@ final appConfigProvider = Provider((ref) { randomHybridAnimation: false, kuksaConfig: KuksaConfig.defaultConfig(), radioConfig: RadioConfig.defaultConfig(), + storageConfig: StorageConfig.defaultConfig(), mpdConfig: MpdConfig.defaultConfig()); } }); |