Skip to content

Commit b296504

Browse files
committed
Version 0.0.2
1 parent bc8ed2c commit b296504

File tree

7 files changed

+453
-0
lines changed

7 files changed

+453
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
src/*.zip
2+
*.zip

src/images/logo.png

2.61 KB
Loading

src/images/logo_header.png

25.6 KB
Loading

src/manifest.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"manifest_version": 2,
3+
"name": "Lighthouse Report Generator",
4+
"version": "0.0.2",
5+
"description": "Generates a Lighthouse Report and without needing to use Chrome",
6+
"icons": {
7+
"128": "images/logo.png"
8+
},
9+
"permissions": ["activeTab", "storage"],
10+
"browser_action": {
11+
"default_icon": {
12+
"38": "images/logo.png"
13+
},
14+
"default_title": "Lighthouse",
15+
"default_popup": "popup.html",
16+
"browser_style": true
17+
}
18+
}

src/popup.html

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta charset="utf-8" />
5+
<title>Lighthouse Report Generator</title>
6+
<link rel="stylesheet" href="styles/lighthouse.css" />
7+
</head>
8+
<body>
9+
<header class="header">
10+
<img
11+
src="images/logo_header.png"
12+
class="header__icon"
13+
width="100"
14+
height="100"
15+
alt="Lighthouse Logo"
16+
/>
17+
<div class="header-title__container">
18+
<h1 class="header-title__item">Lighthouse</h1>
19+
</div>
20+
</header>
21+
22+
<div class="feedback__container">
23+
<span class="error" id="error_message" hidden></span>
24+
<span class="success" id="success_message" hidden></span>
25+
</div>
26+
27+
<div class="content">
28+
<div class="content__button ld-ext-right" id="generate_report">
29+
<span id="button_text">Generate Report</span>
30+
<div class="ld ld-ring ld-spin"></div>
31+
</div>
32+
</div>
33+
<script src="scripts/makeRequest.js"></script>
34+
</body>
35+
</html>

src/scripts/makeRequest.js

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
const setLoader = state => {
2+
if (state) {
3+
document
4+
.getElementsByClassName('content__button')[0]
5+
.classList.add('running');
6+
} else {
7+
document
8+
.getElementsByClassName('content__button')[0]
9+
.classList.remove('running');
10+
}
11+
};
12+
13+
const setError = message => {
14+
if (message) {
15+
document.getElementById('error_message').innerText = message;
16+
document.getElementById('error_message').hidden = false;
17+
setSuccess();
18+
} else {
19+
document.getElementById('error_message').hidden = true;
20+
}
21+
};
22+
23+
const setSuccess = message => {
24+
if (message) {
25+
document.getElementById('success_message').innerText = message;
26+
document.getElementById('success_message').hidden = false;
27+
setError();
28+
} else {
29+
document.getElementById('success_message').hidden = true;
30+
}
31+
};
32+
33+
const setButtonText = text => {
34+
if (text) {
35+
document.getElementById('button_text').innerText = text;
36+
document.getElementById('generate_report').classList.add('disabled');
37+
} else {
38+
document.getElementById('button_text').innerText = 'Generate Report';
39+
document.getElementById('generate_report').classList.remove('disabled');
40+
}
41+
};
42+
43+
const generateReport = () => {
44+
if (
45+
document.getElementById('generate_report').classList.contains('disabled') ||
46+
document.getElementById('generate_report').classList.contains('successful')
47+
) {
48+
return;
49+
}
50+
setLoader(true);
51+
setButtonText('Verifying Start Conditions');
52+
setSuccess();
53+
setError();
54+
browser.tabs.query({ currentWindow: true }, tabs => {
55+
const currentTab = tabs.filter(tab => tab.active)[0];
56+
if (
57+
/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/.test(
58+
currentTab.url
59+
)
60+
) {
61+
setTimeout(() => {
62+
setButtonText('Generating Report');
63+
}, 1000);
64+
let request = {
65+
url: currentTab.url,
66+
replace: true,
67+
save: true,
68+
};
69+
fetch('https://lighthouse-dot-webdotdevsite.appspot.com/lh/newaudit', {
70+
method: 'POST',
71+
headers: {
72+
'Content-Type': 'application/json',
73+
'Content-Length': 64,
74+
},
75+
body: JSON.stringify(request),
76+
})
77+
.then(response => {
78+
if (response.status === 201) {
79+
setSuccess('Successfully ran Lighthouse. Opening Report...');
80+
setButtonText('Opening Report');
81+
setTimeout(() => {
82+
setButtonText('Report Generated');
83+
setLoader(false);
84+
document
85+
.getElementById('generate_report')
86+
.classList.add('successful');
87+
browser.tabs.create(
88+
{
89+
active: true,
90+
url: `https://lighthouse-dot-webdotdevsite.appspot.com/lh/html?url=${
91+
currentTab.url
92+
}`,
93+
},
94+
() => {
95+
setTimeout(() => {
96+
window.close();
97+
}, 3000);
98+
}
99+
);
100+
}, 500);
101+
} else {
102+
return response.json();
103+
}
104+
})
105+
.then(res => {
106+
if (res) {
107+
console.log(res);
108+
setLoader(false);
109+
setButtonText();
110+
setError('There was an error in getting data from Google...');
111+
}
112+
})
113+
.catch(e => {
114+
console.log(e);
115+
setLoader(false);
116+
setButtonText();
117+
setError('There was an error in getting data from Google');
118+
});
119+
} else {
120+
setTimeout(() => {
121+
setLoader(false);
122+
setButtonText();
123+
setError(`That's not a valid URL to run Lighthouse on`);
124+
}, 1000);
125+
}
126+
});
127+
};
128+
129+
document
130+
.getElementById('generate_report')
131+
.addEventListener('click', generateReport);

0 commit comments

Comments
 (0)