getAllRobots method

Future<void> getAllRobots()

Implementation

Future<void> getAllRobots() async {
  String? pageToken;
  bool hasMore = true;
  final all = <V2NIMUserAIBot>[];

  while (hasMore) {
    final result = await NimCore.instance.aiService.getUserAIBotList(
      V2NIMGetUserAIBotListParams(
        pageToken: pageToken,
        limit: pageSize,
      ),
    );
    if (!result.isSuccess) {
      Alog.e(
        tag: logTag,
        content: 'getUserAIBotList failed: ${result.errorDetails}',
      );
      return;
    }
    final bots = result.data?.bots ?? const <V2NIMUserAIBot>[];
    all.addAll(bots);
    hasMore = result.data?.hasMore == true;
    pageToken = result.data?.nextToken;
    if (!hasMore || pageToken == null || pageToken.isEmpty) {
      hasMore = false;
    }
  }

  robotCache
    ..clear()
    ..addEntries(
      all.where((bot) => bot.accid?.isNotEmpty == true).map(
            (bot) => MapEntry(bot.accid!, bot),
          ),
    );
  _robotChangeController.add(all);
}