From 1d79dcb975ae6f606a783a3d0287d8dc473e1cc8 Mon Sep 17 00:00:00 2001
From: Matthias Nott <mnott@mnsoft.org>
Date: Fri, 10 Jul 2026 07:13:05 +0200
Subject: [PATCH] feat: session launcher (all-project search + switch-topic) and persistent last-host fast reconnect
---
lib/providers/providers.dart | 34 ++++++++++++++++++++++------------
1 files changed, 22 insertions(+), 12 deletions(-)
diff --git a/lib/providers/providers.dart b/lib/providers/providers.dart
index ebfbb50..b5a35e2 100644
--- a/lib/providers/providers.dart
+++ b/lib/providers/providers.dart
@@ -6,6 +6,7 @@
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import '../models/message.dart';
+import '../models/project.dart';
import '../models/server_config.dart';
import '../models/session.dart';
import '../services/message_store.dart';
@@ -25,8 +26,8 @@
final serverConfigProvider =
StateNotifierProvider<ServerConfigNotifier, ServerConfig?>((ref) {
- return ServerConfigNotifier();
-});
+ return ServerConfigNotifier();
+ });
class ServerConfigNotifier extends StateNotifier<ServerConfig?> {
ServerConfigNotifier() : super(null) {
@@ -60,8 +61,9 @@
// --- Connection Status ---
-final wsStatusProvider =
- StateProvider<ConnectionStatus>((ref) => ConnectionStatus.disconnected);
+final wsStatusProvider = StateProvider<ConnectionStatus>(
+ (ref) => ConnectionStatus.disconnected,
+);
final connectionDetailProvider = StateProvider<String>((ref) => '');
final connectedViaProvider = StateProvider<String>((ref) => '');
@@ -83,12 +85,17 @@
}
});
+// --- Projects (PAI project launcher) ---
+
+final projectsProvider = StateProvider<List<Project>>((ref) => []);
+
// --- Messages ---
-final messagesProvider =
- StateNotifierProvider<MessagesNotifier, List<Message>>((ref) {
- return MessagesNotifier(ref);
-});
+final messagesProvider = StateNotifierProvider<MessagesNotifier, List<Message>>(
+ (ref) {
+ return MessagesNotifier(ref);
+ },
+);
class MessagesNotifier extends StateNotifier<List<Message>> {
MessagesNotifier(this.ref) : super([]);
@@ -103,7 +110,9 @@
void switchSession(String sessionId) {
if (_currentSessionId == sessionId) {
TraceService.instance.addTrace(
- 'switchSession SKIP', 'already on ${sessionId.substring(0, 8)}');
+ 'switchSession SKIP',
+ 'already on ${sessionId.substring(0, 8)}',
+ );
return;
}
TraceService.instance.addTrace(
@@ -173,8 +182,7 @@
// --- Unread Counts ---
-final unreadCountsProvider =
- StateProvider<Map<String, int>>((ref) => {});
+final unreadCountsProvider = StateProvider<Map<String, int>>((ref) => {});
// --- Input Mode ---
@@ -187,7 +195,9 @@
// Holds the bridge between NavigateScreen and ChatScreen's MQTT service.
// ChatScreen sets this when MQTT is initialized; NavigateScreen reads it.
// Using a Riverpod provider eliminates the stale static reference risk.
-final navigateNotifierProvider = StateProvider<NavigateNotifier?>((ref) => null);
+final navigateNotifierProvider = StateProvider<NavigateNotifier?>(
+ (ref) => null,
+);
// --- Pro / Purchase Status ---
--
Gitblit v1.3.1