usage limits for rooms and convos

This commit is contained in:
2025-06-06 09:37:26 +02:00
parent 85b769f7dd
commit 51cea567ca
7 changed files with 130 additions and 23 deletions

View File

@@ -8,11 +8,39 @@
title="Conversations",
description="Manage your conversations and messages",
button_text="New Conversation" if current_user.is_admin or current_user.is_manager else "",
button_url=url_for('conversations.create_conversation') if current_user.is_admin or current_user.is_manager else "",
button_url="#" if current_user.is_admin or current_user.is_manager else "",
icon="fa-comments",
button_icon="fa-plus"
) }}
<!-- Conversation Limit Modal -->
<div class="modal fade" id="conversationLimitModal" tabindex="-1" aria-labelledby="conversationLimitModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="conversationLimitModalLabel">Conversation Limit Reached</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="d-flex align-items-center gap-3 mb-3">
<i class="fas fa-exclamation-circle text-warning" style="font-size: 2rem;"></i>
<div>
<h6 class="mb-1">Maximum Conversations Reached</h6>
<p class="text-muted mb-0">You have reached the maximum number of conversations allowed ({{ usage_stats.max_conversations }}).</p>
</div>
</div>
<div class="alert alert-info">
<i class="fas fa-info-circle me-2"></i>
Please contact your administrator if you need to create more conversations.
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-bs-dismiss="modal">OK</button>
</div>
</div>
</div>
</div>
<div class="container mt-4">
<!-- Search and Filter Section -->
<div class="bg-white rounded-lg shadow-sm p-4 mb-4">
@@ -123,5 +151,34 @@
{% block extra_js %}
<script src="{{ url_for('static', filename='js/conversations-list.js') }}?v={{ 'js/conversations-list.js'|asset_version }}"></script>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
// Get the New Conversation button and add click handler
const newConversationBtn = document.querySelector('header button');
if (newConversationBtn) {
newConversationBtn.addEventListener('click', function(e) {
if ({{ usage_stats.current_conversations }} >= {{ usage_stats.max_conversations }}) {
e.preventDefault();
var conversationLimitModal = new bootstrap.Modal(document.getElementById('conversationLimitModal'));
conversationLimitModal.show();
} else {
window.location.href = '{{ url_for("conversations.create_conversation") }}';
}
});
}
// Handle modal backdrop removal
const conversationLimitModal = document.getElementById('conversationLimitModal');
if (conversationLimitModal) {
conversationLimitModal.addEventListener('hidden.bs.modal', function () {
document.body.classList.remove('modal-open');
const backdrop = document.querySelector('.modal-backdrop');
if (backdrop) {
backdrop.remove();
}
});
}
});
</script>
{% endblock %}
{% endblock %}