Implementation
ResolvedData parseResolvedData(Map<String, Object?> raw, {Snowflake? guildId, Snowflake? channelId}) {
return ResolvedData(
users: maybeParse(
raw['users'],
(Map<String, Object?> raw) => raw.map((key, value) => MapEntry(Snowflake.parse(key), client.users.parse(value as Map<String, Object?>))),
),
members: maybeParse(
raw['members'],
(Map<String, Object?> raw) => raw.map(
(key, value) => MapEntry(
Snowflake.parse(key),
client.guilds[guildId ?? Snowflake.zero].members.parse(value as Map<String, Object?>, userId: Snowflake.parse(key)),
),
),
),
roles: maybeParse(
raw['roles'],
(Map<String, Object?> raw) =>
raw.map((key, value) => MapEntry(Snowflake.parse(key), client.guilds[guildId ?? Snowflake.zero].roles.parse(value as Map<String, Object?>))),
),
channels: maybeParse(
raw['channels'],
(Map<String, Object?> raw) => raw.map(
(key, value) => MapEntry(
Snowflake.parse(key),
PartialChannel(id: Snowflake.parse((value as Map<String, Object?>)['id']!), manager: client.channels),
),
),
),
messages: maybeParse(
raw['messages'],
(Map<String, Object?> raw) => raw.map(
(key, value) => MapEntry(
Snowflake.parse(key),
PartialMessage(
id: Snowflake.parse((value as Map<String, Object?>)['id']!),
manager: (client.channels[channelId ?? Snowflake.zero] as PartialTextChannel).messages),
),
),
),
attachments: maybeParse(
raw['attachments'],
(Map<String, Object?> raw) => raw.map(
(key, value) => MapEntry(
Snowflake.parse(key),
(client.channels[channelId ?? Snowflake.zero] as PartialTextChannel).messages.parseAttachment(value as Map<String, Object?>),
),
),
),
);
}