-
Notifications
You must be signed in to change notification settings - Fork 1
/
background.js
53 lines (48 loc) · 1.47 KB
/
background.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
const RESTREAM_STUDIO_URL = 'https://studio.restream.io/';
chrome.runtime.onMessage.addListener((request) => {
if (request.action === "update-status") {
updateExtensionStatus(request.icon, request.status)
} else {
throw new Error(`Unsupported action: ${request.action}`);
}
});
chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
const { status } = changeInfo;
if (status == 'complete') {
// Restream Studio opened in a new tab
if (tab.url.startsWith(RESTREAM_STUDIO_URL)) {
updateExtensionStatus('default', 'Starting...');
}
} else if (status === 'unloaded') {
// Restrean Studio tab unloaded
checkForRemainingTabsAndUpdateStatus();
}
});
// Handle closed tabs
chrome.tabs.onRemoved.addListener(() => {
checkForRemainingTabsAndUpdateStatus();
});
/**
* Checks if Restream Studio is still open and update status accordinlgy
*/
function checkForRemainingTabsAndUpdateStatus() {
chrome.tabs.query(
{ url: RESTREAM_STUDIO_URL +'*' },
(tabs) => {
if (tabs.length === 0) {
updateExtensionStatus('default', 'Inactive: Restream Studio is not open.');
}
}
);
}
function updateExtensionStatus(icon, status) {
chrome.action.setTitle({
title: `Restream Studio Streamdeck - ${status}`
});
chrome.action.setIcon({ path: {
'16': `/icons/${icon}/icon16.png`,
'32': `/icons/${icon}/icon32.png`,
'48': `/icons/${icon}/icon48.png`,
'128': `/icons/${icon}/icon128.png`
}});
}