mirror of https://github.com/xwiki-labs/cryptpad
63 lines
2.1 KiB
JavaScript
63 lines
2.1 KiB
JavaScript
// SPDX-FileCopyrightText: 2023 XWiki CryptPad Team <contact@cryptpad.org> and contributors
|
|
//
|
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
(function () {
|
|
var logoPath = '/customize/CryptPad_logo.svg';
|
|
if (location.pathname === '/' || location.pathname === '/index.html') {
|
|
logoPath = '/api/logo';
|
|
}
|
|
|
|
var elem = document.createElement('div');
|
|
elem.setAttribute('id', 'placeholder');
|
|
elem.innerHTML = [
|
|
'<div class="placeholder-logo-container">',
|
|
'<img class="placeholder-logo" alt="CryptPad Logo" src="' + logoPath + '">',
|
|
'</div>',
|
|
'<div class="placeholder-message-container">',
|
|
'<p>Loading...</p>',
|
|
'</div>'
|
|
].join('');
|
|
|
|
var key = 'CRYPTPAD_STORE|colortheme'; // handle outer
|
|
if (localStorage[key] && localStorage[key] === 'dark') {
|
|
elem.classList.add('dark-theme');
|
|
}
|
|
if (!localStorage[key] && localStorage[key+'_default'] && localStorage[key+'_default'] === 'dark') {
|
|
elem.classList.add('dark-theme');
|
|
}
|
|
|
|
var req;
|
|
try {
|
|
req = JSON.parse(decodeURIComponent(window.location.hash.substring(1)));
|
|
if ((req.theme || req.themeOS) === 'dark') { // handle inner
|
|
elem.classList.add('dark-theme');
|
|
}
|
|
} catch (e) {}
|
|
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
document.body.appendChild(elem);
|
|
window.CP_preloadingTime = +new Date();
|
|
|
|
// soft transition between inner and outer placeholders
|
|
if (req && req.time && (+new Date() - req.time > 2000)) {
|
|
try {
|
|
var logo = document.querySelector('.placeholder-logo-container');
|
|
var message = document.querySelector('.placeholder-message-container');
|
|
logo.style.opacity = 100;
|
|
message.style.opacity = 100;
|
|
logo.style.animation = 'none';
|
|
message.style.animation = 'none';
|
|
} catch (err) {}
|
|
}
|
|
|
|
// fallback if CSS animations not available
|
|
setTimeout(() => {
|
|
try {
|
|
document.querySelector('.placeholder-logo-container').style.opacity = 100;
|
|
document.querySelector('.placeholder-message-container').style.opacity = 100;
|
|
} catch (e) {}
|
|
}, 3000);
|
|
});
|
|
}());
|