add @mentions — parsed server-side, rendered as highlighted spans
- Backend: parse_mentions() extracts @username from content - Message API response includes mentions: string[] field - Frontend: renderContent() highlights @mentions in hot orange - Works with alphanumeric + hyphens + underscores Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,16 @@ use chrono::{DateTime, Utc};
|
||||
use sqlx::FromRow;
|
||||
use uuid::Uuid;
|
||||
|
||||
/// Extract @mentions from message content
|
||||
fn parse_mentions(content: &str) -> Vec<String> {
|
||||
content
|
||||
.split_whitespace()
|
||||
.filter(|w| w.starts_with('@') && w.len() > 1)
|
||||
.map(|w| w.trim_start_matches('@').trim_end_matches(|c: char| !c.is_alphanumeric() && c != '_' && c != '-').to_string())
|
||||
.filter(|m| !m.is_empty())
|
||||
.collect()
|
||||
}
|
||||
|
||||
/// DB row types — these map directly to SQL tables.
|
||||
/// Separate from API types in colony-types.
|
||||
|
||||
@@ -87,6 +97,7 @@ impl MessageRow {
|
||||
} else {
|
||||
self.content.clone()
|
||||
},
|
||||
mentions: parse_mentions(&self.content),
|
||||
metadata: self
|
||||
.metadata
|
||||
.as_ref()
|
||||
|
||||
Reference in New Issue
Block a user