mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-05-27 19:25:15 +02:00
fix: use delimited format for mention highlighting
This commit is contained in:
parent
80e19a52cb
commit
985f50b683
2 changed files with 9 additions and 5 deletions
|
|
@ -38,14 +38,16 @@ def parse_mentions(content: str) -> list[UUID]:
|
||||||
|
|
||||||
def render_mentions(content: str, user_names: dict[UUID, str]) -> str:
|
def render_mentions(content: str, user_names: dict[UUID, str]) -> str:
|
||||||
"""
|
"""
|
||||||
Replace @[uuid] mentions with @DisplayName in content.
|
Replace @[uuid] mentions with @{DisplayName} in content.
|
||||||
|
|
||||||
|
Uses curly braces as delimiters for unambiguous frontend parsing.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
content: Comment text with @[uuid] mentions
|
content: Comment text with @[uuid] mentions
|
||||||
user_names: Dict mapping user UUIDs to display names
|
user_names: Dict mapping user UUIDs to display names
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Content with mentions rendered as @DisplayName
|
Content with mentions rendered as @{DisplayName}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def replace_mention(match: re.Match) -> str:
|
def replace_mention(match: re.Match) -> str:
|
||||||
|
|
@ -53,7 +55,7 @@ def render_mentions(content: str, user_names: dict[UUID, str]) -> str:
|
||||||
uuid = UUID(match.group(1))
|
uuid = UUID(match.group(1))
|
||||||
name = user_names.get(uuid)
|
name = user_names.get(uuid)
|
||||||
if name:
|
if name:
|
||||||
return f"@{name}"
|
return f"@{{{name}}}"
|
||||||
# Keep original format if user not found
|
# Keep original format if user not found
|
||||||
return match.group(0)
|
return match.group(0)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,8 @@ function formatTimestamp(dateString: string): string {
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderMentions(content: string): React.ReactNode {
|
function renderMentions(content: string): React.ReactNode {
|
||||||
const mentionPattern = /@(\w+(?:\s+\w+)*)/g;
|
// Match @{DisplayName} format from backend
|
||||||
|
const mentionPattern = /@\{([^}]+)\}/g;
|
||||||
const parts: React.ReactNode[] = [];
|
const parts: React.ReactNode[] = [];
|
||||||
let lastIndex = 0;
|
let lastIndex = 0;
|
||||||
let match: RegExpExecArray | null;
|
let match: RegExpExecArray | null;
|
||||||
|
|
@ -78,9 +79,10 @@ function renderMentions(content: string): React.ReactNode {
|
||||||
parts.push(content.slice(lastIndex, match.index));
|
parts.push(content.slice(lastIndex, match.index));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Display as @DisplayName (without curly braces)
|
||||||
parts.push(
|
parts.push(
|
||||||
<span key={match.index} className="rounded bg-primary/10 px-1 font-medium text-primary">
|
<span key={match.index} className="rounded bg-primary/10 px-1 font-medium text-primary">
|
||||||
{match[0]}
|
@{match[1]}
|
||||||
</span>
|
</span>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue