forked from cwtch.im/cwtch-ui
start of flutter3 migration, update l10n/custom_material_delegate, update cwtchNotifier to user local_notifier
This commit is contained in:
parent
630713a5e4
commit
af4fd22041
|
@ -176,6 +176,7 @@ class CwtchNotifier {
|
|||
seenMessageCallback!(data["ProfileOnion"]!, identifier, DateTime.now().toUtc());
|
||||
}
|
||||
|
||||
print("New Message from peer...");
|
||||
if (notification == "SimpleEvent") {
|
||||
notificationManager.notify(notificationSimple ?? "New Message", "", 0);
|
||||
} else if (notification == "ContactInfo") {
|
||||
|
|
|
@ -312,6 +312,182 @@ class MaterialLocalizationLu extends MaterialLocalizations {
|
|||
@override
|
||||
String get viewLicensesButtonLabel => 'LIZENZEN ANZEIGEN';
|
||||
|
||||
// ***** NEW *****
|
||||
|
||||
@override
|
||||
String get keyboardKeyAlt => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyAltGraph => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyBackspace => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyCapsLock => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyChannelDown => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyChannelUp => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyControl => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyDelete => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyEisu => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyEject => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyEnd => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyEscape => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyFn => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyHangulMode => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyHanjaMode => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyHankaku => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyHiragana => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyHiraganaKatakana => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyHome => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyInsert => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyKanaMode => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyKanjiMode => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyKatakana => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyMeta => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyMetaMacOs => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyMetaWindows => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyNumLock => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyNumpad1 => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyNumpad2 => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyNumpad3 => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyNumpad4 => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyNumpad5 => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyNumpad6 => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyNumpad7 => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyNumpad8 => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyNumpad9 => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyNumpad0 => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyNumpadAdd => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyNumpadComma => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyNumpadDecimal => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyNumpadDivide => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyNumpadEnter => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyNumpadEqual => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyNumpadMultiply => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyNumpadParenLeft => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyNumpadParenRight => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyNumpadSubtract => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyPageDown => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyPageUp => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyPower => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyPowerOff => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyPrintScreen => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyRomaji => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyScrollLock => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeySelect => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeySpace => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyZenkaku => 'Datum';
|
||||
|
||||
@override
|
||||
String get keyboardKeyZenkakuHankaku => 'Datum';
|
||||
|
||||
@override
|
||||
String aboutListTileTitle(String applicationName) {
|
||||
return aboutListTileTitleRaw.replaceFirst("$applicationName", applicationName);
|
||||
|
|
|
@ -10,6 +10,8 @@ import 'package:desktop_notifications/desktop_notifications.dart' as linux_notif
|
|||
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
|
||||
import 'package:flutter_local_notifications_linux/flutter_local_notifications_linux.dart';
|
||||
import 'package:flutter_local_notifications_linux/src/model/hint.dart';
|
||||
import 'package:flutter_local_notifications_linux/src/model/icon.dart';
|
||||
|
||||
|
||||
import 'package:path/path.dart' as path;
|
||||
|
||||
|
@ -126,32 +128,80 @@ class NotificationPayload {
|
|||
class NixNotificationManager implements NotificationsManager {
|
||||
late FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin;
|
||||
late Future<void> Function(String, int) notificationSelectConvo;
|
||||
late String linuxAssetsPath;
|
||||
|
||||
|
||||
// Cwtch can install in non flutter supported ways on linux, this code detects where the assets are on Linux
|
||||
Future<String> detectLinuxAssetsPath() async {
|
||||
//var devStat = FileStat.stat("assets");
|
||||
//var localStat = FileStat.stat("data/flutter_assets");
|
||||
var homeStat = FileStat.stat((Platform.environment["HOME"] ?? "") + "/.local/share/cwtch/data/flutter_assets");
|
||||
var rootStat = FileStat.stat("/usr/share/cwtch/data/flutter_assets");
|
||||
|
||||
/*if ((await devStat).type == FileSystemEntityType.directory) {
|
||||
return Directory.current.path; //appPath;
|
||||
} else if ((await localStat).type == FileSystemEntityType.directory) {
|
||||
return path.join(Directory.current.path, "data/flutter_assets/");
|
||||
} else */if ((await homeStat).type == FileSystemEntityType.directory) {
|
||||
return (Platform.environment["HOME"] ?? "") + "/.local/share/cwtch/data/flutter_assets/";
|
||||
} else if ((await rootStat).type == FileSystemEntityType.directory) {
|
||||
return "/usr/share/cwtch/data/flutter_assets/";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
NixNotificationManager(Future<void> Function(String, int) notificationSelectConvo) {
|
||||
this.notificationSelectConvo = notificationSelectConvo;
|
||||
flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();
|
||||
|
||||
final MacOSInitializationSettings initializationSettingsMacOS = MacOSInitializationSettings(defaultPresentSound: false);
|
||||
final LinuxInitializationSettings initializationSettingsLinux =
|
||||
LinuxInitializationSettings(defaultActionName: 'Open notification', defaultIcon: AssetsLinuxIcon('assets/knott.png'), defaultSuppressSound: true);
|
||||
|
||||
final InitializationSettings initializationSettings = InitializationSettings(android: null, iOS: null, macOS: initializationSettingsMacOS, linux: initializationSettingsLinux);
|
||||
|
||||
scheduleMicrotask(() async {
|
||||
|
||||
if (Platform.isLinux) {
|
||||
linuxAssetsPath = await detectLinuxAssetsPath();
|
||||
print("NixNotificationManager found LinuxAssetsPath!: $linuxAssetsPath");
|
||||
} else {
|
||||
linuxAssetsPath = "";
|
||||
}
|
||||
|
||||
final MacOSInitializationSettings initializationSettingsMacOS = MacOSInitializationSettings(defaultPresentSound: false);
|
||||
var linuxIcon = FilePathLinuxIcon( path.join(linuxAssetsPath, 'assets/knott.png'));
|
||||
print("NixNotificationManager make linux settings");
|
||||
|
||||
final LinuxInitializationSettings initializationSettingsLinux =
|
||||
LinuxInitializationSettings(defaultActionName: 'Open notification', defaultIcon: linuxIcon, defaultSuppressSound: true);
|
||||
|
||||
print("NixNotificationManager InitializationSettings");
|
||||
|
||||
final InitializationSettings initializationSettings = InitializationSettings(android: null, iOS: null, macOS: initializationSettingsMacOS, linux: initializationSettingsLinux);
|
||||
|
||||
print("NixNotificationManager mac req perms");
|
||||
|
||||
flutterLocalNotificationsPlugin.resolvePlatformSpecificImplementation<MacOSFlutterLocalNotificationsPlugin>()?.requestPermissions(
|
||||
alert: true,
|
||||
badge: false,
|
||||
sound: false,
|
||||
);
|
||||
|
||||
print("NixNotificationManager initialize...");
|
||||
await flutterLocalNotificationsPlugin.initialize(initializationSettings, onSelectNotification: selectNotification);
|
||||
print("NixNotificationManager initialized!!!");
|
||||
});
|
||||
}
|
||||
|
||||
Future<void> notify(String message, String profile, int conversationId) async {
|
||||
print("notify if !globalAppState.focus so do? ${!globalAppState.focus}");
|
||||
if (!globalAppState.focus) {
|
||||
|
||||
print("do notify!");
|
||||
|
||||
// Warning: Only use title field on Linux, body field will render links as clickable
|
||||
await flutterLocalNotificationsPlugin.show(0, message, '', NotificationDetails(linux: LinuxNotificationDetails(suppressSound: true, category: LinuxNotificationCategory.imReceived())),
|
||||
await flutterLocalNotificationsPlugin.show(0, message, '',
|
||||
NotificationDetails(linux: LinuxNotificationDetails(suppressSound: true, category: LinuxNotificationCategory.imReceived(), icon: FilePathLinuxIcon(path.join(linuxAssetsPath, 'assets/knott.png')))),
|
||||
payload: jsonEncode(NotificationPayload(profile, conversationId)));
|
||||
|
||||
print("done notify");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -168,7 +218,7 @@ class NixNotificationManager implements NotificationsManager {
|
|||
NotificationsManager newDesktopNotificationsManager(Future<void> Function(String profileOnion, int convoId) notificationSelectConvo) {
|
||||
if (Platform.isLinux && !Platform.isAndroid) {
|
||||
try {
|
||||
return LinuxNotificationsManager(notificationSelectConvo);
|
||||
return NixNotificationManager(notificationSelectConvo);
|
||||
} catch (e) {
|
||||
EnvironmentConfig.debugLog("Failed to create LinuxNotificationManager. Switching off notifications.");
|
||||
}
|
||||
|
|
45
pubspec.lock
45
pubspec.lock
|
@ -28,7 +28,7 @@ packages:
|
|||
name: archive
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.1.6"
|
||||
version: "3.1.11"
|
||||
args:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -154,7 +154,7 @@ packages:
|
|||
name: collection
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.15.0"
|
||||
version: "1.16.0"
|
||||
convert:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -203,7 +203,7 @@ packages:
|
|||
name: fake_async
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.2.0"
|
||||
version: "1.3.0"
|
||||
ffi:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -259,16 +259,16 @@ packages:
|
|||
flutter_local_notifications:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_local_notifications
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "9.3.2"
|
||||
path: "/home/dan/src/openprivacy/flutter_local_notifications/flutter_local_notifications"
|
||||
relative: false
|
||||
source: path
|
||||
version: "9.5.3+1"
|
||||
flutter_local_notifications_linux:
|
||||
dependency: transitive
|
||||
dependency: "direct overridden"
|
||||
description:
|
||||
name: flutter_local_notifications_linux
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
path: "/home/dan/src/openprivacy/flutter_local_notifications/flutter_local_notifications_linux"
|
||||
relative: false
|
||||
source: path
|
||||
version: "0.4.2"
|
||||
flutter_local_notifications_platform_interface:
|
||||
dependency: transitive
|
||||
|
@ -385,7 +385,7 @@ packages:
|
|||
name: js
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.6.3"
|
||||
version: "0.6.4"
|
||||
json_annotation:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -407,6 +407,13 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.12.11"
|
||||
material_color_utilities:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: material_color_utilities
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.1.4"
|
||||
meta:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -490,7 +497,7 @@ packages:
|
|||
name: path
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.8.0"
|
||||
version: "1.8.1"
|
||||
path_provider:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -553,7 +560,7 @@ packages:
|
|||
name: platform
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.0.2"
|
||||
version: "3.1.0"
|
||||
plugin_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -635,7 +642,7 @@ packages:
|
|||
name: source_span
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.8.1"
|
||||
version: "1.8.2"
|
||||
stack_trace:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -684,7 +691,7 @@ packages:
|
|||
name: test_api
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.4.3"
|
||||
version: "0.4.9"
|
||||
timezone:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -768,14 +775,14 @@ packages:
|
|||
name: vector_math
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
version: "2.1.2"
|
||||
vm_service:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vm_service
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "7.3.0"
|
||||
version: "8.2.2"
|
||||
watcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -840,5 +847,5 @@ packages:
|
|||
source: hosted
|
||||
version: "3.1.0"
|
||||
sdks:
|
||||
dart: ">=2.15.0 <3.0.0"
|
||||
dart: ">=2.17.0-0 <3.0.0"
|
||||
flutter: ">=2.5.0"
|
||||
|
|
10
pubspec.yaml
10
pubspec.yaml
|
@ -44,9 +44,17 @@ dependencies:
|
|||
window_manager: ^0.1.4
|
||||
# notification plugins
|
||||
win_toast: ^0.0.2
|
||||
flutter_local_notifications: 9.3.2
|
||||
# 9.3.2
|
||||
flutter_local_notifications:
|
||||
path: /home/dan/src/openprivacy/flutter_local_notifications/flutter_local_notifications
|
||||
|
||||
|
||||
desktop_notifications: ^0.6.3
|
||||
|
||||
dependency_overrides:
|
||||
flutter_local_notifications_linux:
|
||||
path: /home/dan/src/openprivacy/flutter_local_notifications/flutter_local_notifications_linux
|
||||
|
||||
dev_dependencies:
|
||||
msix: ^2.1.3
|
||||
flutter_gherkin: ^3.0.0-rc.9
|
||||
|
|
Loading…
Reference in New Issue