aboutsummaryrefslogtreecommitdiffstats
path: root/lib/data/data_providers/app_config_provider.dart
diff options
context:
space:
mode:
Diffstat (limited to 'lib/data/data_providers/app_config_provider.dart')
-rw-r--r--lib/data/data_providers/app_config_provider.dart72
1 files changed, 65 insertions, 7 deletions
diff --git a/lib/data/data_providers/app_config_provider.dart b/lib/data/data_providers/app_config_provider.dart
index 7e0ddc6..a60a462 100644
--- a/lib/data/data_providers/app_config_provider.dart
+++ b/lib/data/data_providers/app_config_provider.dart
@@ -35,14 +35,40 @@ class KuksaConfig {
}
}
+class RadioConfig {
+ final String hostname;
+ final int port;
+ final String presets;
+
+ static String defaultHostname = 'localhost';
+ static int defaultPort = 50053;
+ static String defaultPresets =
+ '/etc/xdg/AGL/ics-homescreen/radio-presets.yaml';
+
+ RadioConfig(
+ {required this.hostname, required this.port, required this.presets});
+
+ static RadioConfig defaultConfig() {
+ return RadioConfig(
+ hostname: RadioConfig.defaultHostname,
+ port: RadioConfig.defaultPort,
+ presets: RadioConfig.defaultPresets);
+ }
+}
+
class AppConfig {
final bool disableBkgAnimation;
final bool randomHybridAnimation;
final KuksaConfig kuksaConfig;
+ final RadioConfig radioConfig;
static String configFilePath = '/etc/xdg/AGL/ics-homescreen.yaml';
- AppConfig({required this.disableBkgAnimation, required this.randomHybridAnimation, required this.kuksaConfig});
+ AppConfig(
+ {required this.disableBkgAnimation,
+ required this.randomHybridAnimation,
+ required this.kuksaConfig,
+ required this.radioConfig});
static KuksaConfig parseKuksaConfig(YamlMap kuksaMap) {
try {
@@ -64,7 +90,7 @@ class AppConfig {
debugPrint("Reading authorization token $s");
try {
token = File(s).readAsStringSync();
- } on Exception catch (_) {
+ } catch (_) {
print("ERROR: Could not read authorization token file $token");
token = "";
}
@@ -89,7 +115,7 @@ class AppConfig {
}
try {
ca_cert = File(ca_path).readAsBytesSync();
- } on Exception catch (_) {
+ } catch (_) {
print("ERROR: Could not read CA certificate file $ca_path");
ca_cert = [];
}
@@ -107,10 +133,33 @@ class AppConfig {
use_tls: use_tls,
ca_certificate: ca_cert,
tls_server_name: tls_server_name);
- } on Exception catch (_) {
+ } catch (_) {
return KuksaConfig.defaultConfig();
}
}
+
+ static RadioConfig parseRadioConfig(YamlMap radioMap) {
+ try {
+ String hostname = RadioConfig.defaultHostname;
+ if (radioMap.containsKey('hostname')) {
+ hostname = radioMap['hostname'];
+ }
+
+ int port = RadioConfig.defaultPort;
+ if (radioMap.containsKey('port')) {
+ port = radioMap['port'];
+ }
+
+ String presets = RadioConfig.defaultPresets;
+ if (radioMap.containsKey('presets')) {
+ hostname = radioMap['presets'];
+ }
+
+ return RadioConfig(hostname: hostname, port: port, presets: presets);
+ } catch (_) {
+ return RadioConfig.defaultConfig();
+ }
+ }
}
final appConfigProvider = Provider((ref) {
@@ -133,6 +182,13 @@ final appConfigProvider = Provider((ref) {
tls_server_name: "");
}
+ RadioConfig radioConfig;
+ if (yamlMap.containsKey('radio')) {
+ radioConfig = AppConfig.parseRadioConfig(yamlMap['radio']);
+ } else {
+ radioConfig = RadioConfig.defaultConfig();
+ }
+
bool disableBkgAnimation = disableBkgAnimationDefault;
if (yamlMap.containsKey('disable-bg-animation')) {
var value = yamlMap['disable-bg-animation'];
@@ -152,11 +208,13 @@ final appConfigProvider = Provider((ref) {
return AppConfig(
disableBkgAnimation: disableBkgAnimation,
randomHybridAnimation: randomHybridAnimation,
- kuksaConfig: kuksaConfig);
- } on Exception catch (_) {
+ kuksaConfig: kuksaConfig,
+ radioConfig: radioConfig);
+ } catch (_) {
return AppConfig(
disableBkgAnimation: false,
randomHybridAnimation: false,
- kuksaConfig: KuksaConfig.defaultConfig());
+ kuksaConfig: KuksaConfig.defaultConfig(),
+ radioConfig: RadioConfig.defaultConfig());
}
});