feat(helpdesk): add ticket/debtor communication feed and chat timeline UI
This commit is contained in:
@@ -4,6 +4,11 @@
|
||||
* Loads the ticket activity log (PBI_FP_TicketLog) via fetch and renders
|
||||
* a chronological timeline of status changes and messages.
|
||||
*/
|
||||
import {
|
||||
renderCommunicationError,
|
||||
renderCommunicationFeed,
|
||||
renderCommunicationHint,
|
||||
} from './helpdesk-communication.js';
|
||||
|
||||
const container = document.querySelector('.app-details-container[data-ticket-no]');
|
||||
if (container) {
|
||||
@@ -13,6 +18,7 @@ if (container) {
|
||||
function init(container) {
|
||||
const ticketNo = container.dataset.ticketNo || '';
|
||||
const logUrl = container.dataset.ticketLogUrl || '';
|
||||
const communicationUrl = container.dataset.ticketCommunicationUrl || '';
|
||||
|
||||
if (!ticketNo || !logUrl) return;
|
||||
|
||||
@@ -157,5 +163,45 @@ function init(container) {
|
||||
}
|
||||
}
|
||||
|
||||
async function loadCommunication() {
|
||||
const communicationEl = document.getElementById('ticket-communication');
|
||||
const loadingEl = document.getElementById('ticket-communication-loading');
|
||||
if (!communicationEl || !communicationUrl) return;
|
||||
|
||||
try {
|
||||
const params = new URLSearchParams({ ticketNo });
|
||||
const response = await fetch(communicationUrl + '?' + params.toString(), { credentials: 'same-origin' });
|
||||
const data = await response.json();
|
||||
|
||||
if (loadingEl) loadingEl.hidden = true;
|
||||
|
||||
if (!data.ok) {
|
||||
communicationEl.innerHTML = renderCommunicationError(t('Could not load communication history.'));
|
||||
return;
|
||||
}
|
||||
|
||||
let html = '';
|
||||
if (
|
||||
data.meta
|
||||
&& data.meta.soap_used === false
|
||||
&& data.meta.fallback_used === true
|
||||
&& data.meta.soap_error
|
||||
) {
|
||||
html += renderCommunicationHint(t('Live communication unavailable, showing activity fallback.'));
|
||||
}
|
||||
html += renderCommunicationFeed(data.entries || [], {
|
||||
t,
|
||||
emptyMessage: 'No communication found.',
|
||||
showTicketNo: false,
|
||||
});
|
||||
|
||||
communicationEl.innerHTML = html;
|
||||
} catch {
|
||||
if (loadingEl) loadingEl.hidden = true;
|
||||
communicationEl.innerHTML = renderCommunicationError(t('Could not load communication history.'));
|
||||
}
|
||||
}
|
||||
|
||||
loadTimeline();
|
||||
loadCommunication();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user