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 ..models import Users, Posts, Reactions, Threads, Avatars, PostHistory, Mentions, BookmarkCollections
from ..constants import PermissionLevel, InfoboxKind from ..constants import PermissionLevel, InfoboxKind
from ..util import get_form_checkbox from ..util import get_form_checkbox
from ..lib.babycode import babycode_to_html
from ..db import db
import math import math
import os import os
import time import time
@@ -388,11 +390,28 @@ def set_personalization(username):
session['sort_by'] = request.form.get('sort_by', 'activity') session['sort_by'] = request.form.get('sort_by', 'activity')
session['dont_subscribe_by_default'] = not get_form_checkbox('subscribe_by_default') 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({ user.update({
'status': request.form.get('status', '')[:100], '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) flash('Personalization settings updated.', InfoboxKind.INFO)
return redirect(url_for('.settings', username=username)) return redirect(url_for('.settings', username=username))

View File

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