diff --git a/lib/widgets/local_notifications_extension.dart b/lib/widgets/local_notifications_extension.dart index 42c5ac33..751979e5 100644 --- a/lib/widgets/local_notifications_extension.dart +++ b/lib/widgets/local_notifications_extension.dart @@ -2,6 +2,7 @@ import 'dart:io'; import 'package:flutter/foundation.dart'; +import 'package:desktop_lifecycle/desktop_lifecycle.dart'; import 'package:desktop_notifications/desktop_notifications.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:http/http.dart' as http; @@ -17,7 +18,10 @@ import 'package:fluffychat/widgets/matrix.dart'; extension LocalNotificationsExtension on MatrixState { void showLocalNotification(EventUpdate eventUpdate) async { final roomId = eventUpdate.roomID; - if (webHasFocus && activeRoomId == roomId) return; + if (activeRoomId == roomId) { + if (kIsWeb && webHasFocus) return; + if (Platform.isLinux && DesktopLifecycle.instance.isActive.value) return; + } final room = client.getRoomById(roomId); if (room == null) { Logs().w('Can not display notification for unknown room $roomId'); diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index 770c84d8..9d220695 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -7,6 +7,7 @@ #include "generated_plugin_registrant.h" #include +#include #include #include #include @@ -15,6 +16,9 @@ void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) desktop_drop_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "DesktopDropPlugin"); desktop_drop_plugin_register_with_registrar(desktop_drop_registrar); + g_autoptr(FlPluginRegistrar) desktop_lifecycle_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "DesktopLifecyclePlugin"); + desktop_lifecycle_plugin_register_with_registrar(desktop_lifecycle_registrar); g_autoptr(FlPluginRegistrar) file_selector_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin"); file_selector_plugin_register_with_registrar(file_selector_linux_registrar); diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 411b1dd1..818fa7f6 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -4,6 +4,7 @@ list(APPEND FLUTTER_PLUGIN_LIST desktop_drop + desktop_lifecycle file_selector_linux flutter_secure_storage_linux url_launcher_linux diff --git a/pubspec.lock b/pubspec.lock index a6f9f035..5385352e 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -316,6 +316,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.3.2" + desktop_lifecycle: + dependency: "direct main" + description: + name: desktop_lifecycle + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.0" desktop_notifications: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 73b9eca2..5ea48afb 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -20,6 +20,7 @@ dependencies: connectivity_plus: ^2.2.0 cupertino_icons: any desktop_drop: ^0.3.2 + desktop_lifecycle: ^0.1.0 desktop_notifications: ^0.6.3 device_info_plus: ^3.2.1 email_validator: ^2.0.1 diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index cec45564..c82e2666 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -18,6 +19,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin")); DesktopDropPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("DesktopDropPlugin")); + DesktopLifecyclePluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("DesktopLifecyclePlugin")); FileSelectorPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("FileSelectorPlugin")); FlutterSecureStorageWindowsPluginRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 5b7523da..b18dd536 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -5,6 +5,7 @@ list(APPEND FLUTTER_PLUGIN_LIST connectivity_plus_windows desktop_drop + desktop_lifecycle file_selector_windows flutter_secure_storage_windows flutter_webrtc