99 lines
4.0 KiB
Dart
99 lines
4.0 KiB
Dart
|
|
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 'package:share_plus/share_plus.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';
|
|
import 'message/message.dart';
|
|
import 'roomplan/roomplan.dart';
|
|
|
|
class Overhang extends StatelessWidget {
|
|
const Overhang({Key? key}) : super(key: key);
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
|
|
return Scaffold(
|
|
appBar: AppBar(
|
|
title: const Text("Mehr"),
|
|
actions: [
|
|
IconButton(onPressed: () => PersistentNavBarNavigator.pushNewScreen(context, screen: const Settings(), withNavBar: false), icon: const Icon(Icons.settings))
|
|
],
|
|
),
|
|
body: ListView(
|
|
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()),
|
|
ListTile(
|
|
leading: const Icon(Icons.share_outlined),
|
|
title: const Text("Teile die App"),
|
|
onTap: () {
|
|
Share.share(
|
|
sharePositionOrigin: Rect.fromCenter(
|
|
center: const Offset(0, 0),
|
|
width: 0,
|
|
height: 0,
|
|
),
|
|
subject: "App Teilen",
|
|
"Hol dir die für das Marianum maßgeschneiderte App:"
|
|
"\n\nAndroid: https://play.google.com/store/apps/details?id=eu.mhsl.marianum.mobile.client "
|
|
"\niOS: https://apps.apple.com/us/app/marianum-fulda/id6458789560 "
|
|
"\n\nViel Spaß!"
|
|
);
|
|
},
|
|
),
|
|
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.replaceAll("\n", "").replaceAll("-----END RSA PUBLIC KEY-----", "").replaceAll("-----BEGIN RSA PUBLIC KEY-----", "").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}");
|
|
});
|
|
}),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|