parsePublicThread method

PublicThread parsePublicThread(
  1. Map<String, Object?> raw, {
  2. Snowflake? guildId,
})

Implementation

PublicThread parsePublicThread(Map<String, Object?> raw, {Snowflake? guildId}) {
  assert(raw['type'] == ChannelType.publicThread.value, 'Invalid type for PublicThread');

  return PublicThread(
    id: Snowflake.parse(raw['id']!),
    manager: this,
    appliedTags: maybeParse<List<Snowflake>, List<dynamic>>(raw['applied_tags'], (tags) => parseMany(tags, Snowflake.parse)),
    approximateMemberCount: raw['member_count'] as int,
    archiveTimestamp: DateTime.parse((raw['thread_metadata'] as Map)['archive_timestamp'] as String),
    autoArchiveDuration: Duration(minutes: (raw['thread_metadata'] as Map)['auto_archive_duration'] as int),
    createdAt: maybeParse((raw['thread_metadata'] as Map)['create_timestamp'], DateTime.parse) ?? DateTime(2022, 1, 9),
    guildId: guildId ?? Snowflake.parse(raw['guild_id']!),
    isArchived: (raw['thread_metadata'] as Map)['archived'] as bool,
    isLocked: (raw['thread_metadata'] as Map)['locked'] as bool,
    isNsfw: raw['nsfw'] as bool? ?? false,
    lastMessageId: maybeParse(raw['last_message_id'], Snowflake.parse),
    lastPinTimestamp: maybeParse(raw['last_pin_timestamp'], DateTime.parse),
    messageCount: raw['message_count'] as int,
    name: raw['name'] as String,
    ownerId: Snowflake.parse(raw['owner_id']!),
    parentId: maybeParse(raw['parent_id'], Snowflake.parse),
    permissionOverwrites: maybeParseMany(raw['permission_overwrites'], parsePermissionOverwrite) ?? [],
    position: -1,
    rateLimitPerUser: maybeParse<Duration?, int>(raw['rate_limit_per_user'], (value) => value == 0 ? null : Duration(seconds: value)),
    totalMessagesSent: raw['total_message_sent'] as int,
    flags: maybeParse(raw['flags'], ChannelFlags.new),
  );
}