deleteAnonymousAccount method
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,
);
});