snowflake/proxy/webext/embed.js

49 lines
1.3 KiB
JavaScript
Raw Normal View History

2019-07-14 09:41:51 +02:00
/* global chrome, Popup */
2019-08-14 13:45:15 -04:00
// Fill i18n in HTML
window.onload = () => {
Popup.fill(document.body, (m) => {
return chrome.i18n.getMessage(m);
});
};
2019-05-29 21:27:05 -04:00
const port = chrome.runtime.connect({
2019-07-02 09:56:47 -04:00
name: "popup"
2019-05-29 21:27:05 -04:00
});
port.onMessage.addListener((m) => {
2019-07-05 07:22:20 +02:00
const { active, enabled, total, missingFeature } = m;
const popup = new Popup();
if (missingFeature) {
popup.setEnabled(false);
popup.setActive(false);
2019-08-14 13:45:15 -04:00
popup.setStatusText(chrome.i18n.getMessage('popupStatusOff'));
popup.setStatusDesc(chrome.i18n.getMessage(missingFeature), true);
2019-07-05 07:22:20 +02:00
popup.hideButton();
return;
}
2019-07-05 07:22:20 +02:00
2019-07-02 09:56:47 -04:00
const clients = active ? 1 : 0;
2019-07-05 07:22:20 +02:00
2019-07-02 09:56:47 -04:00
if (enabled) {
2019-07-05 07:22:20 +02:00
popup.setChecked(true);
2019-08-14 13:45:15 -04:00
if (clients > 0) {
popup.setStatusText(chrome.i18n.getMessage('popupStatusOn', String(clients)));
} else {
popup.setStatusText(chrome.i18n.getMessage('popupStatusReady'));
}
popup.setStatusDesc((total > 0) ? chrome.i18n.getMessage('popupDescOn', String(total)) : '');
2019-07-02 09:56:47 -04:00
} else {
2019-07-05 07:22:20 +02:00
popup.setChecked(false);
2019-08-14 13:45:15 -04:00
popup.setStatusText(chrome.i18n.getMessage('popupStatusOff'));
2019-07-05 07:22:20 +02:00
popup.setStatusDesc("");
2019-07-02 09:56:47 -04:00
}
popup.setEnabled(enabled);
popup.setActive(active);
2019-05-29 21:27:05 -04:00
});
document.addEventListener('change', (event) => {
2019-07-05 07:22:20 +02:00
port.postMessage({ enabled: event.target.checked });
})