forked from terkelg/ramme
-
Notifications
You must be signed in to change notification settings - Fork 0
/
browser.js
115 lines (88 loc) · 2.64 KB
/
browser.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
'use strict';
const electron = require('electron');
const config = require('./config');
const elementReady = require('element-ready');
const ipcRenderer = electron.ipcRenderer;
const $ = document.querySelector.bind(document);
const selectors = {
root: '#react-root ._onabe',
loginButton: '#react-root ._fcn8k'
};
ipcRenderer.on('toggle-dark-mode', () => {
config.set('darkMode', !config.get('darkMode'));
setDarkMode();
});
ipcRenderer.on('navigate-home', () => {
const home = $('._n7q2c ._r1svv:nth-child(1) a');
if(home) {
home.click();
}
});
ipcRenderer.on('navigate-discover', () => {
const discover = $('._n7q2c ._r1svv:nth-child(2) a');
if(discover) {
discover.click();
}
});
ipcRenderer.on('navigate-notifications', () => {
const notifications = $('._n7q2c ._r1svv:nth-child(3) a');
if(notifications) {
notifications.click();
}
});
ipcRenderer.on('navigate-profile', () => {
const profile = $('._n7q2c ._r1svv:nth-child(4) a');
console.log(profile);
if(profile) {
profile.click();
}
});
function backButton() {
const body = $('body');
const link = document.createElement('a');
const element = document.createElement('div');
link.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22.84 17.39"><polygon points="22.84 8.22 1.82 8.22 9.37 0.67 8.7 0 0 8.7 8.7 17.39 9.37 16.72 1.82 9.17 22.84 9.17 22.84 8.22"/></svg>'
element.classList.add('back-btn', 'inactive');
element.appendChild(link);
body.appendChild(element);
link.addEventListener('click', event => {
ipcRenderer.send('back');
});
ipcRenderer.on('set-button-state', (event, enabled) => {
if (enabled) {
element.classList.remove('inactive');
} else {
element.classList.add('inactive');
}
});
}
function login(elm) {
elm.addEventListener('click', (e) => {
elm.classList.toggle('goback');
process.nextTick(() => {
if (elm.classList.contains('goback')) {
elm.innerText = 'Go back';
} else {
elm.innerText = 'Log In';
}
});
});
}
function setDarkMode() {
document.documentElement.classList.toggle('dark-mode', config.get('darkMode'));
}
function init() {
backButton();
setDarkMode();
// Prevent flash of white on startup when in dark mode
// TODO: Find solution to this with pure css
if (config.get('darkMode')) {
document.documentElement.style.backgroundColor = '#192633';
}
}
document.addEventListener('DOMContentLoaded', (event) => {
// enable OS specific styles
document.documentElement.classList.add(`os-${process.platform}`);
elementReady(selectors.root).then(init);
elementReady(selectors.loginButton).then(login);
});