orchard/resources/js/frame_Windows.js
2021-11-19 17:02:28 -06:00

91 lines
No EOL
4.2 KiB
JavaScript

try {
if (document.querySelector('.web-nav-window-controls') === null && document.getElementsByClassName('web-nav-window-controls').length === 0) {
class ClassWatcher {
constructor(targetNode, classToWatch, classAddedCallback, classRemovedCallback) {
this.targetNode = targetNode;
this.classToWatch = classToWatch;
this.classAddedCallback = classAddedCallback;
this.classRemovedCallback = classRemovedCallback;
this.observer = null;
this.lastClassState = targetNode.classList.contains(this.classToWatch);
this.init();
};
init() {
this.observer = new MutationObserver(this.mutationCallback);
this.observe();
}
observe() {
this.observer.observe(this.targetNode, { attributes: true })
};
disconnect() {
this.observer.disconnect()
};
mutationCallback = mutationsList => {
for(let mutation of mutationsList) {
if (mutation.type === 'attributes' && mutation.attributeName === 'class') {
let currentClassState = mutation.target.classList.contains(this.classToWatch);
if(this.lastClassState !== currentClassState) {
this.lastClassState = currentClassState;
if(currentClassState) {
this.classAddedCallback();
}
else {
this.classRemovedCallback();
}
}
}
}
}
}
function UserAuthorized() { /* When user is authenticated (Signed In) and web-chrome appears */
document.getElementsByClassName('web-nav-window-controls')[0].classList.add('web-chrome-window-controls');
document.getElementsByClassName('web-main-drag')[0].style.zIndex = '1'; /* Hide the drag bar */
}
function UserUnauthorized() { /* When user is unauthenticated (Signed Out) and web-chrome display: none */
if (document.getElementsByClassName('web-chrome-window-controls').length !== 0) {
console.log(`Length: ${document.getElementsByClassName('web-chrome-window-controls').length}`);
document.getElementsByClassName('web-chrome-window-controls')[0].classList.remove('web-chrome-window-controls');
}
document.getElementsByClassName('web-main-drag')[0].style.zIndex = '2'; /* Show the drag bar */
document.getElementsByClassName('header-nav')[0].style.margin = '5px var(--bodyGutter) 0'
}
new ClassWatcher(document.body, 'not-authenticated', UserUnauthorized, UserAuthorized);
document.getElementsByClassName('web-navigation')[0].insertAdjacentHTML('afterbegin', `
<div class="web-main-drag">
</div>
<div class="web-nav-window-controls">
<span id="minimize" onclick="ipcRenderer.send('minimize')"></span>
<span id="maximize" onclick="ipcRenderer.send('maximize')"></span>
<span id="close" onclick="ipcRenderer.send('close')"></span>
</div>
`);
if ((document.getElementsByClassName('web-chrome')[0].style.display === 'none' || document.body.classList.contains('not-authenticated')) && document.getElementsByClassName('web-nav-window-controls').length > 0) {
UserUnauthorized();
} else {
UserAuthorized();
}
/* Clean Up Search bar */
if (document.getElementsByClassName('search-box dt-search-box web-navigation__search-box').length > 0) {
document.getElementsByClassName('search-box dt-search-box web-navigation__search-box')[0].style.marginTop = '15px';
}
if (document.getElementById('web-navigation-container')) {
document.getElementById('web-navigation-container').style.gridTemplateRows = 'auto auto 1fr auto'
}
}
} catch (e) {
console.error("[CSS] Error while trying to apply frame_Windows.js", e);
}