popup.vue 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <template>
  2. <iframe class="iframe" :id="iframeId" :src="iframeSrc"></iframe>
  3. </template>
  4. <script setup>
  5. import { ref, onBeforeMount, onMounted, inject } from "vue";
  6. import { iframeHost } from '@/http/configAPI';
  7. import { getInnerIframeURL } from '@/uilts/help';
  8. import messageCenter from '@/uilts/messageCenter/iframe';
  9. import MESSAGE_ENUM from "@/uilts/messageCenter/iframe/messageEnum";
  10. import { setBadgeInfo, hideBadge } from "@/logic/background/twitter";
  11. import { getExtensionStorgeDataForIframe } from "@/logic/content/twitter.js";
  12. let iframeId = ref('de-nav-wallet-index-page');
  13. let iframeSrc = ref('');
  14. let showMenu = inject('showMenu');
  15. let withdraw_info = inject('withdraw_info');
  16. onBeforeMount(() => {
  17. iframeSrc.value = getInnerIframeURL(`${iframeHost}/nav-wallet-index` + `?iframeID=${iframeId.value}`)
  18. })
  19. onMounted(() => {
  20. onMessage()
  21. })
  22. window.onmessage = (res) => {
  23. if (res.data && res.data.info.actionType) {
  24. let data = res.data.data;
  25. switch (res.data.info.actionType) {
  26. case MESSAGE_ENUM.IFRAME_GET_EXTENSION_STORGE_DATA:
  27. getExtensionStorgeDataForIframe(res.data)
  28. break;
  29. case MESSAGE_ENUM.IFRAME_SHOW_FOOTER_MENU:
  30. showMenu.value = data.showMenu
  31. break;
  32. case MESSAGE_ENUM.IFRAME_MESSAGE_PAGE_SETBADGEINFO:
  33. setBadgeInfo({ data: data });
  34. break;
  35. case MESSAGE_ENUM.IFRAME_MESSAGE_PAGE_HIDEBADGE:
  36. hideBadge();
  37. break;
  38. case MESSAGE_ENUM.IFRAME_RUNTIME_CONNECT_POPUP:
  39. chrome.runtime.connect({ name: "popup_transactions" });
  40. }
  41. }
  42. };
  43. const onMessage = () => {
  44. chrome.runtime.onMessage.addListener((req) => {
  45. switch (req.actionType) {
  46. case MESSAGE_ENUM.CONTENT_POPUP_PAGE_SHOW:
  47. messageCenter.send(iframeId.value, MESSAGE_ENUM.CONTENT_POPUP_PAGE_SHOW, req);
  48. break;
  49. }
  50. })
  51. }
  52. </script>
  53. <style scoped lang="scss">
  54. .iframe {
  55. width: 100%;
  56. height: 100%;
  57. border: 0;
  58. }
  59. </style>