forked from cwtch.im/cwtch-ui
Merge pull request 'windows notifications: switch from desktoats to win_toats' (#350) from wintoasts into trunk
Reviewed-on: cwtch.im/cwtch-ui#350
This commit is contained in:
commit
cd4c778b71
|
@ -1,7 +1,8 @@
|
|||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:cwtch/main.dart';
|
||||
import 'package:desktoasts/desktoasts.dart';
|
||||
import 'package:win_toast/win_toast.dart';
|
||||
import 'package:desktop_notifications/desktop_notifications.dart';
|
||||
import 'package:path/path.dart' as path;
|
||||
|
||||
|
@ -37,44 +38,27 @@ class LinuxNotificationsManager implements NotificationsManager {
|
|||
// Windows Notification Manager uses https://pub.dev/packages/desktoasts to implement
|
||||
// windows notifications
|
||||
class WindowsNotificationManager implements NotificationsManager {
|
||||
late ToastService service;
|
||||
bool active = false;
|
||||
bool initialized = false;
|
||||
|
||||
WindowsNotificationManager() {
|
||||
service = new ToastService(
|
||||
appName: 'cwtch',
|
||||
companyName: 'Open Privacy Research Society',
|
||||
productName: 'Cwtch',
|
||||
);
|
||||
|
||||
service.stream.listen((event) {
|
||||
// the user closed the notification of the OS timed it out
|
||||
if (event is ToastDismissed) {
|
||||
active = false;
|
||||
}
|
||||
// clicked
|
||||
if (event is ToastActivated) {
|
||||
active = false;
|
||||
}
|
||||
// if a supplied action was clicked
|
||||
if (event is ToastInteracted) {
|
||||
active = false;
|
||||
}
|
||||
scheduleMicrotask(() async {
|
||||
initialized = await WinToast.instance().initialize(appName: 'cwtch', productName: 'Cwtch', companyName: 'Open Privacy Research Society');
|
||||
});
|
||||
}
|
||||
|
||||
Future<void> notify(String message) async {
|
||||
if (!globalAppState.focus) {
|
||||
if (initialized && !globalAppState.focus) {
|
||||
if (!active) {
|
||||
// One string of bold text on the first line (title),
|
||||
// one string (subtitle) of regular text wrapped across the second and third lines.
|
||||
Toast toast = new Toast(
|
||||
type: ToastType.text02,
|
||||
title: 'Cwtch',
|
||||
subtitle: message,
|
||||
);
|
||||
service.show(toast);
|
||||
active = true;
|
||||
WinToast.instance().clear();
|
||||
final toast = await WinToast.instance().showToast(type: ToastType.text01, title: message);
|
||||
toast?.eventStream.listen((event) {
|
||||
if (event is ActivatedEvent) {
|
||||
WinToast.instance().bringWindowToFront();
|
||||
}
|
||||
active = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
14
pubspec.lock
14
pubspec.lock
|
@ -78,13 +78,6 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.5.2"
|
||||
desktoasts:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: desktoasts
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.0.2"
|
||||
desktop_notifications:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -474,6 +467,13 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.2.4"
|
||||
win_toast:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: win_toast
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.0.2"
|
||||
window_manager:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
|
@ -44,7 +44,7 @@ dependencies:
|
|||
file_picker: ^4.3.2
|
||||
file_picker_desktop: ^1.1.0
|
||||
url_launcher: ^6.0.12
|
||||
desktoasts: ^0.0.2
|
||||
win_toast: ^0.0.2
|
||||
window_manager: ^0.1.4
|
||||
|
||||
dev_dependencies:
|
||||
|
|
|
@ -6,12 +6,15 @@
|
|||
|
||||
#include "generated_plugin_registrant.h"
|
||||
|
||||
#include <desktoasts/desktoasts_plugin.h>
|
||||
#include <url_launcher_windows/url_launcher_windows.h>
|
||||
#include <win_toast/win_toast_plugin.h>
|
||||
#include <window_manager/window_manager_plugin.h>
|
||||
|
||||
void RegisterPlugins(flutter::PluginRegistry* registry) {
|
||||
DesktoastsPluginRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("DesktoastsPlugin"));
|
||||
UrlLauncherWindowsRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("UrlLauncherWindows"));
|
||||
WinToastPluginRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("WinToastPlugin"));
|
||||
WindowManagerPluginRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("WindowManagerPlugin"));
|
||||
}
|
||||
|
|
|
@ -3,8 +3,9 @@
|
|||
#
|
||||
|
||||
list(APPEND FLUTTER_PLUGIN_LIST
|
||||
desktoasts
|
||||
url_launcher_windows
|
||||
win_toast
|
||||
window_manager
|
||||
)
|
||||
|
||||
set(PLUGIN_BUNDLED_LIBRARIES)
|
||||
|
|
Loading…
Reference in New Issue