Skip to content

Commit 1f7c3d1

Browse files
authored
feat(model)!: support for role colors and primary guilds (#2467)
Adds support for changelog entry [gradient roles and guild tags](https://discord.com/developers/docs/change-log?topic=HTTP+API#gradient-roles-and-guild-tags). Closes #2465
1 parent 5a05026 commit 1f7c3d1

File tree

40 files changed

+372
-32
lines changed

40 files changed

+372
-32
lines changed

twilight-cache-inmemory/src/event/interaction.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ impl<CacheModels: CacheableModels> UpdateCache<CacheModels> for InteractionCreat
6060
mod tests {
6161
use crate::DefaultInMemoryCache;
6262
use std::collections::HashMap;
63+
use twilight_model::guild::RoleColors;
6364
use twilight_model::{
6465
application::{
6566
command::CommandType,
@@ -186,6 +187,7 @@ mod tests {
186187
mfa_enabled: None,
187188
name: "test".to_owned(),
188189
premium_type: None,
190+
primary_guild: None,
189191
public_flags: None,
190192
system: None,
191193
verified: None,
@@ -241,6 +243,11 @@ mod tests {
241243
Id::new(8),
242244
Role {
243245
color: 0u32,
246+
colors: RoleColors {
247+
primary_color: 0,
248+
secondary_color: None,
249+
tertiary_color: None,
250+
},
244251
hoist: false,
245252
icon: None,
246253
id: Id::new(8),
@@ -272,6 +279,7 @@ mod tests {
272279
mfa_enabled: None,
273280
name: "different name".into(),
274281
premium_type: None,
282+
primary_guild: None,
275283
public_flags: None,
276284
system: None,
277285
verified: None,
@@ -314,6 +322,7 @@ mod tests {
314322
mfa_enabled: None,
315323
name: "username".into(),
316324
premium_type: None,
325+
primary_guild: None,
317326
public_flags: None,
318327
system: None,
319328
verified: None,

twilight-cache-inmemory/src/event/message.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ mod tests {
166166
mfa_enabled: None,
167167
name: "test".to_owned(),
168168
premium_type: None,
169+
primary_guild: None,
169170
public_flags: None,
170171
system: None,
171172
verified: None,

twilight-cache-inmemory/src/event/voice_state.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,7 @@ mod tests {
317317
mfa_enabled: None,
318318
name: "test".to_owned(),
319319
premium_type: None,
320+
primary_guild: None,
320321
public_flags: None,
321322
system: None,
322323
verified: None,

twilight-cache-inmemory/src/lib.rs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1000,7 +1000,7 @@ impl<CacheModels: CacheableModels> UpdateCache<CacheModels> for Event {
10001000
Event::ReactionRemove(v) => cache.update(v.deref()),
10011001
Event::ReactionRemoveAll(v) => cache.update(v),
10021002
Event::ReactionRemoveEmoji(v) => cache.update(v),
1003-
Event::Ready(v) => cache.update(v.deref()),
1003+
Event::Ready(v) => cache.update(v),
10041004
Event::RoleCreate(v) => cache.update(v),
10051005
Event::RoleDelete(v) => cache.update(v),
10061006
Event::RoleUpdate(v) => cache.update(v),
@@ -1051,6 +1051,7 @@ impl<CacheModels: CacheableModels> UpdateCache<CacheModels> for Event {
10511051
#[cfg(test)]
10521052
mod tests {
10531053
use crate::{DefaultInMemoryCache, test};
1054+
use twilight_model::guild::RoleColors;
10541055
use twilight_model::{
10551056
gateway::payload::incoming::RoleDelete,
10561057
guild::{Member, MemberFlags, Permissions, Role, RoleFlags},
@@ -1105,7 +1106,13 @@ mod tests {
11051106
guild_id,
11061107
vec![
11071108
Role {
1109+
#[allow(deprecated)]
11081110
color: 0,
1111+
colors: RoleColors {
1112+
primary_color: 0,
1113+
secondary_color: None,
1114+
tertiary_color: None,
1115+
},
11091116
hoist: false,
11101117
icon: None,
11111118
id: Id::new(1),
@@ -1119,7 +1126,13 @@ mod tests {
11191126
unicode_emoji: None,
11201127
},
11211128
Role {
1129+
#[allow(deprecated)]
11221130
color: 0,
1131+
colors: RoleColors {
1132+
primary_color: 0,
1133+
secondary_color: None,
1134+
tertiary_color: None,
1135+
},
11231136
hoist: false,
11241137
icon: None,
11251138
id: Id::new(2),

twilight-cache-inmemory/src/model/member.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,7 @@ mod tests {
352352
mfa_enabled: None,
353353
name: "bar".to_owned(),
354354
premium_type: None,
355+
primary_guild: None,
355356
public_flags: None,
356357
system: None,
357358
verified: None,

twilight-cache-inmemory/src/model/sticker.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ mod tests {
161161
use serde::Serialize;
162162
use static_assertions::{assert_fields, assert_impl_all};
163163
use std::fmt::Debug;
164+
use twilight_model::user::PrimaryGuild;
164165
use twilight_model::{
165166
channel::message::{
166167
Sticker,
@@ -226,6 +227,12 @@ mod tests {
226227
mfa_enabled: Some(true),
227228
name: "test".to_owned(),
228229
premium_type: Some(PremiumType::Nitro),
230+
primary_guild: Some(PrimaryGuild {
231+
identity_guild_id: Some(Id::new(169_256_939_211_980_800)),
232+
identity_enabled: Some(true),
233+
tag: Some("DISC".to_owned()),
234+
badge: Some("1269e74af4df7417b13759eae50c83dc".parse().unwrap()),
235+
}),
229236
public_flags: Some(
230237
UserFlags::PREMIUM_EARLY_SUPPORTER | UserFlags::VERIFIED_DEVELOPER,
231238
),

twilight-cache-inmemory/src/test.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use crate::DefaultInMemoryCache;
2+
use twilight_model::guild::RoleColors;
23
use twilight_model::{
34
channel::{
45
Channel, ChannelType,
@@ -61,6 +62,7 @@ pub fn cache_with_message_and_reactions() -> DefaultInMemoryCache {
6162
mfa_enabled: None,
6263
name: "test".to_owned(),
6364
premium_type: None,
65+
primary_guild: None,
6466
public_flags: None,
6567
system: None,
6668
verified: None,
@@ -145,6 +147,7 @@ pub fn cache_with_message_and_reactions() -> DefaultInMemoryCache {
145147
mfa_enabled: None,
146148
name: "test".to_owned(),
147149
premium_type: None,
150+
primary_guild: None,
148151
public_flags: None,
149152
system: None,
150153
verified: None,
@@ -187,6 +190,7 @@ pub fn cache_with_message_and_reactions() -> DefaultInMemoryCache {
187190
mfa_enabled: None,
188191
name: "test".to_owned(),
189192
premium_type: None,
193+
primary_guild: None,
190194
public_flags: None,
191195
system: None,
192196
verified: None,
@@ -311,7 +315,13 @@ pub fn member(id: Id<UserMarker>) -> Member {
311315

312316
pub fn role(id: Id<RoleMarker>) -> Role {
313317
Role {
318+
#[allow(deprecated)]
314319
color: 0,
320+
colors: RoleColors {
321+
primary_color: 0,
322+
secondary_color: None,
323+
tertiary_color: None,
324+
},
315325
hoist: false,
316326
icon: None,
317327
id,
@@ -384,6 +394,7 @@ pub fn user(id: Id<UserMarker>) -> User {
384394
mfa_enabled: None,
385395
name: "user".to_owned(),
386396
premium_type: None,
397+
primary_guild: None,
387398
public_flags: None,
388399
system: None,
389400
verified: None,

twilight-model/src/application/interaction/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -614,6 +614,7 @@ mod tests {
614614
mfa_enabled: None,
615615
name: "username".into(),
616616
premium_type: None,
617+
primary_guild: None,
617618
public_flags: None,
618619
system: None,
619620
verified: None,
@@ -668,6 +669,7 @@ mod tests {
668669
mfa_enabled: None,
669670
name: "username".into(),
670671
premium_type: None,
672+
primary_guild: None,
671673
public_flags: None,
672674
system: None,
673675
verified: None,

twilight-model/src/application/interaction/resolved.rs

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ pub struct InteractionMember {
9898
#[cfg(test)]
9999
mod tests {
100100
use super::{InteractionChannel, InteractionDataResolved, InteractionMember};
101+
use crate::guild::RoleColors;
102+
use crate::user::PrimaryGuild;
101103
use crate::{
102104
channel::{
103105
Attachment, ChannelType, Message,
@@ -193,6 +195,7 @@ mod tests {
193195
mfa_enabled: None,
194196
name: "test".to_owned(),
195197
premium_type: None,
198+
primary_guild: None,
196199
public_flags: None,
197200
system: None,
198201
verified: None,
@@ -249,6 +252,11 @@ mod tests {
249252
Id::new(400),
250253
Role {
251254
color: 0,
255+
colors: RoleColors {
256+
primary_color: 0,
257+
secondary_color: None,
258+
tertiary_color: None,
259+
},
252260
hoist: true,
253261
icon: None,
254262
id: Id::new(400),
@@ -281,6 +289,12 @@ mod tests {
281289
mfa_enabled: Some(true),
282290
name: "test".to_owned(),
283291
premium_type: Some(PremiumType::Nitro),
292+
primary_guild: Some(PrimaryGuild {
293+
identity_guild_id: Some(Id::new(169_256_939_211_980_800)),
294+
identity_enabled: Some(true),
295+
tag: Some("DISC".to_owned()),
296+
badge: Some("1269e74af4df7417b13759eae50c83dc".parse().unwrap()),
297+
}),
284298
public_flags: Some(
285299
UserFlags::PREMIUM_EARLY_SUPPORTER | UserFlags::VERIFIED_DEVELOPER,
286300
),
@@ -502,10 +516,22 @@ mod tests {
502516
Token::Str("400"),
503517
Token::Struct {
504518
name: "Role",
505-
len: 9,
519+
len: 10,
506520
},
507521
Token::Str("color"),
508522
Token::U32(0),
523+
Token::Str("colors"),
524+
Token::Struct {
525+
name: "RoleColors",
526+
len: 3,
527+
},
528+
Token::Str("primary_color"),
529+
Token::U32(0),
530+
Token::Str("secondary_color"),
531+
Token::None,
532+
Token::Str("tertiary_color"),
533+
Token::None,
534+
Token::StructEnd,
509535
Token::Str("hoist"),
510536
Token::Bool(true),
511537
Token::Str("id"),
@@ -531,7 +557,7 @@ mod tests {
531557
Token::Str("300"),
532558
Token::Struct {
533559
name: "User",
534-
len: 17,
560+
len: 18,
535561
},
536562
Token::Str("accent_color"),
537563
Token::None,
@@ -571,6 +597,26 @@ mod tests {
571597
Token::Str("premium_type"),
572598
Token::Some,
573599
Token::U8(2),
600+
Token::Str("primary_guild"),
601+
Token::Some,
602+
Token::Struct {
603+
name: "PrimaryGuild",
604+
len: 4,
605+
},
606+
Token::Str("identity_guild_id"),
607+
Token::Some,
608+
Token::NewtypeStruct { name: "Id" },
609+
Token::Str("169256939211980800"),
610+
Token::Str("identity_enabled"),
611+
Token::Some,
612+
Token::Bool(true),
613+
Token::Str("tag"),
614+
Token::Some,
615+
Token::Str("DISC"),
616+
Token::Str("badge"),
617+
Token::Some,
618+
Token::Str("1269e74af4df7417b13759eae50c83dc"),
619+
Token::StructEnd,
574620
Token::Str("public_flags"),
575621
Token::Some,
576622
Token::U64(131_584),

twilight-model/src/channel/message/interaction.rs

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ pub struct MessageInteraction {
2828
#[cfg(test)]
2929
mod tests {
3030
use super::*;
31+
use crate::user::PrimaryGuild;
3132
use crate::{
3233
guild::MemberFlags,
3334
test::image_hash,
@@ -76,6 +77,12 @@ mod tests {
7677
mfa_enabled: Some(true),
7778
name: "test".to_owned(),
7879
premium_type: Some(PremiumType::Nitro),
80+
primary_guild: Some(PrimaryGuild {
81+
identity_guild_id: Some(Id::new(169_256_939_211_980_800)),
82+
identity_enabled: Some(true),
83+
tag: Some("DISC".to_owned()),
84+
badge: Some("1269e74af4df7417b13759eae50c83dc".parse().unwrap()),
85+
}),
7986
public_flags: Some(
8087
UserFlags::PREMIUM_EARLY_SUPPORTER | UserFlags::VERIFIED_DEVELOPER,
8188
),
@@ -129,7 +136,7 @@ mod tests {
129136
Token::Str("user"),
130137
Token::Struct {
131138
name: "User",
132-
len: 17,
139+
len: 18,
133140
},
134141
Token::Str("accent_color"),
135142
Token::None,
@@ -170,6 +177,26 @@ mod tests {
170177
Token::Str("premium_type"),
171178
Token::Some,
172179
Token::U8(2),
180+
Token::Str("primary_guild"),
181+
Token::Some,
182+
Token::Struct {
183+
name: "PrimaryGuild",
184+
len: 4,
185+
},
186+
Token::Str("identity_guild_id"),
187+
Token::Some,
188+
Token::NewtypeStruct { name: "Id" },
189+
Token::Str("169256939211980800"),
190+
Token::Str("identity_enabled"),
191+
Token::Some,
192+
Token::Bool(true),
193+
Token::Str("tag"),
194+
Token::Some,
195+
Token::Str("DISC"),
196+
Token::Str("badge"),
197+
Token::Some,
198+
Token::Str("1269e74af4df7417b13759eae50c83dc"),
199+
Token::StructEnd,
173200
Token::Str("public_flags"),
174201
Token::Some,
175202
Token::U64(131_584),

0 commit comments

Comments
 (0)