htmx user_preview: redirect back

This commit is contained in:
Hendrik L 2025-01-13 16:23:45 +01:00
parent 242c737076
commit 8930e4a640
2 changed files with 14 additions and 6 deletions

View file

@ -1,4 +1,4 @@
{% macro render_username(user, add_domain=True) -%} {% macro render_username(user, add_domain=True, htmx_redirect_back_to=None) -%}
<span class="render_username"> <span class="render_username">
{% if user.deleted -%} {% if user.deleted -%}
{% if current_user.is_authenticated and current_user.is_admin() -%} {% if current_user.is_authenticated and current_user.is_admin() -%}
@ -34,7 +34,11 @@
{% endif -%} {% endif -%}
{% endif -%} {% endif -%}
<div class="d-none user_preview" id="preview_{{ user.id }}" <div class="d-none user_preview" id="preview_{{ user.id }}"
hx-get="{{ url_for('user.user_preview', user_id=user.id) }}" {% if htmx_redirect_back_to -%}
hx-get="{{ url_for('user.user_preview', user_id=user.id, return_to=htmx_redirect_back_to) }}"
{% else %}
hx-get="{{ url_for('user.user_preview', user_id=user.id) }}"
{% endif %}
hx-trigger="intersect once" hx-trigger="intersect once"
hx-target="this" hx-target="this"
hx-swap="innerHTML" hx-swap="innerHTML"

View file

@ -1346,6 +1346,7 @@ def user_read_posts_delete():
@login_required @login_required
def edit_user_note(actor): def edit_user_note(actor):
actor = actor.strip() actor = actor.strip()
return_to = request.args.get('return_to')
if '@' in actor: if '@' in actor:
user: User = User.query.filter_by(ap_id=actor, deleted=False).first() user: User = User.query.filter_by(ap_id=actor, deleted=False).first()
else: else:
@ -1365,22 +1366,25 @@ def edit_user_note(actor):
cache.delete_memoized(User.get_note, user, current_user) cache.delete_memoized(User.get_note, user, current_user)
flash(_('Your changes have been saved.'), 'success') flash(_('Your changes have been saved.'), 'success')
goto = request.args.get('redirect') if 'redirect' in request.args else f'/u/{actor}' if return_to:
return redirect(goto) return redirect(return_to)
else:
return redirect(f'/u/{actor}')
elif request.method == 'GET': elif request.method == 'GET':
form.note.data = user.get_note(current_user) form.note.data = user.get_note(current_user)
return render_template('user/edit_note.html', title=_('Edit note'), form=form, user=user, return render_template('user/edit_note.html', title=_('Edit note'), form=form, user=user, return_to=return_to,
menu_topics=menu_topics(), site=g.site) menu_topics=menu_topics(), site=g.site)
@bp.route('/user/<int:user_id>/preview') @bp.route('/user/<int:user_id>/preview')
def user_preview(user_id): def user_preview(user_id):
user = User.query.get_or_404(user_id) user = User.query.get_or_404(user_id)
return_to = request.args.get('return_to')
if (user.deleted or user.banned) and current_user.is_anonymous: if (user.deleted or user.banned) and current_user.is_anonymous:
abort(404) abort(404)
return render_template('user/user_preview.html', user=user) return render_template('user/user_preview.html', user=user, return_to=return_to)
@bp.route('/user/lookup/<person>/<domain>') @bp.route('/user/lookup/<person>/<domain>')