feat: Ältere Nachrichten nachladen per Button (500er Batches)
- Backend: beforeId-Parameter + GetActiveMessagesBeforeId + GetActiveMessageCountBeforeId - Frontend: Button 'X ältere Nachrichten laden' statt Info-Text - Archiv-Button erscheint erst wenn alle älteren Nachrichten geladen - Scroll-Position bleibt beim Nachladen erhalten - Fix: wwwroot Quell-Dateien mit publish synchronisiert
This commit is contained in:
1 parent
38bdb4408c
commit
575e5c1d44
7 files changed
+233
-18
No files matched your search
+26
-5
@@ -650,10 +650,26 @@ function setMetaHtml(html) {
|
||||
metaEl().innerHTML = html;
|
||||
}
|
||||
|
||||
// ── Older Messages Button ──
|
||||
|
||||
function showOlderMessagesButton(remainingCount) {
|
||||
removeOlderMessagesButton();
|
||||
const btn = document.createElement('button');
|
||||
btn.className = 'archive-load-btn older-messages-btn';
|
||||
btn.innerHTML = '<i class="fa fa-arrow-up"></i> ' + remainingCount + ' ältere Nachrichten laden';
|
||||
btn.addEventListener('click', () => loadOlderMessages());
|
||||
chatEl().prepend(btn);
|
||||
}
|
||||
|
||||
function removeOlderMessagesButton() {
|
||||
const btn = chatEl().querySelector('.older-messages-btn');
|
||||
if (btn) btn.remove();
|
||||
}
|
||||
|
||||
// ── Archive Button ──
|
||||
|
||||
function showArchiveLoadButton() {
|
||||
const existing = chatEl().querySelector('.archive-load-btn');
|
||||
const existing = chatEl().querySelector('.archive-load-btn:not(.older-messages-btn)');
|
||||
if (existing) existing.remove();
|
||||
|
||||
const btn = document.createElement('button');
|
||||
@@ -661,11 +677,16 @@ function showArchiveLoadButton() {
|
||||
btn.innerHTML = '<i class="fa fa-archive"></i> Archivierte Nachrichten laden';
|
||||
btn.addEventListener('click', loadLatestArchive);
|
||||
|
||||
// Immer ganz oben im Chat
|
||||
chatEl().prepend(btn);
|
||||
// Immer ganz oben im Chat (aber nach dem older-messages-btn falls vorhanden)
|
||||
const olderBtn = chatEl().querySelector('.older-messages-btn');
|
||||
if (olderBtn) {
|
||||
olderBtn.after(btn);
|
||||
} else {
|
||||
chatEl().prepend(btn);
|
||||
}
|
||||
}
|
||||
|
||||
function removeArchiveLoadButton() {
|
||||
const btn = chatEl().querySelector('.archive-load-btn');
|
||||
if (btn) btn.remove();
|
||||
const btns = chatEl().querySelectorAll('.archive-load-btn:not(.older-messages-btn)');
|
||||
btns.forEach(b => b.remove());
|
||||
}
|
||||
Reference in new issue
Block a user