forked from chookspace/chookchat
JSON-based message history
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user