aboutsummaryrefslogtreecommitdiffstats
path: root/lib/data/data_providers/app_config_provider.dart
diff options
context:
space:
mode:
authorLudwig Schwiedrzik <ludwig.schwiedrzik@d-fine.com>2024-08-13 17:23:45 +0200
committerScott Murray <scott.murray@konsulko.com>2024-09-10 19:52:10 +0000
commita2dcd701777968a65d3176eaf28aa7023d97c16b (patch)
tree65a5861430a1fde81160cd116fd70fba40cd1fb3 /lib/data/data_providers/app_config_provider.dart
parentd3ea8d7fa4518c258fca3c825ee895487fcaa8ec (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.dart47
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());
}
});