;(function() {
const moduleUrl = window.getModuleUrl();
loadCSSModule('overlay-alertvideo-css', moduleUrl + '/css/alert-video.css');
function initModule() {
const container = document.getElementById('mainContainer') || document.body;
if (!document.getElementById('alertVideoContainer')) {
const alertVideoContainer = document.createElement('div');
alertVideoContainer.id = 'alertVideoContainer';
container.appendChild(alertVideoContainer);
}
}
initModule();
if (window.SBdispatcher) {
SBdispatcher.on('stream-alert:Follow', data => {
showAlert({
userName: data.user,
videoUrl: moduleUrl + '/files/ALERT_follow.webm',
delay: 12
});
});
SBdispatcher.on('stream-alert:Sub', data => {
showAlert({
userName: data.user,
videoUrl: moduleUrl + '/files/ALERT_sub.webm',
delay: 12
});
});
SBdispatcher.on('stream-alert:SubGift', data => {
showAlert({
userName: data.user,
videoUrl: moduleUrl + '/files/ALERT_gift.webm',
delay: 12,
topLine: 'Abonnement offert à ' + data.param1 + '',
// bottomLine: 'Il a déjà offert ' + data.param2 +' abonnements à la communauté !'
}); });
}
function showAlert({ userName, videoUrl, delay = 12, topLine = null, bottomLine = null }) {
const container = document.createElement('div');
container.classList.add('alert_outer-container', 'playing');
const widget = document.createElement('div');
widget.classList.add('alert_widget-container');
const textContainer = document.createElement('div');
textContainer.classList.add('alert_text-container');
// Zone nom d’utilisateur (au centre de la vidéo)
const centerTextWrapper = document.createElement('div');
const usernameText = document.createElement('p');
usernameText.classList.add('alert_text');
const usernameSpan = document.createElement('span');
usernameSpan.classList.add('alert_text-accent', 'alert_variable-username');
usernameSpan.textContent = userName;
usernameText.appendChild(usernameSpan);
centerTextWrapper.appendChild(usernameText);
// Vidéo
const videoContainer = document.createElement('div');
videoContainer.classList.add('alertVideoContainer');
const video = document.createElement('video');
video.classList.add('alertVideo');
video.autoplay = true;
video.muted = true;
video.playsInline = true;
const source = document.createElement('source');
source.src = videoUrl;
source.type = 'video/webm';
video.appendChild(source);
videoContainer.appendChild(video);
// Optionnel : ligne de texte en haut
if (topLine) {
const topTextContainer = document.createElement('div');
topTextContainer.classList.add('alert_top-text-container');
const topText = document.createElement('p');
topText.classList.add('alert_top-text');
topText.innerHTML = topLine;
topTextContainer.appendChild(topText);
container.appendChild(topTextContainer);
}
// Optionnel : ligne de texte en bas
if (bottomLine) {
const bottomTextContainer = document.createElement('div');
bottomTextContainer.classList.add('alert_bottom-text-container');
const bottomText = document.createElement('p');
bottomText.classList.add('alert_bottom-text');
bottomText.innerHTML = bottomLine;
bottomTextContainer.appendChild(bottomText);
container.appendChild(bottomTextContainer);
}
// Assemble tout
textContainer.appendChild(centerTextWrapper);
textContainer.appendChild(videoContainer);
widget.appendChild(textContainer);
container.appendChild(widget);
document.getElementById('alertVideoContainer').appendChild(container);
setTimeout(() => {
container.remove();
}, delay*1000);
}
})();