shouldSync method

  1. @override
FutureOr<bool> shouldSync(
  1. Iterable<SlashCommandBuilder> commands
)
override

Should the commands & perms be synced?

Implementation

@override
FutureOr<bool> shouldSync(Iterable<SlashCommandBuilder> commands) async {
  final lockFile = File("./nyxx_interactions.lock");
  final lockFileMapData = <String, String>{};

  for (final c in commands) {
    lockFileMapData[c.name] = new _LockfileCommand(
      c.name,
      c.description,
      c.guild,
      c.defaultPermissions,
      c.permissions?.map((p) => new _LockfilePermission(p._type, p.id, p.hasPermission)) ?? [],
      c.options.map((o) => new _LockfileOption(o.type.value, o.name, o.description, o.options ?? [])),
    ).generateHash();
  }

  if (!lockFile.existsSync()) {
    await lockFile.writeAsString(jsonEncode(lockFileMapData));
    return true;
  }

  final lockfileData = jsonDecode(lockFile.readAsStringSync()) as _LockfileCommand;

  if (lockFileMapData == lockfileData) {
    return false;
  }

  await lockFile.writeAsString(jsonEncode(lockFileMapData));
  return true;
}