mirror of
https://gitlab.com/famedly/fluffychat.git
synced 2024-11-01 01:29:28 +01:00
62 lines
2.1 KiB
Dart
62 lines
2.1 KiB
Dart
import 'package:matrix/matrix.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
|
|
|
import '../../config/app_config.dart';
|
|
|
|
class VerificationRequestContent extends StatelessWidget {
|
|
final Event event;
|
|
final Timeline timeline;
|
|
|
|
const VerificationRequestContent({this.event, this.timeline});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final events = event.aggregatedEvents(timeline, 'm.reference');
|
|
final done = events.where((e) => e.type == EventTypes.KeyVerificationDone);
|
|
final start =
|
|
events.where((e) => e.type == EventTypes.KeyVerificationStart);
|
|
final cancel =
|
|
events.where((e) => e.type == EventTypes.KeyVerificationCancel);
|
|
final fullyDone = done.length >= 2;
|
|
final started = start.isNotEmpty;
|
|
final canceled = cancel.isNotEmpty;
|
|
return Padding(
|
|
padding: EdgeInsets.symmetric(
|
|
horizontal: 8.0,
|
|
vertical: 4.0,
|
|
),
|
|
child: Center(
|
|
child: Container(
|
|
padding: EdgeInsets.all(8),
|
|
decoration: BoxDecoration(
|
|
border: Border.all(
|
|
color: Theme.of(context).dividerColor,
|
|
),
|
|
borderRadius: BorderRadius.circular(AppConfig.borderRadius),
|
|
color: Theme.of(context).backgroundColor,
|
|
),
|
|
child: Row(
|
|
mainAxisSize: MainAxisSize.min,
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
children: <Widget>[
|
|
Icon(Icons.lock_outlined,
|
|
color: canceled
|
|
? Colors.red
|
|
: (fullyDone ? Colors.green : Colors.grey)),
|
|
SizedBox(width: 8),
|
|
Text(canceled
|
|
? 'Error ${cancel.first.content.tryGet<String>('code')}: ${cancel.first.content.tryGet<String>('reason')}'
|
|
: (fullyDone
|
|
? L10n.of(context).verifySuccess
|
|
: (started
|
|
? L10n.of(context).loadingPleaseWait
|
|
: L10n.of(context).newVerificationRequest)))
|
|
],
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|