start of flutter3 migration, update l10n/custom_material_delegate, update cwtchNotifier to user local_notifier

This commit is contained in:
Dan Ballard 2022-06-10 14:03:15 -07:00
parent a83b357f0f
commit a5040b7236
5 changed files with 268 additions and 26 deletions

View File

@ -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") {

View File

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

View File

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

View File

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

View File

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