Merge branch 'trunk' into profileNotify
continuous-integration/drone/pr Build is pending Details

This commit is contained in:
Sarah Jamie Lewis 2022-02-04 02:01:30 +00:00
commit ab9d6929be
5 changed files with 30 additions and 42 deletions

View File

@ -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;
});
}
}
}

View File

@ -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:

View File

@ -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:

View File

@ -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"));
}

View File

@ -3,8 +3,9 @@
#
list(APPEND FLUTTER_PLUGIN_LIST
desktoasts
url_launcher_windows
win_toast
window_manager
)
set(PLUGIN_BUNDLED_LIBRARIES)