Files
Mangarr/assets/controllers/activity_controller.js
ext.jeremy.guillot@maxicoffee.domains c6bd6ba549 fix: mercureUrl for prod
2025-02-01 18:16:46 +01:00

55 lines
1.6 KiB
JavaScript

import {Controller} from '@hotwired/stimulus';
/*
* The following line makes this controller "lazy": it won't be downloaded until needed
* See https://github.com/symfony/stimulus-bridge#lazy-controllers
*/
/* stimulusFetch: 'lazy' */
export default class extends Controller {
static targets = ['activity']
// ...
async connect() {
try {
const response = await fetch(`/activity/status`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
}
});
const data = await response.json();
// Handle the response data as needed
this.activityTarget.innerHTML = data.length;
if (data.length > 0) {
this.activityTarget.classList.remove('hidden');
}
} catch (error) {
console.error('Error:', error);
}
const mercureHubUrl = 'https://mangarr.test.nestor-server.fr/.well-known/mercure';
const eventSource = new EventSource(`${mercureHubUrl}?topic=activity`);
eventSource.onmessage = (event) => {
const data = JSON.parse(event.data);
if (data.processing !== undefined && data.pending !== undefined) {
let totalActivities = data.processing.length + data.pending.length;
this.activityTarget.innerHTML = totalActivities;
if (totalActivities > 0) {
this.activityTarget.classList.remove('hidden');
}else if (totalActivities === 0) {
this.activityTarget.classList.add('hidden');
}
}
};
eventSource
.onerror = (event) => {
console.error('EventSource failed:', event);
};
}
}