diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 92046af..b3e97d2 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -5,6 +5,8 @@
+
+
_themeMode;
Color get accentColor => _accentColor;
+ String? get wallpaperPath => _wallpaperPath;
bool isLight = false;
@@ -20,12 +22,14 @@ class ThemeProvider extends ChangeNotifier {
Future _loadSettings() async {
final mode = await _storage.read(key: 'theme_mode');
final color = await _storage.read(key: 'accent_color');
+ final wallpaper = await _storage.read(key: 'wallpaper_path');
if (mode != null) {
_themeMode = mode == 'dark' ? ThemeMode.dark : ThemeMode.light;
isLight = mode == 'light';
}
if (color != null) _accentColor = Color(int.parse(color));
+ _wallpaperPath = wallpaper;
notifyListeners();
}
@@ -42,6 +46,16 @@ class ThemeProvider extends ChangeNotifier {
notifyListeners();
}
+ void updateWallpaper(String? path) {
+ _wallpaperPath = path;
+ if (path != null) {
+ _storage.write(key: 'wallpaper_path', value: path);
+ } else {
+ _storage.delete(key: 'wallpaper_path');
+ }
+ notifyListeners();
+ }
+
ThemeData get themeData => ThemeData(
useMaterial3: true,
brightness: _themeMode == ThemeMode.dark
diff --git a/lib/data/datasources/local_db_service.dart b/lib/data/datasources/local_db_service.dart
index 66a71d3..a36590a 100644
--- a/lib/data/datasources/local_db_service.dart
+++ b/lib/data/datasources/local_db_service.dart
@@ -56,6 +56,11 @@ class LocalDbService {
);
}
+ Future clearDatabase() async {
+ final db = await database;
+ await db.delete('messages');
+ }
+
// Сохранение списка сообщений (из истории)
Future saveMessages(List messages) async {
final db = await database;
diff --git a/lib/data/datasources/ws_client.dart b/lib/data/datasources/ws_client.dart
index d711114..f41e84f 100644
--- a/lib/data/datasources/ws_client.dart
+++ b/lib/data/datasources/ws_client.dart
@@ -5,14 +5,16 @@ import 'package:web_socket_channel/web_socket_channel.dart';
import 'package:web_socket_channel/status.dart' as status;
import 'package:web_socket_channel/io.dart';
import 'package:chepuhagram/core/constants.dart';
+import 'package:flutter/widgets.dart';
+
+class SocketService with WidgetsBindingObserver {
-class SocketService {
static final SocketService _instance = SocketService._internal();
-
- factory SocketService() {
- return _instance;
+ factory SocketService() => _instance;
+
+ SocketService._internal() {
+ WidgetsBinding.instance.addObserver(this);
}
- SocketService._internal();
WebSocketChannel? _channel;
final StreamController