runAsync method

  1. @override
Future<void> runAsync(
  1. String label,
  2. List<String> args
)

Implementation

@override
Future<void> runAsync(String label, List<String> args) async {
  if (args.length != 2) {
    throw const CommandUsageException();
  }
  final action = args[0].toLowerCase();
  final user = await server.userManager.getUserByReference(args[1]);
  if (user == null) {
    server.log("User not found: ${args[1]}", level: LogLevel.error);
    return;
  }
  final fingerprint = user.fingerprint;
  if (fingerprint == null) {
    server.log(
      "User ${user.name} has no fingerprint.",
      level: LogLevel.error,
    );
    return;
  }

  if (action == 'add') {
    final result = await server.userManager.service?.updateUser(
      fingerprint,
      onWhitelist: true,
    );
    if (result != true) {
      server.log(
        "Failed to add ${user.name} to the whitelist.",
        level: LogLevel.error,
      );
      return;
    }
    server.log("Added ${user.name} to the whitelist.", level: LogLevel.info);
  } else if (action == 'remove') {
    final result = await server.userManager.service?.updateUser(
      fingerprint,
      onWhitelist: false,
    );
    if (result != true) {
      server.log(
        "Failed to remove ${user.name} from the whitelist.",
        level: LogLevel.error,
      );
      return;
    }
    server.log(
      "Removed ${user.name} from the whitelist.",
      level: LogLevel.info,
    );
  } else {
    throw const CommandUsageException();
  }
}