Add connection review page with optional message on connection requests
- New GET route and template for reviewing individual connection requests
- Optional personal message field when sending connection requests
- Message visible to recipient on review page and connection list
- Dashboard "Review" button links to per-connection review page
- QR scan flow shows message prompt before sending request
- Fix accepted connections query: include both sent and received
- Fix url_for('uploaded_file') -> url_for('static', 'uploads/')
- Fix request.json -> request.is_json to avoid 415 on form POST
- Remove card from DOM on approve/reject instead of page reload
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -61,9 +61,14 @@
|
||||
{% elif att.my_status == 'rejected' %}
|
||||
<span class="badge badge-rejected">{{ 'rejected'|t }}</span>
|
||||
{% else %}
|
||||
<form method="POST" action="{{ url_for('create_connection') }}" class="connect-form">
|
||||
<button type="button" class="btn btn-sm btn-primary connect-toggle-btn" data-attendee-id="{{ att.id }}">{{ 'connect'|t }}</button>
|
||||
<form method="POST" action="{{ url_for('create_connection') }}" class="connect-form hidden" id="connect-form-{{ att.id }}">
|
||||
<input type="hidden" name="connected_attendee_id" value="{{ att.id }}">
|
||||
<button type="submit" class="btn btn-sm btn-primary">{{ 'connect'|t }}</button>
|
||||
<textarea name="message" class="connect-message-input" placeholder="{{ 'optional_message'|t }}" rows="2" maxlength="500"></textarea>
|
||||
<div class="connect-form-actions">
|
||||
<button type="submit" class="btn btn-sm btn-primary">{{ 'send_request'|t }}</button>
|
||||
<button type="button" class="btn btn-sm btn-ghost connect-cancel-btn">{{ 'cancel'|t }}</button>
|
||||
</div>
|
||||
</form>
|
||||
{% endif %}
|
||||
</div>
|
||||
@@ -75,4 +80,24 @@
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
<script>
|
||||
document.querySelectorAll('.connect-toggle-btn').forEach(btn => {
|
||||
btn.addEventListener('click', function() {
|
||||
const attendeeId = this.dataset.attendeeId;
|
||||
this.classList.add('hidden');
|
||||
document.getElementById('connect-form-' + attendeeId).classList.remove('hidden');
|
||||
});
|
||||
});
|
||||
|
||||
document.querySelectorAll('.connect-cancel-btn').forEach(btn => {
|
||||
btn.addEventListener('click', function() {
|
||||
const form = this.closest('.connect-form');
|
||||
form.classList.add('hidden');
|
||||
form.closest('.attendee-actions').querySelector('.connect-toggle-btn').classList.remove('hidden');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
Reference in New Issue
Block a user