content.js 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. // 此文件不要写具体逻辑,只调用函数
  2. // var port = chrome.runtime.connect({
  3. // name: "hello",
  4. // });
  5. import {
  6. showGiveDialogHandler,
  7. showIframeHandler,
  8. hideIframeHandler,
  9. showTwitterPublishDialogHandler,
  10. twitterPublishHandler,
  11. showPinTips,
  12. init,
  13. initExecuteScript,
  14. changeQueueNum,
  15. replyHandle,
  16. noticeBindTweet,
  17. hideNoticeBindTweet,
  18. getTweetAuthorByDom,
  19. facebookReplyTweet,
  20. doTaskTwitterAPI,
  21. onTweetReplyClick,
  22. showNFTSale,
  23. showBuyNFT,
  24. hideBuyNFT,
  25. showPopupPage,
  26. setPopupConfByPopupPage,
  27. loginSuccessHandle,
  28. showJoinDialog,
  29. showTwitterPost,
  30. setTwitterTextarea,
  31. showGroupTip,
  32. setTabGroupIframeStyle,
  33. pageJumpHandler,
  34. getTweetProfileNavTop,
  35. setGroupInfo,
  36. refreshTabGroup,
  37. groupTipsSelectGroupTab,
  38. TwitterApiUserByScreenName,
  39. showPublishDialog,
  40. getTweetUserFollowStatus,
  41. sendContentByTwitterID,
  42. getExtensionStorgeDataForIframe,
  43. doTaskIframeTwitterAPI
  44. } from "@/logic/content/twitter.js";
  45. import denet from '@/denet'
  46. import { httpBackToContentCallBack } from '@/uilts/chromeExtension.js'
  47. import {
  48. hideNFTGroupList,
  49. setNFTGroupContent,
  50. setJoinedGroupIframeStyle
  51. } from '@/logic/content/nft';
  52. import {
  53. initFacebookContent
  54. } from "@/logic/content/facebook.js"
  55. import { toolBox, toolbox_fixed_tweetId } from '@/logic/content/ToolBox.js'
  56. import {
  57. injectDenet
  58. } from "@/logic/content/denet.js";
  59. import doTask from '@/logic/content/help/doTask'
  60. import chromeMessageCenter from '@/uilts/messageCenter/chrome';
  61. import { re } from "mathjs";
  62. chrome.storage.onChanged.addListener(changes => {
  63. initExecuteScript(changes)
  64. })
  65. window.onload = () => {
  66. injectDenet();
  67. init();
  68. initFacebookContent();
  69. chrome.runtime.sendMessage({
  70. actionType: "CONTENT_WINDOW_LOADED_SET_POPUP_PAGE",
  71. data: {}
  72. });
  73. };
  74. const oldOnMessageMethod = (res) => {
  75. switch (res.data.actionType) {
  76. case "IFRAME_SHOW_IFREME":
  77. showIframeHandler();
  78. break;
  79. case "IFRAME_HIDE_IFREME":
  80. hideIframeHandler();
  81. break;
  82. case "IFRAME_SHOW_TWITTER_PUBLISH_DIALOG":
  83. showTwitterPublishDialogHandler(res.data.publishRes);
  84. break;
  85. case "IFRAME_RED_PACKET_REPLY_CLICK":
  86. replyHandle(res.data.data || {});
  87. break;
  88. case "IFRAME_RED_PACKET_SHOW_BIND_TWEET_NOTICE":
  89. noticeBindTweet(res.data.data || {});
  90. break;
  91. case "IFRAME_CLOSE_BIND_TWEET":
  92. hideNoticeBindTweet();
  93. break;
  94. case "IFRAME_RED_PACKET_GET_TWEET_AUTHOR":
  95. getTweetAuthorByDom(res.data.data || {});
  96. break;
  97. case "IFRAME_RED_PACKET_CHECK_FACEBOOK_REPLY":
  98. facebookReplyTweet(res.data.data || {});
  99. break;
  100. case "IFRAME_RED_PACKET_ON_TWEET_REPLY_CLICK":
  101. onTweetReplyClick(res.data.data || {});
  102. break;
  103. // case 'IFRAME_TWITTER_API_DO_TASK':
  104. // doTaskTwitterAPI(res.data)
  105. // break
  106. // case "IFRAME_DO_TASK":
  107. // findTweetByIdDoTask(res.data.task_data, res.data.task_type)
  108. // break
  109. case 'IFREME_TAB_GROUP_SET_IFRAME_HEIGHT':
  110. setTabGroupIframeStyle(res.data.data);
  111. break
  112. case 'IFREME_TAB_GROUP_CONTENT_GET_NAV_TOP':
  113. getTweetProfileNavTop(res.data.data);
  114. break;
  115. case 'IFRAME_PAGE_JUMP':
  116. pageJumpHandler(res.data.data);
  117. break;
  118. case 'IFRAME_GET_EXTENSION_STORGE_DATA':
  119. getExtensionStorgeDataForIframe(res.data.data);
  120. break;
  121. case 'IFRAME_API_GET_TWEET_USER_FOLLOW_STATUS':
  122. getTweetUserFollowStatus(res.data);
  123. break;
  124. case 'IFRAME_TWITTER_API_DO_TASK':
  125. doTaskIframeTwitterAPI(res.data);
  126. break;
  127. case 'IFRAME_API_GET_TWEET_USER_INFO_START':
  128. let data = JSON.parse(res.data.data);
  129. TwitterApiUserByScreenName({
  130. iframeId: res.data.iframeId,
  131. ...data
  132. })
  133. break;
  134. case 'GET_CONTENT_BY_TWITTER_ID':
  135. sendContentByTwitterID(res.data)
  136. break
  137. }
  138. }
  139. const newOnMessageMethod = (res) => {
  140. let { info = {}, data = {} } = res.data
  141. switch (info.actionType) {
  142. case 'IFRAME_DO_TASK_CREATE_TWEET':
  143. doTask.TwitterApiCreateTweet({ info, data })
  144. break
  145. case 'IFRAME_DO_TASK_LIKE':
  146. doTask.TwitterLikeAPI({ info, data })
  147. break
  148. case 'IFRAME_DO_TASK_RETWEET':
  149. doTask.TwitterRetweetAPI({ info, data })
  150. break
  151. }
  152. }
  153. window.onmessage = (res) => {
  154. if (!res.data) {
  155. return
  156. }
  157. if (res.data.actionType) {
  158. oldOnMessageMethod(res)
  159. } else if (res.data.info) {
  160. newOnMessageMethod(res)
  161. }
  162. }
  163. const oldRuntimeOnMessageMethod = (req, sender, sendResponse) => {
  164. switch (req.actionType) {
  165. case 'BG_SHOW_PIN_TIPS':
  166. showPinTips()
  167. break
  168. case "BACK_TWITTER_LOGIN_SUCCESS":
  169. showGiveDialogHandler();
  170. break
  171. case 'BACK_TWITTER_SHORT_URL':
  172. changeQueueNum(1)
  173. break
  174. case 'IFRAME_TWITTER_API_DO_TASK':
  175. doTaskTwitterAPI(req)
  176. break
  177. case 'IFRAME_NFT_SHOW_SALE':
  178. showNFTSale()
  179. break
  180. case 'IFRAME_NFT_GROUP_LIST_HIDE':
  181. hideNFTGroupList()
  182. break;
  183. case 'IFRAME_NFT_GROUP_SET_CONTENT':
  184. setNFTGroupContent(req.publishRes);
  185. break;
  186. case "IFRAME_TWITTER_PUBLISH":
  187. twitterPublishHandler(req.publishRes);
  188. break;
  189. case 'IFRAME_TWITTER_SHOW_POPUP_PAGE':
  190. let { from = '', showJoinGroupFinish } = req.data || {};
  191. showPopupPage({ path: '/NFT', from, showJoinGroupFinish });
  192. break
  193. case "IFRAME_TWITTER_SHOW_BUY_NFT":
  194. showBuyNFT(req.data)
  195. break
  196. case 'IFRAME_TWITTER_HIDE_BUY_NFT':
  197. hideBuyNFT()
  198. break
  199. case 'BG_SET_POPUP_CONFIG':
  200. setPopupConfByPopupPage();
  201. break
  202. // case 'IFREME_TAB_GROUP_SET_IFRAME_HEIGHT':
  203. // setTabGroupIframeStyle(req.data);
  204. // break
  205. // case 'IFREME_TAB_GROUP_CONTENT_GET_NAV_TOP':
  206. // getTweetProfileNavTop(req.data);
  207. case 'IFRAME_PAGE_JUMP':
  208. pageJumpHandler(req.data);
  209. break;
  210. case 'BG_LOGIN_SET_USERINFO_CB':
  211. loginSuccessHandle();
  212. break;
  213. case 'IFRAME_SHOW_JOIN_DIALOG':
  214. showJoinDialog(req.data)
  215. break
  216. case 'IFRAME_SHOW_GROUP_TIP':
  217. showGroupTip()
  218. break
  219. case 'IFRAME_SHOW_POST_DIALOG':
  220. showTwitterPost(req.data)
  221. break
  222. case 'BACK_TWITTER_NFT_POST_PRE':
  223. setTwitterTextarea(req.data)
  224. break
  225. case 'SWITCH_GROUP_STATUS':
  226. groupTipsSelectGroupTab(req.data);
  227. return sendResponse('ok')
  228. case 'IFRAME_GROUP_BANNER_GROUP_INFO':
  229. setGroupInfo(req.data)
  230. break;
  231. case 'IFRAME_JOINED_GROUP_SET_STYLE':
  232. setJoinedGroupIframeStyle(req.data)
  233. break
  234. case 'BACK_NFT_PUBLISH_DONE':
  235. refreshTabGroup()
  236. break
  237. case 'IFRAME_API_GET_TWEET_USER_INFO_REQ':
  238. TwitterApiUserByScreenName(req.data)
  239. break;
  240. // 回掉参数
  241. case 'HTTP_BACK_TO_CONTENT':
  242. httpBackToContentCallBack(req)
  243. break
  244. case 'BG_SHOW_DENET_PUBLISH_DIALOG':
  245. showPublishDialog();
  246. break;
  247. case 'Get_ToolBox_Fixed_TweetId':
  248. return sendResponse(toolbox_fixed_tweetId)
  249. case 'Set_ToolBox_Fixed':
  250. toolBox.switchStatus(req)
  251. break
  252. case 'Set_ToolBox_By_Nft':
  253. toolBox.buyNft(req)
  254. break;
  255. case 'Hide_ToolBox_By_Nft':
  256. toolBox.hideBuyNft(req)
  257. break;
  258. case 'IFRAME_API_GET_TWEET_USER_FOLLOW_STATUS':
  259. getTweetUserFollowStatus(req);
  260. break;
  261. case 'GET_CONTENT_BY_TWITTER_ID':
  262. sendContentByTwitterID(req.data.tweet_Id)
  263. break
  264. case 'TEST':
  265. console.log('TEST')
  266. break
  267. }
  268. }
  269. const newRuntimeOnMessageMethod = (req, sender, sendResponse) => {
  270. }
  271. chrome.runtime.onMessage.addListener((req, sender, sendResponse) => {
  272. if (req.actionType) {
  273. oldRuntimeOnMessageMethod(req, sender, sendResponse)
  274. } else if (req.info) {
  275. newRuntimeOnMessageMethod(req, sender, sendResponse)
  276. chromeMessageCenter.init(req)
  277. }
  278. sendResponse && sendResponse('ok');
  279. })
  280. // --- test ---
  281. // async function funcTest() {
  282. // let res = await denet.chrome.content.test({ tweetId: 22 })
  283. // console.log('test sendmessage', res)
  284. // }
  285. // setTimeout(() => {
  286. // funcTest()
  287. // }, 3000);