createForumThread method

Future<Thread> createForumThread(
  1. Snowflake id,
  2. ForumThreadBuilder builder
)

Create a thread in a forum channel.

Implementation

Future<Thread> createForumThread(Snowflake id, ForumThreadBuilder builder) async {
  final route = HttpRoute()
    ..channels(id: id.toString())
    ..threads();

  final HttpRequest request;
  if (builder.message.attachments?.isNotEmpty == true) {
    final attachments = builder.message.attachments!;
    final payload = builder.build();

    final files = <MultipartFile>[];
    for (int i = 0; i < attachments.length; i++) {
      files.add(MultipartFile.fromBytes(
        'files[$i]',
        attachments[i].data,
        filename: attachments[i].fileName,
      ));

      (((payload['message'] as Map)['attachments'] as List)[i] as Map)['id'] = i.toString();
    }

    request = MultipartRequest(
      route,
      method: 'POST',
      jsonPayload: jsonEncode(payload),
      files: files,
    );
  } else {
    request = BasicRequest(route, method: 'POST', body: jsonEncode(builder.build()));
  }

  final response = await client.httpHandler.executeSafe(request);
  final thread = parse(response.jsonBody as Map<String, Object?>) as Thread;

  client.updateCacheWith(thread);
  return thread;
}