embed.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /* global chrome, Popup */
  2. // Fill i18n in HTML
  3. window.onload = () => {
  4. Popup.fill(document.body, (m) => {
  5. return chrome.i18n.getMessage(m);
  6. });
  7. };
  8. const port = chrome.runtime.connect({
  9. name: "popup"
  10. });
  11. port.onMessage.addListener((m) => {
  12. const { active, enabled, total, missingFeature } = m;
  13. const popup = new Popup();
  14. if (missingFeature) {
  15. popup.setEnabled(false);
  16. popup.setActive(false);
  17. popup.setStatusText(chrome.i18n.getMessage('popupStatusOff'));
  18. popup.setStatusDesc(chrome.i18n.getMessage(missingFeature), true);
  19. popup.hideButton();
  20. return;
  21. }
  22. const clients = active ? 1 : 0;
  23. if (enabled) {
  24. popup.setChecked(true);
  25. if (clients > 0) {
  26. popup.setStatusText(chrome.i18n.getMessage('popupStatusOn', String(clients)));
  27. } else {
  28. popup.setStatusText(chrome.i18n.getMessage('popupStatusReady'));
  29. }
  30. popup.setStatusDesc((total > 0) ? chrome.i18n.getMessage('popupDescOn', String(total)) : '');
  31. } else {
  32. popup.setChecked(false);
  33. popup.setStatusText(chrome.i18n.getMessage('popupStatusOff'));
  34. popup.setStatusDesc("");
  35. }
  36. popup.setEnabled(enabled);
  37. popup.setActive(active);
  38. });
  39. document.addEventListener('change', (event) => {
  40. port.postMessage({ enabled: event.target.checked });
  41. })