parsePrivateThread method
Implementation
PrivateThread parsePrivateThread(Map<String, Object?> raw, {Snowflake? guildId}) {
assert(raw['type'] == ChannelType.privateThread.value, 'Invalid type for PrivateThread');
return PrivateThread(
id: Snowflake.parse(raw['id']!),
manager: this,
isInvitable: (raw['thread_metadata'] as Map)['invitable'] as bool,
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),
);
}