From dc1ff4446ea7ec79032cd1d441075aadf3fdb3c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lera=20Elvo=C3=A9?= Date: Fri, 29 May 2026 00:43:32 +0300 Subject: [PATCH] re-parse mentions on display name change --- app/routes/users.py | 21 ++++++++++++++++++++- data/static/css/style.css | 2 +- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/app/routes/users.py b/app/routes/users.py index 7f09d84..aaad3bd 100644 --- a/app/routes/users.py +++ b/app/routes/users.py @@ -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)) diff --git a/data/static/css/style.css b/data/static/css/style.css index c4ed2f5..7af61f0 100644 --- a/data/static/css/style.css +++ b/data/static/css/style.css @@ -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);