content.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. /* eslint-disable */
  2. let deBtn = document.createElement('span');
  3. const shadowRoot = deBtn.attachShadow({mode: 'closed'})
  4. const shadowDiv = document.createElement('div');
  5. shadowDiv.innerText = 'DeNet';
  6. shadowDiv.id = 'de-btn';
  7. shadowDiv.style.cssText = 'width:220px;height: 52px;text-align:center;line-height:52px;margin-bottom: 4px;margin-top: 4px;background: linear-gradient(274.8deg, #FF9900 -3.69%, #BD00FF 69.71%, #00F0FF 122.65%);color:#fff;font-size:15px;font-weight:700;border-radius:100px;cursor: pointer;';
  8. shadowRoot.appendChild(shadowDiv);
  9. const deBtn1 = document.createElement('div');
  10. const smallDeBtnStyle = 'width:30px;height: 30px;text-align:center;line-height:30px;background: linear-gradient(274.8deg, #FF9900 -3.69%, #BD00FF 69.71%, #00F0FF 122.65%);color:#fff;font-size:12px;font-weight:500;border-radius:4px;cursor: pointer;';
  11. deBtn1.innerText = 'De';
  12. deBtn1.id = 'de-btn1';
  13. deBtn1.style.cssText = smallDeBtnStyle;
  14. const deBtn2 = document.createElement('div');
  15. deBtn2.innerText = 'De';
  16. deBtn2.id = 'de-btn2';
  17. deBtn2.style.cssText = smallDeBtnStyle;
  18. let tweetBtn;
  19. deBtn.addEventListener('click', () => {
  20. showGiveDialog();
  21. })
  22. deBtn1.addEventListener('click', () => {
  23. showGiveDialog();
  24. })
  25. deBtn2.addEventListener('click', () => {
  26. showGiveDialog();
  27. })
  28. document.addEventListener('DOMContentLoaded', function () {
  29. setTimeout(() => {
  30. addDeNetBtn(deBtn);
  31. addIframe();
  32. tweetBtn = document.querySelector('a[data-testid="SideNav_NewTweet_Button"]');
  33. tweetBtn.addEventListener('click', function () {
  34. setTimeout(() => {
  35. let dialogScheduleBtn = getScheduleDom(true);
  36. addDeNetEditBtn(dialogScheduleBtn, deBtn2);
  37. }, 800)
  38. })
  39. }, 1000)
  40. })
  41. window.addEventListener('message', function (event) {
  42. if (event.data && event.data.actionType) {
  43. let iframe = document.getElementById('iframe-test');
  44. switch (event.data.actionType) {
  45. case "showIframe":
  46. iframe.style.display = 'block';
  47. break;
  48. case "hideIframe":
  49. iframe.style.display = 'none';
  50. break;
  51. case "showTwitterPublishDialog":
  52. // iframe.style.display = 'none';
  53. tweetBtn.click();
  54. publishTweetEvent();
  55. break;
  56. }
  57. }
  58. console.log('message',event);
  59. });
  60. function publishTweetEvent () {
  61. let publishTweetBtn = document.querySelector('div[role="dialog"]').querySelector('div[data-testid="tweetButton"]');
  62. publishTweetBtn.addEventListener('click', function () {
  63. setTimeout(() => {
  64. let twitterArtId = getTwitterArtId();
  65. }, 1000)
  66. });
  67. }
  68. function addDeNetEditBtn (parent, dom, isClick = false) {
  69. setTimeout(() => {
  70. if (parent) {
  71. parent.parentNode.insertBefore(dom, parent.nextSibling);
  72. } else {
  73. setTimeout(() => {
  74. parent = getScheduleDom(isClick);
  75. parent.parentNode.insertBefore(dom, parent.nextSibling);
  76. }, 1000)
  77. }
  78. })
  79. }
  80. function addDeNetBtn (dom) {
  81. setTimeout(() => {
  82. let node = document.querySelector('header[role="banner"]').querySelector('.r-1habvwh');
  83. if (node) {
  84. node.appendChild(dom);
  85. }
  86. let dialogScheduleBtn = getScheduleDom(false);
  87. addDeNetEditBtn(dialogScheduleBtn, deBtn1);
  88. }, 1000)
  89. }
  90. function getScheduleDom (isDialogInner = false) {
  91. let scheduleBtn;
  92. if (isDialogInner) {
  93. scheduleBtn = document.querySelector('div[role="dialog"]').querySelector('[data-testid="createPollButton"]');
  94. } else {
  95. // eslint-disable-next-line no-unused-vars
  96. let toolBar = document.querySelector('div[data-testid="toolBar"]');
  97. if (toolBar) {
  98. scheduleBtn = toolBar.querySelector('div[data-testid="createPollButton"]');
  99. }
  100. }
  101. return scheduleBtn;
  102. }
  103. function addIframe () {
  104. // let span = document.createElement('span');
  105. // const shadowRoot = span.attachShadow({mode: 'closed'})
  106. let iframe = document.createElement('iframe');
  107. iframe.src = chrome.runtime.getURL('/iframe/test.html')
  108. iframe.id = 'iframe-test'
  109. iframe.style.cssText = 'position:fixed;top:0px;right:0;display:block; width:100%;height:100%;z-index:0; border: medium none;display:none';
  110. // shadowRoot.appendChild(iframe);
  111. // document.body.appendChild(span)
  112. document.getElementById('layers').appendChild(iframe)
  113. }
  114. function getTwitterArtId () {
  115. let firstTwitterArtId = document.querySelector('article[data-testid="tweet"]').querySelector('a[dir="auto"]').getAttribute('href');
  116. return firstTwitterArtId;
  117. }
  118. function showGiveDialog() {
  119. document.getElementById('iframe-test').contentWindow.postMessage({actionType : 'showGiveDialog'}, '*');
  120. }
  121. function setPublishContent (content) {
  122. setTimeout(() => {
  123. document.execCommand("insertText", false, content);
  124. });
  125. }
  126. /* setInterval(() => {
  127. let toolBar = document.querySelector('div[data-testid="toolBar"]');
  128. let innerDeIcon = document.getElementById('de-icon');
  129. if (toolBar && !innerDeIcon) {
  130. // let dialogScheduleBtn = getScheduleDom(false);
  131. // addDeNetEditBtn(dialogScheduleBtn, deBtn1);
  132. }
  133. }, 800) */