mirror of
https://github.com/stoatchat/stoatchat.git
synced 2026-07-14 13:36:59 +00:00
feat: add pronouns to user and server members field (#811)
Signed-off-by: İspik <ispik@ispik.dev>
This commit is contained in:
@@ -28,6 +28,9 @@ auto_derived_partial!(
|
||||
/// Member's nickname
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub nickname: Option<String>,
|
||||
/// Member's pronouns
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub pronouns: Option<String>,
|
||||
/// Avatar attachment
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub avatar: Option<File>,
|
||||
@@ -65,6 +68,7 @@ auto_derived!(
|
||||
/// Optional fields on server member object
|
||||
pub enum FieldsMember {
|
||||
Nickname,
|
||||
Pronouns,
|
||||
Avatar,
|
||||
Roles,
|
||||
Timeout,
|
||||
@@ -88,6 +92,7 @@ impl Default for Member {
|
||||
id: Default::default(),
|
||||
joined_at: Timestamp::now_utc(),
|
||||
nickname: None,
|
||||
pronouns: None,
|
||||
avatar: None,
|
||||
roles: vec![],
|
||||
timeout: None,
|
||||
@@ -231,6 +236,7 @@ impl Member {
|
||||
FieldsMember::JoinedAt => {}
|
||||
FieldsMember::Avatar => self.avatar = None,
|
||||
FieldsMember::Nickname => self.nickname = None,
|
||||
FieldsMember::Pronouns => self.pronouns = None,
|
||||
FieldsMember::Roles => self.roles.clear(),
|
||||
FieldsMember::Timeout => self.timeout = None,
|
||||
FieldsMember::CanReceive => self.can_receive = true,
|
||||
|
||||
@@ -345,6 +345,7 @@ impl IntoDocumentPath for FieldsMember {
|
||||
FieldsMember::JoinedAt => Some("joined_at"),
|
||||
FieldsMember::Avatar => Some("avatar"),
|
||||
FieldsMember::Nickname => Some("nickname"),
|
||||
FieldsMember::Pronouns => Some("pronouns"),
|
||||
FieldsMember::Roles => Some("roles"),
|
||||
FieldsMember::Timeout => Some("timeout"),
|
||||
FieldsMember::CanPublish => Some("can_publish"),
|
||||
|
||||
@@ -31,6 +31,9 @@ auto_derived_partial!(
|
||||
/// Display name
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub display_name: Option<String>,
|
||||
/// User's pronouns
|
||||
#[serde(skip_serializing_if = "Option::is_none", default)]
|
||||
pub pronouns: Option<String>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
/// Avatar attachment
|
||||
pub avatar: Option<File>,
|
||||
@@ -76,6 +79,7 @@ auto_derived!(
|
||||
ProfileContent,
|
||||
ProfileBackground,
|
||||
DisplayName,
|
||||
Pronouns,
|
||||
|
||||
// internal fields
|
||||
Suspension,
|
||||
@@ -182,6 +186,7 @@ impl Default for User {
|
||||
username: Default::default(),
|
||||
discriminator: Default::default(),
|
||||
display_name: Default::default(),
|
||||
pronouns: Default::default(),
|
||||
avatar: Default::default(),
|
||||
relations: Default::default(),
|
||||
badges: Default::default(),
|
||||
@@ -706,6 +711,7 @@ impl User {
|
||||
}
|
||||
}
|
||||
FieldsUser::DisplayName => self.display_name = None,
|
||||
FieldsUser::Pronouns => self.pronouns = None,
|
||||
FieldsUser::Suspension => self.suspended_until = None,
|
||||
FieldsUser::None => {}
|
||||
}
|
||||
|
||||
@@ -336,6 +336,7 @@ impl IntoDocumentPath for FieldsUser {
|
||||
FieldsUser::StatusPresence => "status.presence",
|
||||
FieldsUser::StatusText => "status.text",
|
||||
FieldsUser::DisplayName => "display_name",
|
||||
FieldsUser::Pronouns => "pronouns",
|
||||
FieldsUser::Suspension => "suspended_until",
|
||||
FieldsUser::None => "none",
|
||||
})
|
||||
|
||||
@@ -631,6 +631,7 @@ impl From<crate::Member> for Member {
|
||||
id: value.id.into(),
|
||||
joined_at: value.joined_at,
|
||||
nickname: value.nickname,
|
||||
pronouns: value.pronouns,
|
||||
avatar: value.avatar.map(|f| f.into()),
|
||||
roles: value.roles,
|
||||
timeout: value.timeout,
|
||||
@@ -646,6 +647,7 @@ impl From<Member> for crate::Member {
|
||||
id: value.id.into(),
|
||||
joined_at: value.joined_at,
|
||||
nickname: value.nickname,
|
||||
pronouns: value.pronouns,
|
||||
avatar: value.avatar.map(|f| f.into()),
|
||||
roles: value.roles,
|
||||
timeout: value.timeout,
|
||||
@@ -661,6 +663,7 @@ impl From<crate::PartialMember> for PartialMember {
|
||||
id: value.id.map(|id| id.into()),
|
||||
joined_at: value.joined_at,
|
||||
nickname: value.nickname,
|
||||
pronouns: value.pronouns,
|
||||
avatar: value.avatar.map(|f| f.into()),
|
||||
roles: value.roles,
|
||||
timeout: value.timeout,
|
||||
@@ -676,6 +679,7 @@ impl From<PartialMember> for crate::PartialMember {
|
||||
id: value.id.map(|id| id.into()),
|
||||
joined_at: value.joined_at,
|
||||
nickname: value.nickname,
|
||||
pronouns: value.pronouns,
|
||||
avatar: value.avatar.map(|f| f.into()),
|
||||
roles: value.roles,
|
||||
timeout: value.timeout,
|
||||
@@ -708,6 +712,7 @@ impl From<crate::FieldsMember> for FieldsMember {
|
||||
match value {
|
||||
crate::FieldsMember::Avatar => FieldsMember::Avatar,
|
||||
crate::FieldsMember::Nickname => FieldsMember::Nickname,
|
||||
crate::FieldsMember::Pronouns => FieldsMember::Pronouns,
|
||||
crate::FieldsMember::Roles => FieldsMember::Roles,
|
||||
crate::FieldsMember::Timeout => FieldsMember::Timeout,
|
||||
crate::FieldsMember::CanReceive => FieldsMember::CanReceive,
|
||||
@@ -723,6 +728,7 @@ impl From<FieldsMember> for crate::FieldsMember {
|
||||
match value {
|
||||
FieldsMember::Avatar => crate::FieldsMember::Avatar,
|
||||
FieldsMember::Nickname => crate::FieldsMember::Nickname,
|
||||
FieldsMember::Pronouns => crate::FieldsMember::Pronouns,
|
||||
FieldsMember::Roles => crate::FieldsMember::Roles,
|
||||
FieldsMember::Timeout => crate::FieldsMember::Timeout,
|
||||
FieldsMember::CanReceive => crate::FieldsMember::CanReceive,
|
||||
@@ -1032,6 +1038,7 @@ impl crate::User {
|
||||
username: self.username,
|
||||
discriminator: self.discriminator,
|
||||
display_name: self.display_name,
|
||||
pronouns: self.pronouns,
|
||||
avatar: self.avatar.map(|file| file.into()),
|
||||
relations: if let Some(crate::User { id, .. }) = perspective {
|
||||
if id == &self.id {
|
||||
@@ -1108,6 +1115,7 @@ impl crate::User {
|
||||
username: self.username,
|
||||
discriminator: self.discriminator,
|
||||
display_name: self.display_name,
|
||||
pronouns: self.pronouns,
|
||||
avatar: self.avatar.map(|file| file.into()),
|
||||
relations: vec![],
|
||||
badges,
|
||||
@@ -1141,6 +1149,7 @@ impl crate::User {
|
||||
username: self.username,
|
||||
discriminator: self.discriminator,
|
||||
display_name: self.display_name,
|
||||
pronouns: self.pronouns,
|
||||
avatar: self.avatar.map(|file| file.into()),
|
||||
relations: vec![],
|
||||
badges,
|
||||
@@ -1168,6 +1177,7 @@ impl crate::User {
|
||||
username: self.username,
|
||||
discriminator: self.discriminator,
|
||||
display_name: self.display_name,
|
||||
pronouns: self.pronouns,
|
||||
avatar: self.avatar.map(|file| file.into()),
|
||||
relations: self
|
||||
.relations
|
||||
@@ -1211,6 +1221,7 @@ impl From<User> for crate::User {
|
||||
username: value.username,
|
||||
discriminator: value.discriminator,
|
||||
display_name: value.display_name,
|
||||
pronouns: value.pronouns,
|
||||
avatar: value.avatar.map(Into::into),
|
||||
relations: None,
|
||||
badges: Some(value.badges as i32),
|
||||
@@ -1231,6 +1242,7 @@ impl From<crate::PartialUser> for PartialUser {
|
||||
username: value.username,
|
||||
discriminator: value.discriminator,
|
||||
display_name: value.display_name,
|
||||
pronouns: value.pronouns,
|
||||
avatar: value.avatar.map(|file| file.into()),
|
||||
relations: value.relations.map(|relationships| {
|
||||
relationships
|
||||
@@ -1259,6 +1271,7 @@ impl From<FieldsUser> for crate::FieldsUser {
|
||||
FieldsUser::StatusPresence => crate::FieldsUser::StatusPresence,
|
||||
FieldsUser::StatusText => crate::FieldsUser::StatusText,
|
||||
FieldsUser::DisplayName => crate::FieldsUser::DisplayName,
|
||||
FieldsUser::Pronouns => crate::FieldsUser::Pronouns,
|
||||
|
||||
FieldsUser::Internal => crate::FieldsUser::None,
|
||||
}
|
||||
@@ -1274,6 +1287,7 @@ impl From<crate::FieldsUser> for FieldsUser {
|
||||
crate::FieldsUser::StatusPresence => FieldsUser::StatusPresence,
|
||||
crate::FieldsUser::StatusText => FieldsUser::StatusText,
|
||||
crate::FieldsUser::DisplayName => FieldsUser::DisplayName,
|
||||
crate::FieldsUser::Pronouns => FieldsUser::Pronouns,
|
||||
|
||||
crate::FieldsUser::Suspension => FieldsUser::Internal,
|
||||
crate::FieldsUser::None => FieldsUser::Internal,
|
||||
|
||||
Reference in New Issue
Block a user