feat: Better encryption / verification

This commit is contained in:
Sorunome 2020-10-31 10:39:38 +01:00
commit 274ca76db8
8 changed files with 140 additions and 48 deletions

View file

@ -12,6 +12,8 @@ import 'package:flutter_gen/gen_l10n/l10n.dart';
import '../utils/presence_extension.dart';
import 'dialogs/simple_dialogs.dart';
import 'matrix.dart';
import '../views/key_verification.dart';
import '../utils/app_route.dart';
class UserBottomSheet extends StatelessWidget {
final User user;
@ -72,9 +74,22 @@ class UserBottomSheet extends StatelessWidget {
}
}
void _verifyAction(BuildContext context) async {
final client = Matrix.of(context).client;
final req = await client.userDeviceKeys[user.id].startVerification();
await Navigator.of(context).push(
AppRoute.defaultRoute(
context,
KeyVerificationView(request: req),
),
);
}
@override
Widget build(BuildContext context) {
final presence = Matrix.of(context).client.presences[user.id];
final client = Matrix.of(context).client;
final presence = client.presences[user.id];
final verificationStatus = client.userDeviceKeys[user.id]?.verified;
var items = <PopupMenuEntry<String>>[];
if (onMention != null) {
@ -145,6 +160,21 @@ class UserBottomSheet extends StatelessWidget {
),
title: Text(user.calcDisplayname()),
actions: [
if (verificationStatus != null)
InkWell(
child: Icon(
Icons.lock,
color: {
UserVerifiedStatus.unknownDevice: Colors.red,
UserVerifiedStatus.verified: Colors.green,
}[verificationStatus] ??
Colors.orange,
),
onTap: () =>
verificationStatus == UserVerifiedStatus.unknown
? _verifyAction(context)
: null,
),
if (user.id != Matrix.of(context).client.userID)
PopupMenuButton(
itemBuilder: (_) => items,