parseGuildTemplate method

GuildTemplate parseGuildTemplate(
  1. Map<String, Object?> raw
)

Parse a GuildTemplate from raw.

Implementation

GuildTemplate parseGuildTemplate(Map<String, Object?> raw) {
  final sourceGuildId = Snowflake.parse(raw['source_guild_id']!);

  return GuildTemplate(
    code: raw['code'] as String,
    manager: this,
    name: raw['name'] as String,
    description: raw['description'] as String?,
    usageCount: raw['usage_count'] as int,
    creatorId: Snowflake.parse(raw['creator_id']!),
    creator: client.users.parse(raw['creator'] as Map<String, Object?>),
    createdAt: DateTime.parse(raw['created_at'] as String),
    updatedAt: DateTime.parse(raw['updated_at'] as String),
    sourceGuildId: sourceGuildId,
    // Add synthetic fields so we can parse the (mostly complete) partial guild as a full guild
    serializedSourceGuild: parse({
      'id': sourceGuildId.toString(),
      'owner_id': Snowflake.zero.toString(),
      'features': [],
      'mfa_level': MfaLevel.none.value,
      'premium_tier': PremiumTier.none.value,
      'nsfw_level': NsfwLevel.unset.value,
      'premium_progress_bar_enabled': false,
      'emojis': [],
      ...(raw['serialized_source_guild'] as Map<String, Object?>),
      'roles': [
        for (final role in ((raw['serialized_source_guild'] as Map<String, Object?>)['roles'] as List).cast<Map<String, Object?>>())
          {
            'position': 0,
            'flags': 0,
            ...role,
          },
      ],
    }),
    isDirty: raw['is_dirty'] as bool?,
  );
}