onSasKeysExchanged method

void onSasKeysExchanged(
  1. dynamic event
)

Implementation

void onSasKeysExchanged(VerificationEvent event) {
  _log.info('emitter sas.keys_exchanged');
  if (keysExchanged) {
    return; // skip 2nd occurrence of this event when other clicked match
  }
  setState(() => keysExchanged = true);

  // close dialog from previous stage, ex: sas.started
  final nav = Navigator.of(context, rootNavigator: true);
  if (nav.canPop()) nav.pop();

  if (isVerifier) {
    // open sas.keys_exchanged dialog
    showModalBottomSheet(
      context: context,
      builder: (BuildContext context) => SasKeysExchangedView(
        sender: event.sender(),
        isVerifier: isVerifier,
        emojis: event.emojis(),
        onCancel: (BuildContext context) async {
          await event.cancelSasVerification();
        },
        onMatch: (BuildContext context) async {
          _log.info('sas.keys_exchanged - match');
          await event.confirmSasVerification();
        },
        onMismatch: (BuildContext context) async {
          _log.info('sas.keys_exchanged - mismatch');
          await event.mismatchSasVerification();
        },
      ),
      isDismissible: false,
    );
  } else {
    // fetch emojis
    event.getEmojis().then((emojis) {
      if (!context.mounted) return;
      // open sas.keys_exchanged dialog
      showModalBottomSheet(
        // ignore: use_build_context_synchronously
        context: context,
        builder: (BuildContext context) => SasKeysExchangedView(
          sender: event.sender(),
          isVerifier: isVerifier,
          emojis: emojis,
          onCancel: (BuildContext context) async {
            await event.cancelSasVerification();
          },
          onMatch: (BuildContext context) async {
            _log.info('sas.keys_exchanged - match');
            await event.confirmSasVerification();
          },
          onMismatch: (BuildContext context) async {
            _log.info('sas.keys_exchanged - mismatch');
            await event.mismatchSasVerification();
          },
        ),
        isDismissible: false,
      );
    });
  }
}