forked from jmug/stoatchat
Compare commits
3 Commits
20231028-1
...
20231028-2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
196a856c68 | ||
|
|
9bf60e87e9 | ||
|
|
b90e7a4412 |
@@ -243,8 +243,7 @@ impl EventV1 {
|
||||
pub async fn p_user(self, id: String, db: &Database) {
|
||||
self.clone().p(id.clone()).await;
|
||||
|
||||
// ! FIXME: this should be captured by member list in the future
|
||||
// ! and not immediately fanned out to users
|
||||
// TODO: this should be captured by member list in the future and not immediately fanned out to users
|
||||
if let Ok(members) = db.fetch_all_memberships(&id).await {
|
||||
for member in members {
|
||||
self.clone().p(member.id.server).await;
|
||||
|
||||
@@ -60,7 +60,7 @@ impl AbstractMessages for ReferenceDb {
|
||||
.cloned()
|
||||
.collect();
|
||||
|
||||
// TODO: sorting, etc (will be required for tests)
|
||||
// FIXME: sorting, etc (will be required for tests)
|
||||
|
||||
Ok(matched_messages)
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ auto_derived_partial!(
|
||||
pub description: Option<String>,
|
||||
|
||||
/// Channels within this server
|
||||
// ! FIXME: this may be redundant
|
||||
// TODO: investigate if this is redundant and can be removed
|
||||
pub channels: Vec<String>,
|
||||
/// Categories for this server
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
|
||||
@@ -132,7 +132,7 @@ pub async fn generate(
|
||||
return Err(create_error!(LabelMe));
|
||||
}
|
||||
|
||||
// ! FIXME: batch request to january
|
||||
// TODO: batch request to january
|
||||
let mut tasks = Vec::new();
|
||||
|
||||
for link in links {
|
||||
|
||||
@@ -344,7 +344,23 @@ impl PermissionQuery for DatabasePermissionQuery<'_> {
|
||||
| Cow::Owned(Channel::TextChannel { server, .. })
|
||||
| Cow::Borrowed(Channel::VoiceChannel { server, .. })
|
||||
| Cow::Owned(Channel::VoiceChannel { server, .. }) => {
|
||||
// FIXME: may double fetch
|
||||
if let Some(known_server) =
|
||||
// I'm not sure why I can't just pattern match both at once here?
|
||||
// It throws some weird error and the provided fix doesn't work :/
|
||||
if let Some(Cow::Borrowed(known_server)) = self.server {
|
||||
Some(known_server)
|
||||
} else if let Some(Cow::Owned(ref known_server)) = self.server {
|
||||
Some(known_server)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
{
|
||||
if server == &known_server.id {
|
||||
// Already cached, return early.
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if let Ok(server) = self.database.fetch_server(server).await {
|
||||
self.server.replace(Cow::Owned(server));
|
||||
}
|
||||
|
||||
@@ -98,17 +98,19 @@ auto_derived!(
|
||||
/// Name and / or avatar override information
|
||||
#[cfg_attr(feature = "validator", derive(Validate))]
|
||||
pub struct Masquerade {
|
||||
// FIXME: missing validation
|
||||
/// Replace the display name shown on this message
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[validate(length(min = 1, max = 32))]
|
||||
pub name: Option<String>,
|
||||
/// Replace the avatar shown on this message (URL to image file)
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[validate(length(min = 1, max = 256))]
|
||||
pub avatar: Option<String>,
|
||||
/// Replace the display role colour shown on this message
|
||||
///
|
||||
/// Must have `ManageRole` permission to use
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[validate(length(min = 1, max = 128), regex = "RE_COLOUR")]
|
||||
pub colour: Option<String>,
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ auto_derived_partial!(
|
||||
pub description: Option<String>,
|
||||
|
||||
/// Channels within this server
|
||||
// ! FIXME: this may be redundant
|
||||
// TODO: investigate if this is redundant and can be removed
|
||||
pub channels: Vec<String>,
|
||||
/// Categories for this server
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
|
||||
@@ -37,6 +37,12 @@ pub async fn calculate_user_permissions<P: PermissionQuery>(query: &mut P) -> Pe
|
||||
} else {
|
||||
permissions.into()
|
||||
}
|
||||
|
||||
// TODO: add boolean switch for permission for users to globally message a user
|
||||
// maybe an enum?
|
||||
// PrivacyLevel { Private, Friends, Mutual, Public, Global }
|
||||
|
||||
// TODO: add boolean switch for permission for users to mutually DM a user
|
||||
}
|
||||
|
||||
/// Calculate permissions against a server
|
||||
|
||||
@@ -31,8 +31,7 @@ pub async fn req(
|
||||
|
||||
match &channel {
|
||||
Channel::Group { .. } => {
|
||||
// FIXME: use permissions here?
|
||||
// interesting if users could block new group invites
|
||||
// TODO: use permissions here? interesting if users could block new group invites
|
||||
let member = member_id.as_user(db).await?;
|
||||
if !user.is_friends_with(&member.id) {
|
||||
return Err(create_error!(NotFriends));
|
||||
|
||||
@@ -148,7 +148,7 @@ mod test {
|
||||
.await;
|
||||
|
||||
dbg!(response.into_string().await);
|
||||
// TODO: finish impl
|
||||
// FIXME: finish impl
|
||||
// assert_eq!(response.status(), Status::NotFound);
|
||||
}
|
||||
|
||||
@@ -185,6 +185,6 @@ mod test {
|
||||
.dispatch()
|
||||
.await;
|
||||
|
||||
// TODO: impl assert_eq!(response.status(), Status::Forbidden);
|
||||
// FIXME: impl assert_eq!(response.status(), Status::Forbidden);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -568,8 +568,7 @@ impl EventV1 {
|
||||
pub async fn p_user(self, id: String, db: &Database) {
|
||||
self.clone().p(id.clone()).await;
|
||||
|
||||
// ! FIXME: this should be captured by member list in the future
|
||||
// ! and not immediately fanned out to users
|
||||
// TODO: this should be captured by member list in the future and not immediately fanned out to users
|
||||
if let Ok(members) = db.fetch_all_memberships(&id).await {
|
||||
for member in members {
|
||||
self.clone().p(member.id.server).await;
|
||||
|
||||
@@ -170,7 +170,8 @@ impl User {
|
||||
|
||||
/// Check if this user can acquire another server
|
||||
pub async fn can_acquire_server(&self, db: &Database) -> Result<bool> {
|
||||
// ! FIXME: hardcoded max server count
|
||||
// hardcoded max server count
|
||||
// NB. fixed in new crate
|
||||
Ok(db.fetch_server_count(&self.id).await? <= 100)
|
||||
}
|
||||
|
||||
|
||||
@@ -93,7 +93,6 @@ pub struct Server {
|
||||
pub description: Option<String>,
|
||||
|
||||
/// Channels within this server
|
||||
// ! FIXME: this may be redundant
|
||||
pub channels: Vec<String>,
|
||||
/// Categories for this server
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
|
||||
@@ -78,12 +78,6 @@ async fn calculate_permission(data: &mut PermissionCalculator<'_>, db: &crate::D
|
||||
_ => {}
|
||||
}
|
||||
|
||||
// ! FIXME: add boolean switch for permission for users to globally message a user
|
||||
// maybe an enum?
|
||||
// PrivacyLevel { Private, Friends, Mutual, Public, Global }
|
||||
|
||||
// ! FIXME: add boolean switch for permission for users to mutually DM a user
|
||||
|
||||
if data.flag_has_mutual_connection
|
||||
|| data
|
||||
.perspective
|
||||
|
||||
@@ -43,7 +43,7 @@ pub trait AbstractChannel: Sync + Send {
|
||||
async fn remove_user_from_group(&self, channel: &str, user: &str) -> Result<()>;
|
||||
|
||||
/// Set role permission for a channel
|
||||
/// ! FIXME: may want to refactor to just use normal updates
|
||||
/// TODO: may want to refactor to just use normal updates
|
||||
async fn set_channel_role_permission(
|
||||
&self,
|
||||
channel: &str,
|
||||
|
||||
@@ -2,10 +2,10 @@ use async_lock::Semaphore;
|
||||
use async_std::task::spawn;
|
||||
use futures::future::join_all;
|
||||
use linkify::{LinkFinder, LinkKind};
|
||||
use once_cell::sync::Lazy;
|
||||
use regex::Regex;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::{collections::HashSet, sync::Arc};
|
||||
use once_cell::sync::Lazy;
|
||||
|
||||
use crate::{models::attachment::File, Error, Result};
|
||||
|
||||
@@ -187,8 +187,6 @@ impl Embed {
|
||||
max_embeds: usize,
|
||||
semaphore: Arc<Semaphore>,
|
||||
) -> Result<Vec<Embed>> {
|
||||
|
||||
|
||||
// Ignore code blocks.
|
||||
let content = RE_CODE.replace_all(&content, "");
|
||||
|
||||
@@ -233,7 +231,6 @@ impl Embed {
|
||||
return Err(Error::LabelMe);
|
||||
}
|
||||
|
||||
// ! FIXME: batch request to january?
|
||||
let client = reqwest::Client::new();
|
||||
|
||||
let mut tasks = Vec::new();
|
||||
|
||||
Reference in New Issue
Block a user