re-parse mentions on display name change

This commit is contained in:
2026-05-29 00:43:32 +03:00
parent 06b417f9a1
commit dc1ff4446e
2 changed files with 21 additions and 2 deletions

View File

@@ -17,6 +17,8 @@ from ..auth import (
from ..models import Users, Posts, Reactions, Threads, Avatars, PostHistory, Mentions, BookmarkCollections
from ..constants import PermissionLevel, InfoboxKind
from ..util import get_form_checkbox
from ..lib.babycode import babycode_to_html
from ..db import db
import math
import os
import time
@@ -388,11 +390,28 @@ def set_personalization(username):
session['sort_by'] = request.form.get('sort_by', 'activity')
session['dont_subscribe_by_default'] = not get_form_checkbox('subscribe_by_default')
old_display_name = user.display_name
new_display_name = parse_display_name(request.form.get('display_name', ''))
user.update({
'status': request.form.get('status', '')[:100],
'display_name': parse_display_name(request.form.get('display_name', ''))
'display_name': new_display_name
})
if old_display_name != new_display_name:
# re-parse posts with mentions
q = """SELECT DISTINCT m.revision_id FROM mentions m
JOIN post_history ph ON m.revision_id = ph.id
JOIN posts p ON p.current_revision_id = ph.id
WHERE m.mentioned_user_id = ?"""
mentions = db.query(q, int(user.id))
with db.transaction():
for mention in mentions:
rev = PostHistory.find({'id': int(mention['revision_id'])})
parsed_content = babycode_to_html(rev.original_markup).result
rev.update({'content': parsed_content})
flash('Personalization settings updated.', InfoboxKind.INFO)
return redirect(url_for('.settings', username=username))

View File

@@ -848,7 +848,7 @@ a.mention {
padding: var(--base-padding);
background-color: var(--mention-color);
color: black;
border: 1px dashed;
border: 1px solid hsl(from var(--mention-color) h s 55%);
&:hover {
background-color: var(--hover-color);