deleteAnonymousAccount method

  1. @override
Future<AuthAnonymousMutationResult> deleteAnonymousAccount(
  1. AuthAnonymousDeleteAccountCommand command
)
override

Deletes anonymous account.

Implementation

@override
Future<AuthAnonymousMutationResult> deleteAnonymousAccount(
  AuthAnonymousDeleteAccountCommand command,
) => _serializeAnonymousMutation(() async {
  final fingerprint = hashOpaqueToken('delete:${command.userId}');
  final replay = _anonymousReplay(command.operationId, fingerprint);
  if (replay != null) return replay;
  final existing = await users.findById(command.userId);
  if (existing == null) {
    return const AuthAnonymousMutationResult(
      AuthAnonymousMutationStatus.notFound,
    );
  }
  if (!existing.isAnonymous) {
    return const AuthAnonymousMutationResult(
      AuthAnonymousMutationStatus.notAnonymous,
    );
  }
  if (!await _deletionCoordinator.deleteUser(command.userId)) {
    return const AuthAnonymousMutationResult(
      AuthAnonymousMutationStatus.notFound,
    );
  }
  _replaceAnonymousUserReceipts(
    userId: command.userId,
    operationId: command.operationId,
    fingerprint: fingerprint,
  );
  return const AuthAnonymousMutationResult(
    AuthAnonymousMutationStatus.applied,
  );
});