WebExtension as alternative to Chromecast
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
2.4 KiB

7 years ago
  1. console.log("muffcast client v0.1");
  2. var muffcastUrl = "http://localhost:8128";
  3. browser.storage.local.get("muffcast").then(function(result) {
  4. muffcastUrl = result.muffcast && result.muffcast.url || muffcastUrl;
  5. })
  6. var sendServer = function(message) {
  7. return new Promise(function(resolve, reject) {
  8. var xhttp = new XMLHttpRequest();
  9. xhttp.open("POST", muffcastUrl, true);
  10. xhttp.addEventListener("load", function() {
  11. if (this.readyState == 4) {
  12. if (this.status == 200) {
  13. var response = this.responseText ? JSON.parse(this.responseText) : false;
  14. resolve(response);
  15. } else {
  16. reject({
  17. status: this.status,
  18. error: this.statusText,
  19. body: this.responseText
  20. });
  21. }
  22. }
  23. });
  24. xhttp.setRequestHeader("content-type", "application/json");
  25. xhttp.send(JSON.stringify(message));
  26. })
  27. }
  28. var clientUpdate = function() {
  29. browser.tabs.query({
  30. currentWindow: true,
  31. active: true
  32. }).then(function(tabs) {
  33. var tab = tabs[0];
  34. browser.tabs.sendMessage(
  35. tab.id, {
  36. command: "update"
  37. }
  38. );
  39. });
  40. }
  41. var injectCss = function(tabId) {
  42. browser.tabs.insertCSS(tabId, {
  43. code: "@font-face { font-family: 'FontAwesome';" +
  44. "src: url('" + browser.extension.getURL("fonts/fontawesome.eot") + "?v=4.7.0');" +
  45. "src: url('" + browser.extension.getURL("fonts/fontawesome.eot") + "?#iefix&v=4.7.0') format('embedded-opentype')," +
  46. "url('" + browser.extension.getURL("fonts/fontawesome.woff2") + "?v=4.7.0') format('woff2')," +
  47. "url('" + browser.extension.getURL("fonts/fontawesome.woff") + "?v=4.7.0') format('woff')," +
  48. "url('" + browser.extension.getURL("fonts/fontawesome.ttf") + "?v=4.7.0') format('truetype')," +
  49. "url('" + browser.extension.getURL("fonts/fontawesome.svg") + "?v=4.7.0#fontawesomeregular') format('svg');" +
  50. "font - weight: normal;" +
  51. "font - style: normal;}"
  52. });
  53. browser.tabs.insertCSS(tabId, {
  54. file: "css/font-awesome.css"
  55. });
  56. browser.tabs.insertCSS(tabId, {
  57. file: "css/overlay.css"
  58. });
  59. }
  60. browser.tabs.onActivated.addListener(function(tab) {
  61. injectCss(tab.id);
  62. clientUpdate();
  63. });
  64. browser.tabs.onUpdated.addListener(function(tabId, changeInfo) {
  65. injectCss(tabId);
  66. if (changeInfo.status === "complete") {
  67. clientUpdate();
  68. }
  69. });
  70. browser.runtime.onMessage.addListener(function(message) {
  71. console.log("send", message);
  72. sendServer(message).then(function(response) {
  73. console.log("response", response);
  74. if (message.command == "load") {
  75. clientUpdate();
  76. }
  77. })
  78. })