aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMei Boudreau <[email protected]>2017-10-05 11:06:12 -0400
committeralex <[email protected]>2017-10-05 17:06:12 +0200
commit91c8ec4ae7540956a714ce9584074538b45467cc (patch)
treee69f7117f8da7179894a22b896664a2ebd77e1f0 /src
parentMerge branch 'v0.4.1' into v0.5.0 (diff)
downloadserenity-91c8ec4ae7540956a714ce9584074538b45467cc.tar.xz
serenity-91c8ec4ae7540956a714ce9584074538b45467cc.zip
Change default_channel to return a pointer (#179)
Diffstat (limited to 'src')
-rw-r--r--src/model/guild/member.rs4
-rw-r--r--src/model/guild/mod.rs10
2 files changed, 8 insertions, 6 deletions
diff --git a/src/model/guild/member.rs b/src/model/guild/member.rs
index 09474f9..70289b9 100644
--- a/src/model/guild/member.rs
+++ b/src/model/guild/member.rs
@@ -297,9 +297,11 @@ impl Member {
None => return Err(From::from(ModelError::ItemMissing)),
};
+ let default_channel_reader = default_channel.read().unwrap();
+
Ok(
guild
- .permissions_for(default_channel.id, self.user.read().unwrap().id),
+ .permissions_for(default_channel_reader.id, self.user.read().unwrap().id),
)
}
diff --git a/src/model/guild/mod.rs b/src/model/guild/mod.rs
index 3979cd9..df8bd2c 100644
--- a/src/model/guild/mod.rs
+++ b/src/model/guild/mod.rs
@@ -127,12 +127,12 @@ impl Guild {
/// Returns the "default" channel of the guild.
/// (This returns the first channel that can be read by the bot, if there isn't one,
/// returns `None`)
- pub fn default_channel(&self) -> Option<GuildChannel> {
+ pub fn default_channel(&self) -> Option<Arc<RwLock<GuildChannel>>> {
let uid = CACHE.read().unwrap().user.id;
for (cid, channel) in &self.channels {
if self.permissions_for(*cid, uid).read_messages() {
- return Some(channel.read().unwrap().clone());
+ return Some(channel.clone());
}
}
@@ -144,11 +144,11 @@ impl Guild {
/// returns `None`)
/// Note however that this is very costy if used in a server with lots of channels,
/// members, or both.
- pub fn default_channel_guaranteed(&self) -> Option<GuildChannel> {
+ pub fn default_channel_guaranteed(&self) -> Option<Arc<RwLock<GuildChannel>>> {
for (cid, channel) in &self.channels {
for memid in self.members.keys() {
if self.permissions_for(*cid, *memid).read_messages() {
- return Some(channel.read().unwrap().clone());
+ return Some(channel.clone());
}
}
}
@@ -168,7 +168,7 @@ impl Guild {
None => return Err(Error::Model(ModelError::ItemMissing)),
};
- let perms = self.permissions_for(default_channel.id, member.user.read().unwrap().id);
+ let perms = self.permissions_for(default_channel.read().unwrap().id, member.user.read().unwrap().id);
permissions.remove(perms);
Ok(permissions.is_empty())