diff options
Diffstat (limited to 'lib/data.dart')
| -rw-r--r-- | lib/data.dart | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/lib/data.dart b/lib/data.dart index 365f5bc..302908c 100644 --- a/lib/data.dart +++ b/lib/data.dart @@ -1,6 +1,11 @@ +import 'dart:io'; + import 'package:flutter/foundation.dart'; import 'package:mqtt_client/mqtt_client.dart'; import 'package:mqtt_client/mqtt_server_client.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:sqlite3/sqlite3.dart'; +import 'package:path/path.dart' as p; const int brokerPort = 1883; const String topicPrefix = 'sia'; @@ -46,9 +51,36 @@ class AppState with ChangeNotifier { Map<String, bool> contacts = <String, bool>{}; late MqttServerClient _client; + late Directory supportDir; String fqdn = ''; - AppState(); + AppState() { + loadPersistence(); + } + + void loadPersistence() async { + supportDir = await getApplicationSupportDirectory(); + String dbPath = p.join(supportDir.path, 'main.sqlite3'); + + final Database db = sqlite3.open(dbPath); + try { + final ResultSet result = db.select( + 'SELECT value FROM key_value WHERE key = \'server_fqdn\';' + ); + if (result.length == 1) { + fqdn = result[0]['value']; + notifyListeners(); + } + } catch (e) { + // loading persistence is optional + } finally { + db.close(); + } + } + + void setFqdn(String value) { + fqdn = value; + } void process(MachineEvent event) { MachineState lastState = state; |
