aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAustin Hellyer <[email protected]>2016-12-03 13:21:27 -0800
committerAustin Hellyer <[email protected]>2016-12-03 13:21:27 -0800
commit61ca1ca1f2990131870b643edf77cc06bec9d7ff (patch)
tree9738b4015af9625c9e15ae16f46d9f20f87c5d10 /src
parentDerive Eq/Ord on Colour (diff)
downloadserenity-61ca1ca1f2990131870b643edf77cc06bec9d7ff.tar.xz
serenity-61ca1ca1f2990131870b643edf77cc06bec9d7ff.zip
Make Member::colour() return an optional colour
Diffstat (limited to 'src')
-rw-r--r--src/model/guild.rs25
-rw-r--r--src/utils/colour.rs3
2 files changed, 8 insertions, 20 deletions
diff --git a/src/model/guild.rs b/src/model/guild.rs
index f9b56dd..aa7daef 100644
--- a/src/model/guild.rs
+++ b/src/model/guild.rs
@@ -14,7 +14,7 @@ use super::utils::{
};
use super::*;
use ::internal::prelude::*;
-use ::utils::{Colour, decode_array};
+use ::utils::decode_array;
#[cfg(feature = "methods")]
use serde_json::builder::ObjectBuilder;
@@ -847,7 +847,7 @@ impl Member {
delete_message_days)
}
- /// Determines the member's display name.
+ /// Calculates the member's display name.
///
/// The nickname takes priority over the member's username if it exists.
pub fn display_name(&self) -> &str {
@@ -855,24 +855,18 @@ impl Member {
}
/// Determines the member's colour.
- ///
- /// If the member has no role with a colour override - or the member's guild
- /// data does not exist in the cache - then the value of [`Colour::default`]
- /// is returned.
- ///
- /// [`Colour::default`]: ../utils/struct.Colour.html#method.default
#[cfg(all(feature = "cache", feature = "methods"))]
- pub fn colour(&self) -> Colour {
+ pub fn colour(&self) -> Option<Colour> {
let default = Colour::default();
let guild_id = match self.find_guild() {
Ok(guild_id) => guild_id,
- Err(_why) => return default,
+ Err(_why) => return None,
};
let cache = CACHE.read().unwrap();
let guild = match cache.guilds.get(&guild_id) {
Some(guild) => guild,
- None => return default,
+ None => return None,
};
let mut roles = self.roles
@@ -881,15 +875,10 @@ impl Member {
.collect::<Vec<&Role>>();
roles.sort_by(|a, b| b.cmp(a));
- for role in roles {
- if role.colour.value != default.value {
- return role.colour;
- }
- }
-
- default
+ roles.iter().find(|r| r.colour.value != default.value).map(|r| r.colour)
}
+
/// Edits the member with the given data. See [`Context::edit_member`] for
/// more information.
///
diff --git a/src/utils/colour.rs b/src/utils/colour.rs
index c62630a..47ed7e8 100644
--- a/src/utils/colour.rs
+++ b/src/utils/colour.rs
@@ -304,10 +304,9 @@ colour! {
impl Default for Colour {
/// Creates a default value for a `Colour`, setting the inner value to `0`.
- /// This is equivilant to setting the RGB value to `(153, 170, 181)`.
fn default() -> Colour {
Colour {
- value: 0x99AAB5,
+ value: 0,
}
}
}