Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
Signed-off-by: Jens Reidel <[email protected]>
  • Loading branch information
Gelbpunkt committed Jun 25, 2024
1 parent 84076d8 commit 4c16890
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 21 deletions.
36 changes: 18 additions & 18 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

35 changes: 32 additions & 3 deletions src/cache.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ use twilight_model::{
presence::{Presence, UserOrId},
OpCode,
},
guild::{Emoji, Guild, Member, Role, UnavailableGuild},
guild::{scheduled_event::GuildScheduledEvent, Emoji, Guild, Member, Role, UnavailableGuild},
id::{
marker::{GuildMarker, UserMarker},
Id,
Expand Down Expand Up @@ -80,7 +80,14 @@ impl Guilds {
.0
.iter()
.guilds()
.map(|guild| guild_id_to_json(guild.id()))
.filter_map(|guild| {
if guild.unavailable() {
// Will be part of unavailable_guilds iterator
None
} else {
Some(guild_id_to_json(guild.id()))
}
})
.chain(self.0.iter().unavailable_guilds().map(guild_id_to_json))
.collect();

Expand Down Expand Up @@ -207,6 +214,26 @@ impl Guilds {
.unwrap_or_default()
}

fn scheduled_events_in_guild(&self, guild_id: Id<GuildMarker>) -> Vec<GuildScheduledEvent> {
self.0
.guild_scheduled_events(guild_id)
.map(|reference| {
reference
.iter()
.filter_map(|event_id| {
Some(
self.0
.scheduled_event(*event_id)?
.value()
.resource()
.clone(),
)
})
.collect()
})
.unwrap_or_default()
}

fn stage_instances_in_guild(&self, guild_id: Id<GuildMarker>) -> Vec<StageInstance> {
self.0
.guild_stage_instances(guild_id)
Expand Down Expand Up @@ -319,6 +346,7 @@ impl Guilds {
let emojis = self.emojis_in_guild(guild.id());
let members = self.members_in_guild(guild.id());
let roles = self.roles_in_guild(guild.id());
let scheduled_events = self.scheduled_events_in_guild(guild.id());
let stage_instances = self.stage_instances_in_guild(guild.id());
let stickers = self.stickers_in_guild(guild.id());
let voice_states = self.voice_states_in_guild(guild.id());
Expand All @@ -338,13 +366,14 @@ impl Guilds {
emojis,
explicit_content_filter: guild.explicit_content_filter(),
features: guild.features().cloned().collect(),
guild_scheduled_events: scheduled_events,
icon: guild.icon().map(ToOwned::to_owned),
id: guild.id(),
joined_at: guild.joined_at(),
large: guild.large(),
max_members: guild.max_members(),
max_presences: guild.max_presences(),
max_video_channel_users: None, // Not in the cache model
max_video_channel_users: guild.max_video_channel_users(),
member_count: guild.member_count(),
members,
mfa_level: guild.mfa_level(),
Expand Down

0 comments on commit 4c16890

Please sign in to comment.