diff --git a/lib/src/classes/guild/guild.dart b/lib/src/classes/guild/guild.dart index a367098..cdfbf5e 100644 --- a/lib/src/classes/guild/guild.dart +++ b/lib/src/classes/guild/guild.dart @@ -1,3 +1,5 @@ +import '../images/guild_icon.dart'; + import '../../requests.dart'; import '../channel/channel.dart'; import '../channel/channel_manager.dart'; @@ -15,11 +17,16 @@ class Guild { RoleManager? roles; // Param guild create | fetch | fetch-servers - late String id; // x | x | x - late bool unavailable; // x | x | - String? name; // x | x | x - String? icon; // x | x | x - String? iconHash; // x | x | + /// The guild's id
+ /// ✅ GuildCreate, GuildUpdate, GuildDelete, FetchOneGuild, FetchAllGuild + late String id; + /// Whether the guild is available to access. If it is not available, it indicates a server outage + /// ✅ GuildCreate, GuildDelete + /// ❎ FetchOneGuild, FetchAllGuild, GuildUpdate + late bool unavailable; + late String name; // x | x | x + late GuildIcon? icon; // x | x | x + late String? iconHash; // x | x | String? splash; // x | x | String? discoverySplash; // x | x | bool? appIsOwner; // | | x @@ -60,92 +67,87 @@ class Guild { Guild(this._sender, Map data) { id = data["id"]; + if(data["channels"] != null && data["members"] != null && data["roles"] != null) { + List cc = []; + for (var c in data["channels"]) { + cc.add(Channel(_sender, c)); + } + channels = ChannelManager(_sender, cc); - // Without discord outages - if (data["unavailable"] != null && !data["unavailable"]) { - if(data["channels"] != null && data["members"] != null && data["roles"] != null) { - List cc = []; - for (var c in data["channels"]) { - cc.add(Channel(_sender, c)); - } - channels = ChannelManager(_sender, cc); + List mm = []; + for (var m in data["members"]) { + mm.add(Member(m)); + } + members = MemberManager(_sender, mm, id); - List mm = []; - for (var m in data["members"]) { - mm.add(Member(m)); - } - members = MemberManager(_sender, mm, id); + List rr = []; + for (var r in data["roles"]) { + rr.add(Role(r)); + } + roles = RoleManager(rr); + } else { + channels = ChannelManager(_sender, []); + members = MemberManager(_sender, [], id); + roles = RoleManager([]); + } - List rr = []; - for (var r in data["roles"]) { - rr.add(Role(r)); - } - roles = RoleManager(rr); - } else { - channels = ChannelManager(_sender, []); - members = MemberManager(_sender, [], id); - roles = RoleManager([]); - } + unavailable = false; + name = data["name"]; + icon = GuildIcon(data["icon"], id); + iconHash = data["icon_hash"]; + splash = data["splash"]; + if (data["discovery_splash"] != null) { + discoverySplash = data["discovery_splash"]; + } else { + discoverySplash = null; + } + appIsOwner = data["owner"]; + ownerId = data["owner_id"]; + owner = members?.fetch(ownerId.toString()); + permissions = data["permissions"]; + afkChannelId = data["afk_channel_id"]; + afkTimeout = data["afk_timeout"]; + widgetEnabled = data["widget_enabled"]; + widgetChannelId = data["widget_channel_id"]; + verificationLevel = data["verification_level"]; + defaultMessageNotifications = data["default_message_notifications"]; + explicitContentFilter = data["explicit_content_filter"]; + features = data["features"]; + mfaLevel = data["mfa_level"]; + applicationId = data["application_id"]; + systemChannelId = data["system_channel_id"]; + systemChannelFlags = data["system_channel_flags"]; + rulesChannelId = data["rules_channel_id"]; + maxPresences = data["max_presences"]; + maxMembers = data["max_members"]; + vanityUrlCode = data["vanity_url_code"]; + description = data["description"]; + banner = data["banner"]; + premiumTier = data["premium_tier"]; + premiumSubscriptionCount = data["premium_subscription_count"]; + preferredLocale = data["preferred_locale"]; + publicUpdatesChannelId = data["public_updates_channel_id"]; + maxVideoChannelUsers = data["max_video_channel_users"]; + maxStageVideoChannelUsers = data["max_stage_video_channel_users"]; + premiumProgressBarEnabled = data["premium_progress_bar_enabled"]; + safetyAlertsChannelId = data["safety_alerts_channel_id"]; - unavailable = data["unavailable"] ?? false; - name = data["name"]; - icon = data["icon"]; - iconHash = data["icon_hash"]; - splash = data["splash"]; - if (data["discovery_splash"] != null) { - discoverySplash = data["discovery_splash"]; - } else { - discoverySplash = null; - } - appIsOwner = data["owner"]; - ownerId = data["owner_id"]; - owner = members?.fetch(ownerId.toString()); - permissions = data["permissions"]; - afkChannelId = data["afk_channel_id"]; - afkTimeout = data["afk_timeout"]; - widgetEnabled = data["widget_enabled"]; - widgetChannelId = data["widget_channel_id"]; - verificationLevel = data["verification_level"]; - defaultMessageNotifications = data["default_message_notifications"]; - explicitContentFilter = data["explicit_content_filter"]; - features = data["features"]; - mfaLevel = data["mfa_level"]; - applicationId = data["application_id"]; - systemChannelId = data["system_channel_id"]; - systemChannelFlags = data["system_channel_flags"]; - rulesChannelId = data["rules_channel_id"]; - maxPresences = data["max_presences"]; - maxMembers = data["max_members"]; - vanityUrlCode = data["vanity_url_code"]; - description = data["description"]; - banner = data["banner"]; - premiumTier = data["premium_tier"]; - premiumSubscriptionCount = data["premium_subscription_count"]; - preferredLocale = data["preferred_locale"]; - publicUpdatesChannelId = data["public_updates_channel_id"]; - maxVideoChannelUsers = data["max_video_channel_users"]; - maxStageVideoChannelUsers = data["max_stage_video_channel_users"]; - premiumProgressBarEnabled = data["premium_progress_bar_enabled"]; - safetyAlertsChannelId = data["safety_alerts_channel_id"]; + if (data["approximate_member_count"] != null) { + approximateMemberCount = data["approximate_member_count"]; + } + if (data["approximate_presence_count"] != null) { + approximatePresenceCount = data["approximate_presence_count"]; + } - if (data["approximate_member_count"] != null) { - approximateMemberCount = data["approximate_member_count"]; - } - if (data["approximate_presence_count"] != null) { - approximatePresenceCount = data["approximate_presence_count"]; - } - // GuildCreate only - if (data["joined_at"] != null) { - joinedAt = data["joined_at"]; - } - if (data["large"] != null) { - large = data["large"]; - } - if (data["member_count"] != null) { - memberCount = data["member_count"]; - } - } else if (data["unavailable"] != null) { - unavailable = data["unavailable"]; + // GuildCreate only + if (data["joined_at"] != null) { + joinedAt = data["joined_at"]; + } + if (data["large"] != null) { + large = data["large"]; + } + if (data["member_count"] != null) { + memberCount = data["member_count"]; } } } \ No newline at end of file diff --git a/lib/src/classes/guild/unavailable_guild.dart b/lib/src/classes/guild/unavailable_guild.dart new file mode 100644 index 0000000..733dfa1 --- /dev/null +++ b/lib/src/classes/guild/unavailable_guild.dart @@ -0,0 +1,13 @@ +import '../../requests.dart'; +import "guild.dart"; + +class UnavailableGuild { + final Sender _sender; + late String id; + late bool unavailable; + late Guild? notUpdatedData; + + UnavailableGuild(this._sender, this.id, { this.notUpdatedData }) { + unavailable = true; + } +} \ No newline at end of file diff --git a/lib/src/classes/images/base_image.dart b/lib/src/classes/images/base_image.dart new file mode 100644 index 0000000..bf0a9e1 --- /dev/null +++ b/lib/src/classes/images/base_image.dart @@ -0,0 +1,4 @@ +class BaseImage { + late String hash; + BaseImage(this.hash); +} \ No newline at end of file diff --git a/lib/src/classes/images/guild_icon.dart b/lib/src/classes/images/guild_icon.dart new file mode 100644 index 0000000..f566227 --- /dev/null +++ b/lib/src/classes/images/guild_icon.dart @@ -0,0 +1,12 @@ +import 'base_image.dart'; + +class GuildIcon extends BaseImage { + late String id; + GuildIcon(String hash, this.id) : super(hash) { + this.hash = hash; + } + + String url(String? extension) { + return "https://cdn.discordapp.com/guild-icons/$id/$hash.$extension"; + } +} \ No newline at end of file