loginWithExternalSigner method

Future<void> loginWithExternalSigner()

Implementation

Future<void> loginWithExternalSigner() async {
  isWaitingForExternalSigner = true;
  try {
    const signer = Nip55Signer();

    final isInstalled = await signer.isAppInstalled();

    if (!isInstalled) {
      isWaitingForExternalSigner = false;
      launchUrl(Uri.parse('https://github.com/greenart7c3/Amber'));
      return;
    }

    final loginResult = await signer.login();
    if (loginResult == null) {
      isWaitingForExternalSigner = false;
      return;
    }

    final externalSigner = Nip55EventSigner(
      publicKey: loginResult.pubkey,
      // pin the signer captured at login so later requests can be silent
      nip55Signer: Nip55Signer(package: loginResult.package),
    );

    ndk.accounts.loginExternalSigner(signer: externalSigner);

    isWaitingForExternalSigner = false;

    await loggedIn();
  } finally {
    isWaitingForExternalSigner = false;
  }
}