JSON-based message history

This commit is contained in:
2025-06-07 10:06:46 +10:00
parent 82d18ac74d
commit 02f9460fd3
2 changed files with 87 additions and 27 deletions

View File

@@ -678,7 +678,7 @@ function handleRoomChange(message) {
}
// Handle file messages
function handleFileMessage(message) {
function handleFileMessage(message, isHistory = false) {
// Only show file if it's for current room
if (message.room && message.room !== currentRoom) {
highlightRoom(message.room);
@@ -690,6 +690,7 @@ function handleFileMessage(message) {
const messageWrapper = document.createElement('div');
messageWrapper.className = 'message';
if (isHistory) messageWrapper.classList.add('history-message');
// Create avatar
const avatar = document.createElement('div');
@@ -711,7 +712,7 @@ function handleFileMessage(message) {
const timestampSpan = document.createElement('span');
timestampSpan.className = 'message-timestamp';
timestampSpan.textContent = new Date().toLocaleTimeString();
timestampSpan.textContent = isHistory ? 'History' : new Date().toLocaleTimeString();
headerDiv.appendChild(authorSpan);
headerDiv.appendChild(timestampSpan);
@@ -1183,8 +1184,34 @@ function clearMessages() {
async function loadRoomHistory(roomName) {
try {
const history = await getRoomHistory(roomName);
const jHistory = JSON.parse(history);
if (history) {
const messagebox = document.getElementById('messagebox');
jHistory.forEach(function (message, index) {
// Handle file messages
if (message.type == "file") {
handleFileMessage(message, true);
return;
}
// Handle call messages
else if (message.type == "call") {
handleCallMessage(message);
return;
}
// Handle regular messages
else if (message.type == "message") {
if (message.room && message.room !== currentRoom) {
// Highlight room with unread message
highlightRoom(message.room);
return;
}
addChatMessage(message.username, message.content, true);
}
});
/*
const lines = history.split('\n');
lines.forEach(line => {
@@ -1205,7 +1232,7 @@ async function loadRoomHistory(roomName) {
addSystemMessage(line, true);
}
}
});
});*/
messagebox.scrollTop = messagebox.scrollHeight;
}