summaryrefslogtreecommitdiff
path: root/lib/data.dart
diff options
context:
space:
mode:
authorxengineering <me@xengineering.eu>2026-03-20 17:02:39 +0100
committerxengineering <me@xengineering.eu>2026-03-20 20:48:52 +0100
commit09330228991b73ede49ed186f74a2c4f306d2e20 (patch)
tree9dbc60d01cc568ec388068ea69675efc890f22c4 /lib/data.dart
parentf021bffe2b37af563037195e0e93a74849cd860b (diff)
downloadsia-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.dart34
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;