diff options
| author | xengineering <me@xengineering.eu> | 2026-03-20 17:02:39 +0100 |
|---|---|---|
| committer | xengineering <me@xengineering.eu> | 2026-03-20 20:48:52 +0100 |
| commit | 09330228991b73ede49ed186f74a2c4f306d2e20 (patch) | |
| tree | 9dbc60d01cc568ec388068ea69675efc890f22c4 /lib/data.dart | |
| parent | f021bffe2b37af563037195e0e93a74849cd860b (diff) | |
| download | sia-app-09330228991b73ede49ed186f74a2c4f306d2e20.tar sia-app-09330228991b73ede49ed186f74a2c4f306d2e20.tar.zst sia-app-09330228991b73ede49ed186f74a2c4f306d2e20.zip | |
Add reading server domain name from SQLite3 DB
It is annoying to type the server domain name on every app start. This
should be way more ergonomic.
As a minimal first step reading from the database is implemented and
tested with an externally injected database.
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; |
