feat: @提及支持改名后链接跟随UID + 显示名自动更新
- comment_mentions新增original_username列,创建时记录原始@用户名
- Mentions map改为{original_username: {uid, name}}结构,name为当前显示名
- 用户改名后:旧@文本仍能匹配original_username,链接跟随uid不变,显示名自动更新
- 前端renderMentions适配新结构
This commit is contained in:
@ -14,17 +14,17 @@
|
||||
var currentPage = 1;
|
||||
var totalPages = 1;
|
||||
|
||||
// 渲染@提及:有效提及渲染为蓝色链接,无效提及保持纯文本
|
||||
// 渲染@提及:有效提及渲染为蓝色链接(显示当前用户名),无效提及保持纯文本
|
||||
// mentions: { original_username: {uid, name} } — name为当前显示名,用户改名后自动更新
|
||||
function renderMentions(body, mentions) {
|
||||
body = escapeHtml(body);
|
||||
if (!mentions || Object.keys(mentions).length === 0) {
|
||||
// 无 mentions 数据时仍高亮@,但不加链接(降级处理)
|
||||
return body.replace(/@(\S{1,16})/g, '<span class="reply-to">@$1</span>');
|
||||
}
|
||||
return body.replace(/@(\S{1,16})/g, function(match, username) {
|
||||
var uid = mentions[username];
|
||||
if (uid) {
|
||||
return '<a class="mention-link" href="/space/' + uid + '">@' + escapeHtml(username) + '</a>';
|
||||
var info = mentions[username];
|
||||
if (info && info.uid) {
|
||||
return '<a class="mention-link" href="/space/' + info.uid + '">@' + escapeHtml(info.name) + '</a>';
|
||||
}
|
||||
return match;
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user