aTweet/templates/dm_conversation.html

109 lines
5.0 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Conversation with {{ other_user.username }} - aTweet</title>
<link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}">
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
<style>
.messages-container {
height: 325px;
overflow-y: auto;
border: 1px solid #38444d;
border-radius: 5px;
padding: 10px;
margin-bottom: 20px;
}
</style>
</head>
<body>
<div class="container">
<h1>Conversation with {{ other_user.username }}</h1>
<div class="messages-container" id="messageList">
{% for message in messages %}
<div class="message-container {% if message.sender_id == session['user_id'] %}sent{% else %}received{% endif %}">
<img src="{{ url_for('static', filename='uploads/' + (message.pfp if message.pfp else 'default_pfp.png')) }}" alt="{{ message.username }}" class="message-avatar">
<div class="message-content">
<span class="message-username">{{ message.username }}</span>
<p>{{ message.content }}</p>
{% if message.image %}
<img src="{{ url_for('static', filename='uploads/' + message.image) }}" alt="Message image" class="message-image">
{% endif %}
</div>
</div>
{% endfor %}
</div>
<form id="messageForm" action="{{ url_for('send_message', username=other_user.username) }}" method="POST" enctype="multipart/form-data" class="message-form">
<textarea name="content" placeholder="Type your message..." required></textarea>
<input type="file" name="image" accept="image/*">
<button type="submit" class="btn btn-primary">Send</button>
</form>
</div>
<footer>
<div class="footer-container">
<a href="{{ url_for('index') }}" class="footer-button">
<i class="fas fa-home"></i> Home
</a>
<a href="{{ url_for('profile', username=session.username) }}" class="footer-button">
<i class="fas fa-user"></i> Profile
</a>
<a href="{{ url_for('groups') }}" class="footer-button">
<i class="fas fa-users"></i> Groups
</a>
<a href="{{ url_for('dms') }}" class="footer-button">
<i class="fas fa-envelope"></i> DMs
</a>
{% if session.user_id and get_user_by_id(session.user_id)['username'] == 'avery' %}
<a href="{{ url_for('admin_panel') }}" class="footer-button">
<i class="fas fa-cog"></i> Admin Panel
</a>
{% endif %}
<a href="{{ url_for('logout') }}" class="footer-button">
<i class="fas fa-sign-out-alt"></i> Logout
</a>
</div>
</footer>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
let lastMessageId = 0;
function scrollToBottom() {
const messageList = document.getElementById('messageList');
messageList.scrollTop = messageList.scrollHeight;
}
function checkNewMessages() {
$.get("{{ url_for('check_new_messages', username=other_user.username) }}?last_message_id=" + lastMessageId, function(data) {
if (data.success && data.messages && data.messages.length > 0) {
const messageList = document.getElementById('messageList');
data.messages.forEach(message => {
if (message.id > lastMessageId) {
const newMessage = `
<div class="message-container ${message.sender_id == {{ session['user_id'] }} ? 'sent' : 'received'}">
<img src="{{ url_for('static', filename='uploads/') }}${message.pfp || 'default_pfp.png'}" alt="${message.username}" class="message-avatar">
<div class="message-content">
<span class="message-username">${message.username}</span>
<p>${message.content}</p>
<span class="message-timestamp">${message.created_at}</span>
</div>
</div>
`;
messageList.insertAdjacentHTML('beforeend', newMessage);
lastMessageId = message.id;
}
});
scrollToBottom();
}
});
}
scrollToBottom();
lastMessageId = {{ messages[-1].id if messages else 0 }};
setInterval(checkNewMessages, 200);
</script>
</body>
</html>