refactor(ceasar-core): changed from using openssl to rustls

This commit is contained in:
Patryk Hegenberg 2024-05-24 16:47:44 +02:00
parent 1b83c0b5ff
commit 1586818bd6
11 changed files with 298 additions and 262 deletions

View file

@ -3,6 +3,7 @@ import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_test_gui/main.dart';
import 'package:mobile_scanner/mobile_scanner.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:flutter_test_gui/src/rust/api/simple.dart';
import 'package:flutter_test_gui/src/rust/frb_generated.dart';
@ -20,7 +21,7 @@ class ReceiveScreen extends StatefulWidget {
class _ReceiveScreenState extends State<ReceiveScreen> {
String appOrigin = '';
final myController = TextEditingController();
String greetingText = '';
String inputValue = '';
bool _showScanner = false;
Widget _buildQRScanner() {
@ -34,7 +35,7 @@ class _ReceiveScreenState extends State<ReceiveScreen> {
} else {
final String code = barcode.raw.toString();
setState(() {
greetingText = code;
inputValue = code;
_showScanner = false;
});
}
@ -52,31 +53,72 @@ class _ReceiveScreenState extends State<ReceiveScreen> {
'wss://caesar-transfer-iu.shuttleapp.rs'; // Laden Sie die app_origin
}
Future<void> _startTransfer(String appOrigin) async {
final transferName = myController.text.trim();
if (transferName.isNotEmpty) {
try {
final outcome = await startRustReceiver(
transfername: transferName, relay: appOrigin);
print('Receiver erfolgreich gestartet ');
print('Ergebnis von Rust: $outcome');
} catch (e) {
print('Fehler beim Starten des Receivers: $e');
Future<bool> _requestPermission(Permission permission) async {
print("In _requestPermission");
if (await permission.isGranted) {
print("Granted");
return true;
} else {
print("Else Zweig");
final result = await permission.request();
if (result == PermissionStatus.granted) {
return true;
} else {
return false;
}
}
}
Future<void> _startTransfer(String appOrigin) async {
final input = inputValue.trim();
if (input.isNotEmpty) {
if (Platform.isAndroid) {
if (await _requestPermission(Permission.manageExternalStorage)) {
try {
final outcome =
await startRustReceiver(transfername: input, relay: appOrigin);
print('Ergebnis von Rust: $outcome');
} catch (e) {
print('Fehler beim Starten des Receivers: $e');
}
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => MyHomePage(title: 'Caesar Transfer')));
} else {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => MyHomePage(title: 'Caesar Transfer')));
}
} else {
try {
final outcome =
await startRustReceiver(transfername: input, relay: appOrigin);
print('Ergebnis von Rust: $outcome');
} catch (e) {
print('Fehler beim Starten des Receivers: $e');
}
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => MyHomePage(title: 'Caesar Transfer')));
}
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => MyHomePage(title: 'Caesar Transfer')));
}
print("Transfer startet with app_origin: $appOrigin");
}
// Future<void> _startTransfer(String appOrigin) async {
// final transferName = myController.text.trim();
// if (transferName.isNotEmpty) {
// final outcome =
// startRustReceiver(transfername: transferName, relay: appOrigin);
// Future<bool> requestPermission(Permission permission) async {
// if (await permission.isGranted) {
// return true;
// } else {
// var result = await permission.request();
// if (result == PermissionStatus.granted) {
// return true;
// } else {
// return false;
// }
// }
// print("Transfer startet with app_origin: $appOrigin");
// }
@override
@ -133,6 +175,11 @@ class _ReceiveScreenState extends State<ReceiveScreen> {
style: const TextStyle(
color: Constants.highlightColor,
),
onChanged: (value) {
setState(() {
inputValue = value;
});
},
decoration: const InputDecoration(
labelText: 'Enter Transfername',
alignLabelWithHint: true,
@ -162,10 +209,6 @@ class _ReceiveScreenState extends State<ReceiveScreen> {
},
child: const Text('Receive'),
),
Text(
greetingText,
style: const TextStyle(color: Constants.textColor),
),
],
)),
);

View file

@ -0,0 +1,117 @@
import 'package:flutter/material.dart';
import 'package:flutter_test_gui/main.dart';
import 'package:qr_flutter/qr_flutter.dart';
import 'package:cross_file/cross_file.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:flutter_test_gui/src/rust/api/simple.dart';
import 'package:flutter_test_gui/src/rust/frb_generated.dart';
import 'package:flutter_test_gui/consts/consts.dart';
import 'package:permission_handler/permission_handler.dart';
// const backColor = Color(0xFF32363E);
// const highlightColor = Color(0xFF98C379);
// const textColor = Color(0xFFABB2BF);
class TransferScreen extends StatefulWidget {
final List<XFile> files;
final String transferName;
const TransferScreen(
{Key? key, required this.transferName, required this.files})
: super(key: key);
@override
_TransferScreenState createState() => _TransferScreenState();
}
class _TransferScreenState extends State<TransferScreen> {
String appOrigin = '';
String inputValue = '';
@override
void initState() {
super.initState();
loadSettings().then((_) => callStartReceiver(appOrigin));
}
Future<void> loadSettings() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
appOrigin = prefs.getString('app_origin') ??
'wss://caesar-transfer-iu.shuttleapp.rs'; // Laden Sie die app_origin
}
Future<void> callStartReceiver(String appOrigin) async {
_startTransfer(appOrigin);
}
Future<void> _startTransfer(String appOrigin) async {
final input = inputValue.trim();
if (input.isNotEmpty) {
// if (Platform.isAndroid) {
// if (await _requestPermission(Permission.storage)) {
// try {
// final outcome =
// await startRustReceiver(transfername: input, relay: appOrigin);
// print('Ergebnis von Rust: $outcome');
// } catch (e) {
// print('Fehler beim Starten des Receivers: $e');
// }
// Navigator.push(
// context,
// MaterialPageRoute(
// builder: (context) => MyHomePage(title: 'Caesar Transfer')));
// } else {}
// } else {
try {
final outcome =
await startRustReceiver(transfername: input, relay: appOrigin);
print('Ergebnis von Rust: $outcome');
} catch (e) {
print('Fehler beim Starten des Receivers: $e');
}
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => MyHomePage(title: 'Caesar Transfer')));
}
// }
print("Transfer startet with app_origin: $appOrigin");
}
Future<bool> _requestPermission(Permission permission) async {
if (await permission.isGranted) {
return true;
} else {
var result = await permission.request();
if (result == PermissionStatus.granted) {
return true;
} else {
return false;
}
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Constants.backColor,
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
widget.transferName,
style: const TextStyle(color: Colors.white, fontSize: 24),
),
const SizedBox(height: 32),
QrImageView(
data: widget.transferName,
version: QrVersions.auto,
size: 200,
foregroundColor: Constants.highlightColor,
),
],
),
),
);
}
}