You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			71 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Dart
		
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Dart
		
	
import 'package:flutter/material.dart';
 | 
						|
 | 
						|
import 'package:flutter_gen/gen_l10n/l10n.dart';
 | 
						|
import 'package:matrix/matrix.dart';
 | 
						|
 | 
						|
import '../../../config/app_config.dart';
 | 
						|
 | 
						|
class VerificationRequestContent extends StatelessWidget {
 | 
						|
  final Event event;
 | 
						|
  final Timeline timeline;
 | 
						|
 | 
						|
  const VerificationRequestContent({
 | 
						|
    required this.event,
 | 
						|
    required this.timeline,
 | 
						|
    super.key,
 | 
						|
  });
 | 
						|
 | 
						|
  @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: const EdgeInsets.symmetric(
 | 
						|
        horizontal: 8.0,
 | 
						|
        vertical: 4.0,
 | 
						|
      ),
 | 
						|
      child: Center(
 | 
						|
        child: Container(
 | 
						|
          padding: const EdgeInsets.all(8),
 | 
						|
          decoration: BoxDecoration(
 | 
						|
            border: Border.all(
 | 
						|
              color: Theme.of(context).dividerColor,
 | 
						|
            ),
 | 
						|
            borderRadius: BorderRadius.circular(AppConfig.borderRadius),
 | 
						|
            color: Theme.of(context).colorScheme.background,
 | 
						|
          ),
 | 
						|
          child: Row(
 | 
						|
            mainAxisSize: MainAxisSize.min,
 | 
						|
            crossAxisAlignment: CrossAxisAlignment.center,
 | 
						|
            children: <Widget>[
 | 
						|
              Icon(
 | 
						|
                Icons.lock_outlined,
 | 
						|
                color: canceled
 | 
						|
                    ? Colors.red
 | 
						|
                    : (fullyDone ? Colors.green : Colors.grey),
 | 
						|
              ),
 | 
						|
              const 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)),
 | 
						|
              ),
 | 
						|
            ],
 | 
						|
          ),
 | 
						|
        ),
 | 
						|
      ),
 | 
						|
    );
 | 
						|
  }
 | 
						|
}
 |