forked from jmug/stoatchat
refactor: change Channel::id to return a reference
This commit is contained in:
@@ -417,13 +417,13 @@ impl Channel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Clone this channel's id
|
/// Clone this channel's id
|
||||||
pub fn id(&self) -> String {
|
pub fn id(&self) -> &str {
|
||||||
match self {
|
match self {
|
||||||
Channel::DirectMessage { id, .. }
|
Channel::DirectMessage { id, .. }
|
||||||
| Channel::Group { id, .. }
|
| Channel::Group { id, .. }
|
||||||
| Channel::SavedMessages { id, .. }
|
| Channel::SavedMessages { id, .. }
|
||||||
| Channel::TextChannel { id, .. }
|
| Channel::TextChannel { id, .. }
|
||||||
| Channel::VoiceChannel { id, .. } => id.clone(),
|
| Channel::VoiceChannel { id, .. } => id,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -266,7 +266,7 @@ impl AbstractChannels for MongoDb {
|
|||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
// Delete the channel itself
|
// Delete the channel itself
|
||||||
query!(self, delete_one_by_id, COL, &channel.id()).map(|_| ())
|
query!(self, delete_one_by_id, COL, channel.id()).map(|_| ())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ impl AbstractChannels for ReferenceDb {
|
|||||||
/// Insert a new channel in the database
|
/// Insert a new channel in the database
|
||||||
async fn insert_channel(&self, channel: &Channel) -> Result<()> {
|
async fn insert_channel(&self, channel: &Channel) -> Result<()> {
|
||||||
let mut channels = self.channels.lock().await;
|
let mut channels = self.channels.lock().await;
|
||||||
if let Entry::Vacant(entry) = channels.entry(channel.id()) {
|
if let Entry::Vacant(entry) = channels.entry(channel.id().to_string()) {
|
||||||
entry.insert(channel.clone());
|
entry.insert(channel.clone());
|
||||||
Ok(())
|
Ok(())
|
||||||
} else {
|
} else {
|
||||||
@@ -148,7 +148,7 @@ impl AbstractChannels for ReferenceDb {
|
|||||||
// Delete a channel
|
// Delete a channel
|
||||||
async fn delete_channel(&self, channel: &Channel) -> Result<()> {
|
async fn delete_channel(&self, channel: &Channel) -> Result<()> {
|
||||||
let mut channels = self.channels.lock().await;
|
let mut channels = self.channels.lock().await;
|
||||||
if channels.remove(&channel.id()).is_some() {
|
if channels.remove(channel.id()).is_some() {
|
||||||
Ok(())
|
Ok(())
|
||||||
} else {
|
} else {
|
||||||
Err(create_error!(NotFound))
|
Err(create_error!(NotFound))
|
||||||
|
|||||||
@@ -292,7 +292,7 @@ impl Message {
|
|||||||
let message_id = Ulid::new().to_string();
|
let message_id = Ulid::new().to_string();
|
||||||
let mut message = Message {
|
let mut message = Message {
|
||||||
id: message_id.clone(),
|
id: message_id.clone(),
|
||||||
channel: channel.id(),
|
channel: channel.id().to_string(),
|
||||||
masquerade: data.masquerade.map(|masquerade| masquerade.into()),
|
masquerade: data.masquerade.map(|masquerade| masquerade.into()),
|
||||||
interactions: data
|
interactions: data
|
||||||
.interactions
|
.interactions
|
||||||
@@ -479,7 +479,7 @@ impl Message {
|
|||||||
PushNotification::from(
|
PushNotification::from(
|
||||||
self.clone().into_model(None, None),
|
self.clone().into_model(None, None),
|
||||||
Some(author),
|
Some(author),
|
||||||
&channel.id(),
|
channel.id(),
|
||||||
)
|
)
|
||||||
.await,
|
.await,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -175,7 +175,7 @@ impl Server {
|
|||||||
vec![]
|
vec![]
|
||||||
};
|
};
|
||||||
|
|
||||||
server.channels = channels.iter().map(|c| c.id()).collect();
|
server.channels = channels.iter().map(|c| c.id().to_string()).collect();
|
||||||
db.insert_server(&server).await?;
|
db.insert_server(&server).await?;
|
||||||
Ok((server, channels))
|
Ok((server, channels))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,7 +93,9 @@ mod test {
|
|||||||
.client
|
.client
|
||||||
.post(format!("/bots/{}/invite", bot.id))
|
.post(format!("/bots/{}/invite", bot.id))
|
||||||
.header(ContentType::JSON)
|
.header(ContentType::JSON)
|
||||||
.body(json!(v0::InviteBotDestination::Group { group: group.id() }).to_string())
|
.body(json!(v0::InviteBotDestination::Group {
|
||||||
|
group: group.id().to_string()
|
||||||
|
}).to_string())
|
||||||
.header(Header::new("x-session-token", session.token.to_string()))
|
.header(Header::new("x-session-token", session.token.to_string()))
|
||||||
.dispatch()
|
.dispatch()
|
||||||
.await;
|
.await;
|
||||||
@@ -102,8 +104,8 @@ mod test {
|
|||||||
drop(response);
|
drop(response);
|
||||||
|
|
||||||
let event = harness
|
let event = harness
|
||||||
.wait_for_event(&group.id(), |event| match event {
|
.wait_for_event(group.id(), |event| match event {
|
||||||
EventV1::ChannelGroupJoin { id, .. } => id == &group.id(),
|
EventV1::ChannelGroupJoin { id, .. } => id == group.id(),
|
||||||
_ => false,
|
_ => false,
|
||||||
})
|
})
|
||||||
.await;
|
.await;
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ mod test {
|
|||||||
|
|
||||||
let event = harness
|
let event = harness
|
||||||
.wait_for_event(&format!("{}!", user.id), |event| match event {
|
.wait_for_event(&format!("{}!", user.id), |event| match event {
|
||||||
EventV1::ChannelAck { id, .. } => id == &group.id(),
|
EventV1::ChannelAck { id, .. } => id == group.id(),
|
||||||
_ => false,
|
_ => false,
|
||||||
})
|
})
|
||||||
.await;
|
.await;
|
||||||
|
|||||||
@@ -82,8 +82,8 @@ mod test {
|
|||||||
drop(response);
|
drop(response);
|
||||||
|
|
||||||
harness
|
harness
|
||||||
.wait_for_event(&group.id(), |event| match event {
|
.wait_for_event(group.id(), |event| match event {
|
||||||
EventV1::ChannelDelete { id, .. } => id == &group.id(),
|
EventV1::ChannelDelete { id, .. } => id == group.id(),
|
||||||
_ => false,
|
_ => false,
|
||||||
})
|
})
|
||||||
.await;
|
.await;
|
||||||
|
|||||||
@@ -102,8 +102,8 @@ mod test {
|
|||||||
.await;
|
.await;
|
||||||
|
|
||||||
let event = harness
|
let event = harness
|
||||||
.wait_for_event(&group.id(), |event| match event {
|
.wait_for_event(group.id(), |event| match event {
|
||||||
EventV1::ChannelGroupJoin { id, .. } => id == &group.id(),
|
EventV1::ChannelGroupJoin { id, .. } => id == group.id(),
|
||||||
_ => false,
|
_ => false,
|
||||||
})
|
})
|
||||||
.await;
|
.await;
|
||||||
@@ -113,7 +113,7 @@ mod test {
|
|||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let message = harness.wait_for_message(&group.id()).await;
|
let message = harness.wait_for_message(group.id()).await;
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
message.system,
|
message.system,
|
||||||
|
|||||||
@@ -106,8 +106,8 @@ mod test {
|
|||||||
.await;
|
.await;
|
||||||
|
|
||||||
let event = harness
|
let event = harness
|
||||||
.wait_for_event(&group.id(), |event| match event {
|
.wait_for_event(group.id(), |event| match event {
|
||||||
EventV1::ChannelGroupJoin { id, .. } => id == &group.id(),
|
EventV1::ChannelGroupJoin { id, .. } => id == group.id(),
|
||||||
_ => false,
|
_ => false,
|
||||||
})
|
})
|
||||||
.await;
|
.await;
|
||||||
@@ -117,7 +117,7 @@ mod test {
|
|||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let message = harness.wait_for_message(&group.id()).await;
|
let message = harness.wait_for_message(group.id()).await;
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
message.system,
|
message.system,
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ pub async fn clear_reactions(
|
|||||||
.throw_if_lacking_channel_permission(ChannelPermission::ManageMessages)?;
|
.throw_if_lacking_channel_permission(ChannelPermission::ManageMessages)?;
|
||||||
|
|
||||||
// Fetch relevant message
|
// Fetch relevant message
|
||||||
let mut message = msg.as_message_in_channel(db, &channel.id()).await?;
|
let mut message = msg.as_message_in_channel(db, channel.id()).await?;
|
||||||
|
|
||||||
// Clear reactions
|
// Clear reactions
|
||||||
message
|
message
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ pub async fn edit(
|
|||||||
|
|
||||||
permissions.throw_if_lacking_channel_permission(ChannelPermission::SendMessage)?;
|
permissions.throw_if_lacking_channel_permission(ChannelPermission::SendMessage)?;
|
||||||
|
|
||||||
let mut message = msg.as_message_in_channel(db, &channel.id()).await?;
|
let mut message = msg.as_message_in_channel(db, channel.id()).await?;
|
||||||
if message.author != user.id {
|
if message.author != user.id {
|
||||||
return Err(create_error!(CannotEditMessage));
|
return Err(create_error!(CannotEditMessage));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ pub async fn message_pin(
|
|||||||
.await
|
.await
|
||||||
.throw_if_lacking_channel_permission(ChannelPermission::ManageMessages)?;
|
.throw_if_lacking_channel_permission(ChannelPermission::ManageMessages)?;
|
||||||
|
|
||||||
let mut message = msg.as_message_in_channel(db, &channel.id()).await?;
|
let mut message = msg.as_message_in_channel(db, channel.id()).await?;
|
||||||
|
|
||||||
if message.pinned.unwrap_or_default() {
|
if message.pinned.unwrap_or_default() {
|
||||||
return Err(create_error!(AlreadyPinned))
|
return Err(create_error!(AlreadyPinned))
|
||||||
@@ -40,7 +40,7 @@ pub async fn message_pin(
|
|||||||
id: message.id.clone(),
|
id: message.id.clone(),
|
||||||
by: user.id.clone()
|
by: user.id.clone()
|
||||||
}
|
}
|
||||||
.into_message(channel.id())
|
.into_message(channel.id().to_string())
|
||||||
.send(
|
.send(
|
||||||
db,
|
db,
|
||||||
MessageAuthor::System {
|
MessageAuthor::System {
|
||||||
@@ -115,7 +115,7 @@ mod test {
|
|||||||
assert_eq!(response.status(), Status::NoContent);
|
assert_eq!(response.status(), Status::NoContent);
|
||||||
drop(response);
|
drop(response);
|
||||||
|
|
||||||
harness.wait_for_event(&channel.id(), |event| {
|
harness.wait_for_event(channel.id(), |event| {
|
||||||
match event {
|
match event {
|
||||||
EventV1::Message(message) => {
|
EventV1::Message(message) => {
|
||||||
match &message.system {
|
match &message.system {
|
||||||
@@ -131,11 +131,11 @@ mod test {
|
|||||||
}
|
}
|
||||||
}).await;
|
}).await;
|
||||||
|
|
||||||
harness.wait_for_event(&channel.id(), |event| {
|
harness.wait_for_event(channel.id(), |event| {
|
||||||
match event {
|
match event {
|
||||||
EventV1::MessageUpdate { id, channel: channel_id, data, .. } => {
|
EventV1::MessageUpdate { id, channel: channel_id, data, .. } => {
|
||||||
assert_eq!(id, &message.id);
|
assert_eq!(id, &message.id);
|
||||||
assert_eq!(channel_id, &channel.id());
|
assert_eq!(channel_id, channel.id());
|
||||||
assert_eq!(data.pinned, Some(true));
|
assert_eq!(data.pinned, Some(true));
|
||||||
|
|
||||||
true
|
true
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ pub async fn react_message(
|
|||||||
.throw_if_lacking_channel_permission(ChannelPermission::React)?;
|
.throw_if_lacking_channel_permission(ChannelPermission::React)?;
|
||||||
|
|
||||||
// Fetch relevant message
|
// Fetch relevant message
|
||||||
let message = msg.as_message_in_channel(db, &channel.id()).await?;
|
let message = msg.as_message_in_channel(db, channel.id()).await?;
|
||||||
|
|
||||||
// Add the reaction
|
// Add the reaction
|
||||||
message
|
message
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ pub async fn message_unpin(
|
|||||||
.await
|
.await
|
||||||
.throw_if_lacking_channel_permission(ChannelPermission::ManageMessages)?;
|
.throw_if_lacking_channel_permission(ChannelPermission::ManageMessages)?;
|
||||||
|
|
||||||
let mut message = msg.as_message_in_channel(db, &channel.id()).await?;
|
let mut message = msg.as_message_in_channel(db, channel.id()).await?;
|
||||||
|
|
||||||
if !message.pinned.unwrap_or_default() {
|
if !message.pinned.unwrap_or_default() {
|
||||||
return Err(create_error!(NotPinned))
|
return Err(create_error!(NotPinned))
|
||||||
@@ -37,7 +37,7 @@ pub async fn message_unpin(
|
|||||||
id: message.id.clone(),
|
id: message.id.clone(),
|
||||||
by: user.id.clone()
|
by: user.id.clone()
|
||||||
}
|
}
|
||||||
.into_message(channel.id())
|
.into_message(channel.id().to_string())
|
||||||
.send(
|
.send(
|
||||||
db,
|
db,
|
||||||
MessageAuthor::System {
|
MessageAuthor::System {
|
||||||
@@ -123,7 +123,7 @@ mod test {
|
|||||||
assert_eq!(response.status(), Status::NoContent);
|
assert_eq!(response.status(), Status::NoContent);
|
||||||
drop(response);
|
drop(response);
|
||||||
|
|
||||||
harness.wait_for_event(&channel.id(), |event| {
|
harness.wait_for_event(channel.id(), |event| {
|
||||||
match event {
|
match event {
|
||||||
EventV1::Message(message) => {
|
EventV1::Message(message) => {
|
||||||
match &message.system {
|
match &message.system {
|
||||||
@@ -139,7 +139,7 @@ mod test {
|
|||||||
}
|
}
|
||||||
}).await;
|
}).await;
|
||||||
|
|
||||||
harness.wait_for_event(&channel.id(), |event| {
|
harness.wait_for_event(channel.id(), |event| {
|
||||||
match event {
|
match event {
|
||||||
EventV1::MessageUpdate { id, clear, .. } => {
|
EventV1::MessageUpdate { id, clear, .. } => {
|
||||||
assert_eq!(&message.id, id);
|
assert_eq!(&message.id, id);
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ pub async fn unreact_message(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Fetch relevant message
|
// Fetch relevant message
|
||||||
let message = msg.as_message_in_channel(db, &channel.id()).await?;
|
let message = msg.as_message_in_channel(db, channel.id()).await?;
|
||||||
|
|
||||||
// Check if we should wipe all of this reaction
|
// Check if we should wipe all of this reaction
|
||||||
if remove_all {
|
if remove_all {
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ pub async fn create_webhook(
|
|||||||
id: webhook_id,
|
id: webhook_id,
|
||||||
name: data.name,
|
name: data.name,
|
||||||
avatar,
|
avatar,
|
||||||
channel_id: channel.id(),
|
channel_id: channel.id().to_string(),
|
||||||
permissions: *DEFAULT_WEBHOOK_PERMISSIONS,
|
permissions: *DEFAULT_WEBHOOK_PERMISSIONS,
|
||||||
token: Some(nanoid::nanoid!(64)),
|
token: Some(nanoid::nanoid!(64)),
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ pub async fn fetch_webhooks(
|
|||||||
.throw_if_lacking_channel_permission(ChannelPermission::ViewChannel)?;
|
.throw_if_lacking_channel_permission(ChannelPermission::ViewChannel)?;
|
||||||
|
|
||||||
Ok(Json(
|
Ok(Json(
|
||||||
db.fetch_webhooks_for_channel(&channel.id())
|
db.fetch_webhooks_for_channel(channel.id())
|
||||||
.await?
|
.await?
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|v| v.into())
|
.map(|v| v.into())
|
||||||
|
|||||||
Reference in New Issue
Block a user