diff --git a/.idea/libraries/Dart_Packages.xml b/.idea/libraries/Dart_Packages.xml
index 47280b6..6065cfc 100644
--- a/.idea/libraries/Dart_Packages.xml
+++ b/.idea/libraries/Dart_Packages.xml
@@ -26,7 +26,7 @@
-
+
@@ -47,7 +47,7 @@
-
+
@@ -82,7 +82,7 @@
-
+
@@ -131,7 +131,7 @@
-
+
@@ -159,7 +159,7 @@
-
+
@@ -215,7 +215,7 @@
-
+
@@ -243,7 +243,7 @@
-
+
@@ -271,7 +271,7 @@
-
+
@@ -313,7 +313,7 @@
-
+
@@ -331,6 +331,13 @@
+
+
+
+
+
+
+
@@ -348,35 +355,35 @@
-
+
-
+
-
+
-
+
-
+
@@ -425,21 +432,21 @@
-
+
-
+
-
+
@@ -450,6 +457,13 @@
+
+
+
+
+
+
+
@@ -495,14 +509,14 @@
-
+
-
+
@@ -530,7 +544,7 @@
-
+
@@ -544,7 +558,7 @@
-
+
@@ -635,56 +649,56 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -775,7 +789,7 @@
-
+
@@ -831,7 +845,7 @@
-
+
@@ -866,42 +880,42 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -936,14 +950,14 @@
-
+
-
+
@@ -1006,49 +1020,49 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1146,70 +1160,70 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1265,56 +1279,56 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1363,7 +1377,7 @@
-
+
@@ -1377,7 +1391,7 @@
-
+
@@ -1406,31 +1420,31 @@
-
-
+
+
-
+
-
+
-
+
-
+
-
+
@@ -1438,15 +1452,15 @@
-
+
-
+
-
+
@@ -1454,34 +1468,36 @@
+
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
+
+
-
-
+
+
-
+
-
+
@@ -1492,14 +1508,14 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
@@ -1512,7 +1528,7 @@
-
+
@@ -1524,18 +1540,18 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
-
+
+
@@ -1544,13 +1560,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -1563,16 +1579,16 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -1580,23 +1596,23 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
+
-
+
diff --git a/.idea/libraries/Flutter_Plugins.xml b/.idea/libraries/Flutter_Plugins.xml
index f0c7d53..a66e8f7 100644
--- a/.idea/libraries/Flutter_Plugins.xml
+++ b/.idea/libraries/Flutter_Plugins.xml
@@ -1,51 +1,52 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lib/api/marianumcloud/webdav/queries/listFiles/listFiles.dart b/lib/api/marianumcloud/webdav/queries/listFiles/listFiles.dart
index ca60edf..b5b281a 100644
--- a/lib/api/marianumcloud/webdav/queries/listFiles/listFiles.dart
+++ b/lib/api/marianumcloud/webdav/queries/listFiles/listFiles.dart
@@ -14,7 +14,7 @@ class ListFiles extends WebdavApi {
@override
Future run() async {
- List davFiles = (await (await WebdavApi.webdav).propfind(params.path)).toWebDavFiles();
+ List davFiles = (await (await WebdavApi.webdav).propfind(Uri.parse(params.path))).toWebDavFiles();
Set files = davFiles.map((e) => CacheableFile.fromDavFile(e)).toSet();
// webdav handles subdirectories wrong, this is a fix
diff --git a/lib/api/marianumcloud/webdav/webdavApi.dart b/lib/api/marianumcloud/webdav/webdavApi.dart
index 1e59daa..9c9570d 100644
--- a/lib/api/marianumcloud/webdav/webdavApi.dart
+++ b/lib/api/marianumcloud/webdav/webdavApi.dart
@@ -18,7 +18,7 @@ abstract class WebdavApi extends ApiRequest {
static Future webdavConnectString = buildWebdavConnectString();
static Future establishWebdavConnection() async {
- return NextcloudClient("https://${EndpointData().nextcloud().full()}", password: AccountData().getPassword(), loginName: AccountData().getUsername()).webdav;
+ return NextcloudClient(Uri.parse("https://${EndpointData().nextcloud().full()}"), password: AccountData().getPassword(), loginName: AccountData().getUsername()).webdav;
}
static Future buildWebdavConnectString() async {
diff --git a/lib/main.dart b/lib/main.dart
index a4e3403..be781d8 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -8,12 +8,12 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:jiffy/jiffy.dart';
-import 'package:marianum_mobile/firebase_options.dart';
import 'package:provider/provider.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'api/mhsl/breaker/getBreakers/getBreakersResponse.dart';
import 'app.dart';
+import 'firebase_options.dart';
import 'model/accountData.dart';
import 'model/accountModel.dart';
import 'model/breakers/Breaker.dart';
@@ -43,9 +43,9 @@ Future main() async {
ByteData data = await PlatformAssetBundle().load('assets/ca/lets-encrypt-r3.pem');
SecurityContext.defaultContext.setTrustedCertificatesBytes(data.buffer.asUint8List());
- ErrorWidget.builder = (error) {
- return PlaceholderView(icon: Icons.phonelink_erase_rounded, text: error.toString());
- };
+ // ErrorWidget.builder = (error) {
+ // return PlaceholderView(icon: Icons.phonelink_erase_rounded, text: error.toString());
+ // };
runApp(
MultiProvider(
diff --git a/lib/view/pages/files/fileElement.dart b/lib/view/pages/files/fileElement.dart
index 268ec7c..831ea84 100644
--- a/lib/view/pages/files/fileElement.dart
+++ b/lib/view/pages/files/fileElement.dart
@@ -161,7 +161,7 @@ class _FileElementState extends State {
content: "Das Element wird unwiederruflich gelöscht.",
onConfirm: () {
WebdavApi.webdav
- .then((value) => value.delete(widget.file.path))
+ .then((value) => value.delete(Uri.parse(widget.file.path)))
.then((value) => widget.refetch());
}
));
diff --git a/lib/view/pages/files/fileUploadDialog.dart b/lib/view/pages/files/fileUploadDialog.dart
index d48a3e7..95f6ffa 100644
--- a/lib/view/pages/files/fileUploadDialog.dart
+++ b/lib/view/pages/files/fileUploadDialog.dart
@@ -43,7 +43,7 @@ class _FileUploadDialogState extends State {
setState(() {
state = FileUploadState.checkConflict;
});
- List result = (await webdavClient.propfind(widget.remotePath.join("/"))).responses;
+ List result = (await webdavClient.propfind(Uri.parse(widget.remotePath.join("/")))).responses;
if(result.any((element) => element.href!.endsWith("/$targetFileName"))) {
setState(() {
state = FileUploadState.conflict;
@@ -56,7 +56,7 @@ class _FileUploadDialogState extends State {
}
}
- Future uploadTask = webdavClient.putFile(File(widget.localPath), FileStat.statSync(widget.localPath), fullRemotePath); // TODO use onProgress from putFile
+ Future uploadTask = webdavClient.putFile(File(widget.localPath), FileStat.statSync(widget.localPath), Uri.parse(fullRemotePath)); // TODO use onProgress from putFile
uploadTask.then((value) => Future.value(value)).catchError((e) {
setState(() {
state = FileUploadState.error;
diff --git a/lib/view/pages/files/files.dart b/lib/view/pages/files/files.dart
index 71f77c4..628b64e 100644
--- a/lib/view/pages/files/files.dart
+++ b/lib/view/pages/files/files.dart
@@ -189,7 +189,7 @@ class _FilesState extends State {
}, child: const Text("Abbrechen")),
TextButton(onPressed: () {
WebdavApi.webdav.then((webdav) {
- webdav.mkcol("${widget.path.join("/")}/${inputController.text}").then((value) => _query());
+ webdav.mkcol(Uri.parse("${widget.path.join("/")}/${inputController.text}")).then((value) => _query());
});
Navigator.of(context).pop();
}, child: const Text("Ordner erstellen")),
diff --git a/lib/view/pages/more/holidays/holidays.dart b/lib/view/pages/more/holidays/holidays.dart
index 160b86d..da45f71 100644
--- a/lib/view/pages/more/holidays/holidays.dart
+++ b/lib/view/pages/more/holidays/holidays.dart
@@ -147,7 +147,7 @@ class _HolidaysState extends State {
subtitle: Text(Jiffy.parse(holiday.start).fromNow()),
),
),
- DebugTile(holiday.toJson()).asTile(context),
+ DebugTile(context).jsonData(holiday.toJson()),
],
)),
trailing: const Icon(Icons.arrow_right),
diff --git a/lib/view/pages/more/overhang.dart b/lib/view/pages/more/overhang.dart
index 7b501a6..2cae8cb 100644
--- a/lib/view/pages/more/overhang.dart
+++ b/lib/view/pages/more/overhang.dart
@@ -1,8 +1,17 @@
+import 'dart:convert';
+import 'dart:developer';
+import 'package:http/http.dart' as http;
+
+import 'package:crypto/crypto.dart';
+import 'package:fast_rsa/fast_rsa.dart';
+import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart';
import 'package:persistent_bottom_nav_bar/persistent_tab_view.dart';
+import '../../../model/endpointData.dart';
import '../../../widget/ListItem.dart';
+import '../../../widget/debug/debugTile.dart';
import '../../settings/settings.dart';
import 'gradeAverages/gradeAverage.dart';
import 'holidays/holidays.dart';
@@ -22,11 +31,46 @@ class Overhang extends StatelessWidget {
],
),
body: ListView(
- children: const [
- ListItemNavigator(icon: Icons.newspaper, text: "Marianum Message", target: Message()),
- ListItemNavigator(icon: Icons.room, text: "Raumplan", target: Roomplan()),
- ListItemNavigator(icon: Icons.calculate, text: "Notendurschnittsrechner", target: GradeAverage()),
- ListItemNavigator(icon: Icons.calendar_month, text: "Schulferien", target: Holidays()),
+ children: [
+ const ListItemNavigator(icon: Icons.newspaper, text: "Marianum Message", target: Message()),
+ const ListItemNavigator(icon: Icons.room, text: "Raumplan", target: Roomplan()),
+ const ListItemNavigator(icon: Icons.calculate, text: "Notendurschnittsrechner", target: GradeAverage()),
+ const ListItemNavigator(icon: Icons.calendar_month, text: "Schulferien", target: Holidays()),
+ DebugTile(context, onlyInDebug: true).callback(onTab: () async {
+ log("Starting");
+ log("Generate keys");
+ final rsaKey = await RSA.generate(2048);
+ final devicePrivateKey = rsaKey.privateKey.toString();
+ final devicePublicKey = rsaKey.publicKey.toString();
+ log("Private: \n$devicePrivateKey");
+ log("Public: \n$devicePublicKey");
+ final pushToken = await FirebaseMessaging.instance.getToken();
+ log("PushToken: $pushToken}");
+ final pushTokenHash = sha512.convert(utf8.encode(pushToken!));
+ log("PushTokenHash: $pushTokenHash");
+
+ final requestMap = {
+ "format": "json",
+ "pushTokenHash": pushTokenHash.toString(),
+ "devicePublicKey": devicePublicKey.toString(),
+ "proxyServer": "https://push-notifications.nextcloud.com/devices"
+ };
+
+ log(jsonEncode(requestMap));
+ http.post(
+ //${AccountData().buildHttpAuthString()}@
+ Uri.parse("https://${EndpointData().nextcloud().full()}/ocs/v2.php/apps/notifications/api/v2/push"),
+ headers: {
+ "OCS-APIRequest": "true",
+ "Content-Type": "application/json",
+ "Accept": "application/json",
+ "Authorization": "Bearer Fv3g7g9jW91FXNjZLaJmyprClfy8pX1jEM3hJGbXjPEFcx4oGIEVcpwEnuT4mPs39D9xT063"
+ },
+ body: jsonEncode(requestMap),
+ ).then((response) {
+ log("Response: ${response.statusCode}\n${response.body}");
+ });
+ }),
],
),
);
diff --git a/lib/view/pages/talk/chatBubble.dart b/lib/view/pages/talk/chatBubble.dart
index 5275852..24ce608 100644
--- a/lib/view/pages/talk/chatBubble.dart
+++ b/lib/view/pages/talk/chatBubble.dart
@@ -255,7 +255,7 @@ class _ChatBubbleState extends State {
},
),
),
- DebugTile(widget.bubbleData.toJson()).asTile(context),
+ DebugTile(context).jsonData(widget.bubbleData.toJson()),
],
);
});
diff --git a/lib/view/pages/talk/chatTextfield.dart b/lib/view/pages/talk/chatTextfield.dart
index 3f1ad50..93a9311 100644
--- a/lib/view/pages/talk/chatTextfield.dart
+++ b/lib/view/pages/talk/chatTextfield.dart
@@ -41,7 +41,7 @@ class _ChatTextfieldState extends State {
String filename = "${path.split("/").last.split(".").first}-${const Uuid().v4()}.${path.split(".").last}";
String shareFolder = "MarianumMobile";
WebdavApi.webdav.then((webdav) {
- webdav.mkcol("/$shareFolder");
+ webdav.mkcol(Uri.parse("/$shareFolder"));
});
showDialog(context: context, builder: (context) => FileUploadDialog(
diff --git a/lib/view/pages/talk/chatTile.dart b/lib/view/pages/talk/chatTile.dart
index f4e7327..3037d3d 100644
--- a/lib/view/pages/talk/chatTile.dart
+++ b/lib/view/pages/talk/chatTile.dart
@@ -172,7 +172,7 @@ class _ChatTileState extends State {
).asDialog(context);
},
),
- DebugTile(widget.data.toJson()).asTile(context),
+ DebugTile(context).jsonData(widget.data.toJson()),
],
));
},
diff --git a/lib/view/pages/timetable/appointmentDetails.dart b/lib/view/pages/timetable/appointmentDetails.dart
index db63516..2276d87 100644
--- a/lib/view/pages/timetable/appointmentDetails.dart
+++ b/lib/view/pages/timetable/appointmentDetails.dart
@@ -92,7 +92,7 @@ class AppointmentDetails {
leading: const Icon(Icons.people),
title: Text("Klasse(n): ${timetableData.kl.map((e) => e.name).join(", ")}"),
),
- DebugTile(timetableData.toJson()).asTile(context),
+ DebugTile(context).jsonData(timetableData.toJson()),
],
),
)
diff --git a/lib/view/settings/settings.dart b/lib/view/settings/settings.dart
index f106da4..f902198 100644
--- a/lib/view/settings/settings.dart
+++ b/lib/view/settings/settings.dart
@@ -1,4 +1,6 @@
+import 'dart:io';
+
import 'package:filesize/filesize.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
@@ -145,45 +147,48 @@ class _SettingsState extends State {
const Divider(),
- ListTile(
- leading: const CenteredLeading(Icon(Icons.notifications_active_outlined)),
- title: const Text("Push-Benachrichtigungen aktivieren"),
- subtitle: const Text("Lange tippen für mehr Informationen"),
- trailing: Checkbox(
- value: settings.val().notificationSettings.enabled,
- onChanged: (e) {
- if(e!) {
- ConfirmDialog(
- title: "Warnung",
- icon: Icons.warning_amber,
- content: ""
- "Die Push-Benachrichtigungen werden durch mhsl.eu versendet.\n\n"
- "Durch das aktivieren dieser Funktion wird dein Nutzername, dein Password und eine Geräte-ID von mhsl dauerhaft gespeichert und verarbeitet.\n\n"
- "Für mehr Informationen drücke lange auf die Einstellungsoption!",
- confirmButton: "Aktivieren",
- onConfirm: () {
- settings.val(write: true).notificationSettings.enabled = e;
- NotifyUpdater.registerToServer();
- },
- ).asDialog(context);
- } else {
- settings.val(write: true).notificationSettings.enabled = e;
- }
- },
- ),
- onLongPress: () => showDialog(context: context, builder: (context) => AlertDialog(
- title: const Text("Info über Push"),
- content: const SingleChildScrollView(child: Text(""
- "Aufgrund technischer Limitationen müssen Push-nachrichten über einen Externen Server - hier 'mhsl.eu' (Author dieser App) - erfolgen.\n\n"
- "Wenn Push aktiviert wird, werden deine Zugangsdaten und ein Token verschlüsselt an den Betreiber gesendet und von ihm unverschlüsselt gespeichert.\n\n"
- "Der extene Server verwendet die Zugangsdaten um sich maschinell in Nextcloud Talk anzumelden und via Websockets auf neue Nachrichten zu warten.\n\n"
- "Wenn eine neue Nachricht eintrifft wird dein Telefon via FBC-Messaging (Google Firebase Push) vom Externen Server benachrichtigt.\n\n"
- "Behalte im Hinterkopf, dass deine Zugangsdaten auf einem Externen Server gespeichert werden und dies trots bester Absichten ein Sicherheitsrisiko sein kann!"
+ Visibility(
+ visible: Platform.isAndroid,
+ child: ListTile(
+ leading: const CenteredLeading(Icon(Icons.notifications_active_outlined)),
+ title: const Text("Push-Benachrichtigungen aktivieren"),
+ subtitle: const Text("Lange tippen für mehr Informationen"),
+ trailing: Checkbox(
+ value: settings.val().notificationSettings.enabled,
+ onChanged: (e) {
+ if(e!) {
+ ConfirmDialog(
+ title: "Warnung",
+ icon: Icons.warning_amber,
+ content: ""
+ "Die Push-Benachrichtigungen werden durch mhsl.eu versendet.\n\n"
+ "Durch das aktivieren dieser Funktion wird dein Nutzername, dein Password und eine Geräte-ID von mhsl dauerhaft gespeichert und verarbeitet.\n\n"
+ "Für mehr Informationen drücke lange auf die Einstellungsoption!",
+ confirmButton: "Aktivieren",
+ onConfirm: () {
+ settings.val(write: true).notificationSettings.enabled = e;
+ NotifyUpdater.registerToServer();
+ },
+ ).asDialog(context);
+ } else {
+ settings.val(write: true).notificationSettings.enabled = e;
+ }
+ },
+ ),
+ onLongPress: () => showDialog(context: context, builder: (context) => AlertDialog(
+ title: const Text("Info über Push"),
+ content: const SingleChildScrollView(child: Text(""
+ "Aufgrund technischer Limitationen müssen Push-nachrichten über einen Externen Server - hier 'mhsl.eu' (Author dieser App) - erfolgen.\n\n"
+ "Wenn Push aktiviert wird, werden deine Zugangsdaten und ein Token verschlüsselt an den Betreiber gesendet und von ihm unverschlüsselt gespeichert.\n\n"
+ "Der extene Server verwendet die Zugangsdaten um sich maschinell in Nextcloud Talk anzumelden und via Websockets auf neue Nachrichten zu warten.\n\n"
+ "Wenn eine neue Nachricht eintrifft wird dein Telefon via FBC-Messaging (Google Firebase Push) vom Externen Server benachrichtigt.\n\n"
+ "Behalte im Hinterkopf, dass deine Zugangsdaten auf einem Externen Server gespeichert werden und dies trots bester Absichten ein Sicherheitsrisiko sein kann!"
+ )),
+ actions: [
+ TextButton(onPressed: () => Navigator.of(context).pop(), child: const Text("Zurück"))
+ ],
)),
- actions: [
- TextButton(onPressed: () => Navigator.of(context).pop(), child: const Text("Zurück"))
- ],
- )),
+ ),
),
const Divider(),
diff --git a/lib/widget/debug/debugTile.dart b/lib/widget/debug/debugTile.dart
index 0327bc3..8853d8b 100644
--- a/lib/widget/debug/debugTile.dart
+++ b/lib/widget/debug/debugTile.dart
@@ -1,26 +1,38 @@
+import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../storage/base/settingsProvider.dart';
+import '../centeredLeading.dart';
import 'jsonViewer.dart';
class DebugTile {
- Map data;
+ BuildContext context;
+ bool onlyInDebug;
+ DebugTile(this.context, {this.onlyInDebug = false});
- DebugTile(this.data);
+ Widget jsonData(Map data, {bool ignoreConfig = false}) {
+ return callback(
+ title: "JSON daten anzeigen",
+ onTab: () => JsonViewer.asDialog(context, data)
+ );
+ }
- Widget asTile(BuildContext context, {bool ignoreConfig = false}) {
- return Visibility(
- visible: Provider.of(context).val().devToolsEnabled || ignoreConfig,
- child: ListTile(
- leading: const Column(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [Icon(Icons.data_object)],
- ),
- title: const Text("JSON daten anzeigen"),
+ Widget callback({String title = "Debugaktion", required void Function() onTab}) {
+ return child(
+ ListTile(
+ leading: const CenteredLeading(Icon(Icons.developer_mode_outlined)),
+ title: Text(title),
subtitle: const Text("Entwicklermodus aktiviert"),
- onTap: () => JsonViewer.asDialog(context, data),
- ),
+ onTap: onTab,
+ )
+ );
+ }
+
+ Widget child(Widget child) {
+ return Visibility(
+ visible: Provider.of(context).val().devToolsEnabled && (onlyInDebug ? kDebugMode : true),
+ child: child,
);
}
}
\ No newline at end of file
diff --git a/lib/widget/fileViewer.dart b/lib/widget/fileViewer.dart
index 2cb45a2..edccd43 100644
--- a/lib/widget/fileViewer.dart
+++ b/lib/widget/fileViewer.dart
@@ -3,11 +3,11 @@ import 'dart:math';
import 'package:better_open_file/better_open_file.dart';
import 'package:flutter/material.dart';
-import 'package:marianum_mobile/storage/base/settingsProvider.dart';
import 'package:photo_view/photo_view.dart';
import 'package:provider/provider.dart';
import 'package:syncfusion_flutter_pdfviewer/pdfviewer.dart';
+import '../storage/base/settingsProvider.dart';
import 'placeholderView.dart';
class FileViewer extends StatefulWidget {
diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc
index 7299b5c..9874fcc 100644
--- a/linux/flutter/generated_plugin_registrant.cc
+++ b/linux/flutter/generated_plugin_registrant.cc
@@ -6,10 +6,14 @@
#include "generated_plugin_registrant.h"
+#include
#include
#include
void fl_register_plugins(FlPluginRegistry* registry) {
+ g_autoptr(FlPluginRegistrar) fast_rsa_registrar =
+ fl_plugin_registry_get_registrar_for_plugin(registry, "FastRsaPlugin");
+ fast_rsa_plugin_register_with_registrar(fast_rsa_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 786ff5c..887494c 100644
--- a/linux/flutter/generated_plugins.cmake
+++ b/linux/flutter/generated_plugins.cmake
@@ -3,6 +3,7 @@
#
list(APPEND FLUTTER_PLUGIN_LIST
+ fast_rsa
file_selector_linux
url_launcher_linux
)
diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift
index f9e6582..8ef9ded 100644
--- a/macos/Flutter/GeneratedPluginRegistrant.swift
+++ b/macos/Flutter/GeneratedPluginRegistrant.swift
@@ -6,6 +6,7 @@ import FlutterMacOS
import Foundation
import device_info_plus
+import fast_rsa
import file_selector_macos
import firebase_core
import firebase_messaging
@@ -19,6 +20,7 @@ import url_launcher_macos
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
+ FastRsaPlugin.register(with: registry.registrar(forPlugin: "FastRsaPlugin"))
FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin"))
FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin"))
diff --git a/pubspec.yaml b/pubspec.yaml
index 9984312..09f0011 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -56,7 +56,7 @@ dependencies:
git:
url: https://github.com/provokateurin/nextcloud-neon
path: packages/nextcloud
- ref: 9a42bdb3a0ef1e3dbd62f746fb0fe75856be66a3
+ #ref: 9a42bdb3a0ef1e3dbd62f746fb0fe75856be66a3
flutter_launcher_icons: ^0.13.1
pretty_json: ^2.0.0
cached_network_image: ^3.2.3
@@ -86,6 +86,7 @@ dependencies:
firebase_in_app_messaging: ^0.7.3+4
flutter_local_notifications: ^15.1.0+1
fluttertoast: ^8.2.2
+ fast_rsa: ^3.6.1
dev_dependencies:
flutter_test:
diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc
index 9f7d909..b785075 100644
--- a/windows/flutter/generated_plugin_registrant.cc
+++ b/windows/flutter/generated_plugin_registrant.cc
@@ -6,12 +6,15 @@
#include "generated_plugin_registrant.h"
+#include
#include
#include
#include
#include
void RegisterPlugins(flutter::PluginRegistry* registry) {
+ FastRsaPluginRegisterWithRegistrar(
+ registry->GetRegistrarForPlugin("FastRsaPlugin"));
FileSelectorWindowsRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FileSelectorWindows"));
FirebaseCorePluginCApiRegisterWithRegistrar(
diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake
index d9d5615..ab8f8ec 100644
--- a/windows/flutter/generated_plugins.cmake
+++ b/windows/flutter/generated_plugins.cmake
@@ -3,6 +3,7 @@
#
list(APPEND FLUTTER_PLUGIN_LIST
+ fast_rsa
file_selector_windows
firebase_core
syncfusion_pdfviewer_windows