28 lines
845 B
Dart
28 lines
845 B
Dart
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:mirror_protocol/mirror_protocol.dart';
|
|
import '../services/layout_persistence.dart';
|
|
import '../services/ws_server.dart';
|
|
|
|
final layoutProvider =
|
|
AsyncNotifierProvider<LayoutNotifier, DashboardLayoutConfig>(
|
|
LayoutNotifier.new);
|
|
|
|
class LayoutNotifier extends AsyncNotifier<DashboardLayoutConfig> {
|
|
late final LayoutPersistence _persistence;
|
|
|
|
@override
|
|
Future<DashboardLayoutConfig> build() async {
|
|
_persistence = LayoutPersistence();
|
|
return _persistence.load();
|
|
}
|
|
|
|
Future<void> updateLayout(DashboardLayoutConfig config) async {
|
|
state = AsyncData(config);
|
|
await _persistence.save(config);
|
|
// Broadcast to connected clients
|
|
ref
|
|
.read(wsServerProvider)
|
|
.broadcast(DashboardConfigResponse(layout: config));
|
|
}
|
|
}
|