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, Key? key})
      : super(key: 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).backgroundColor,
          ),
          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)))
            ],
          ),
        ),
      ),
    );
  }
}
