content.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352
  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. setExtensionStorgeDataForIframe,
  44. sendLoginSuccessToAllIframe,
  45. sendIframeLoginToBackground,
  46. openUrlInNewWindow,
  47. sendAllFacebookShareSuccess,
  48. sendUserSettingMessageToAllIframe,
  49. doTaskIframeTwitterAPI
  50. } from "@/logic/content/twitter.js";
  51. import denet from '@/denet'
  52. import { httpBackToContentCallBack } from '@/uilts/chromeExtension.js'
  53. import {
  54. hideNFTGroupList,
  55. setNFTGroupContent,
  56. setJoinedGroupIframeStyle
  57. } from '@/logic/content/nft';
  58. import {
  59. initFacebookContent
  60. } from "@/logic/content/facebook.js"
  61. import { toolBox, toolbox_fixed_tweetId } from '@/logic/content/ToolBox.js'
  62. import {
  63. injectDenet
  64. } from "@/logic/content/denet.js";
  65. import doTask from '@/logic/content/help/doTask'
  66. import getData from '@/logic/content/help/getData'
  67. import chromeMessageCenter from '@/uilts/messageCenter/chrome';
  68. chrome.storage.onChanged.addListener(changes => {
  69. initExecuteScript(changes)
  70. })
  71. window.onload = () => {
  72. injectDenet();
  73. init();
  74. initFacebookContent();
  75. chrome.runtime.sendMessage({
  76. actionType: "CONTENT_WINDOW_LOADED_SET_POPUP_PAGE",
  77. data: {}
  78. });
  79. };
  80. const oldOnMessageMethod = (res) => {
  81. switch (res.data.actionType) {
  82. case "IFRAME_SHOW_IFREME":
  83. showIframeHandler();
  84. break;
  85. case "IFRAME_HIDE_IFREME":
  86. hideIframeHandler();
  87. break;
  88. case "IFRAME_SHOW_TWITTER_PUBLISH_DIALOG":
  89. showTwitterPublishDialogHandler(res.data.publishRes);
  90. break;
  91. case "IFRAME_RED_PACKET_SHOW_BIND_TWEET_NOTICE":
  92. noticeBindTweet(res.data.data || {});
  93. break;
  94. case "IFRAME_CLOSE_BIND_TWEET":
  95. hideNoticeBindTweet();
  96. break;
  97. case "IFRAME_RED_PACKET_GET_TWEET_AUTHOR":
  98. getTweetAuthorByDom(res.data.data || {});
  99. break;
  100. case "IFRAME_RED_PACKET_CHECK_FACEBOOK_REPLY":
  101. facebookReplyTweet(res.data.data || {});
  102. break;
  103. case "IFRAME_RED_PACKET_ON_TWEET_REPLY_CLICK":
  104. onTweetReplyClick(res.data.data || {});
  105. break;
  106. // case 'IFRAME_TWITTER_API_DO_TASK':
  107. // doTaskTwitterAPI(res.data)
  108. // break
  109. // case "IFRAME_DO_TASK":
  110. // findTweetByIdDoTask(res.data.task_data, res.data.task_type)
  111. // break
  112. case 'IFREME_TAB_GROUP_SET_IFRAME_HEIGHT':
  113. setTabGroupIframeStyle(res.data.data);
  114. break
  115. case 'IFREME_TAB_GROUP_CONTENT_GET_NAV_TOP':
  116. getTweetProfileNavTop(res.data.data);
  117. break;
  118. case 'IFRAME_PAGE_JUMP':
  119. pageJumpHandler(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. case 'IFRAME_DO_TASK_FOLLOWS':
  152. doTask.TwitterFollowAPI({ info, data })
  153. break
  154. case 'IFRAME_GET_TWITTER_USER_INFO':
  155. getData.TwitterApiGetUserInfoByName({ info, data })
  156. break
  157. case 'IFRAME_TWITTER_API_DO_TASK':
  158. console.log('IFRAME_TWITTER_API_DO_TASK...',res.data)
  159. doTaskTwitterAPI(res.data)
  160. break
  161. case 'IFRAME_API_GET_TWEET_USER_INFO_REQ':
  162. // 从runtime 迁移
  163. TwitterApiUserByScreenName(res.data)
  164. break;
  165. case "POPUP_LOGIN":
  166. // iframe请求登录,通过content转发至 background
  167. sendIframeLoginToBackground();
  168. break
  169. case 'OPEN_URL_IN_NEW_WINDOW':
  170. openUrlInNewWindow({info, data})
  171. break
  172. case 'IFRAME_SET_EXTENSION_STORGE_DATA':
  173. setExtensionStorgeDataForIframe(res.data);
  174. break;
  175. case 'IFRAME_GET_EXTENSION_STORGE_DATA':
  176. getExtensionStorgeDataForIframe(res.data);
  177. break;
  178. case "IFRAME_RED_PACKET_REPLY_CLICK":
  179. replyHandle(res.data);
  180. break;
  181. }
  182. }
  183. window.onmessage = (res) => {
  184. if (!res.data) {
  185. return
  186. }
  187. if (res.data.actionType) {
  188. oldOnMessageMethod(res)
  189. } else if (res.data.info) {
  190. newOnMessageMethod(res)
  191. }
  192. }
  193. const oldRuntimeOnMessageMethod = (req, sender, sendResponse) => {
  194. switch (req.actionType) {
  195. case 'BG_SHOW_PIN_TIPS':
  196. showPinTips()
  197. break
  198. case "BACK_TWITTER_LOGIN_SUCCESS":
  199. showGiveDialogHandler();
  200. break
  201. case 'BACK_TWITTER_SHORT_URL':
  202. changeQueueNum(1)
  203. break
  204. case 'IFRAME_TWITTER_API_DO_TASK':
  205. doTaskTwitterAPI(req)
  206. break
  207. case 'IFRAME_NFT_SHOW_SALE':
  208. showNFTSale()
  209. break
  210. case 'IFRAME_NFT_GROUP_LIST_HIDE':
  211. hideNFTGroupList()
  212. break;
  213. case 'IFRAME_NFT_GROUP_SET_CONTENT':
  214. setNFTGroupContent(req.publishRes);
  215. break;
  216. case "IFRAME_TWITTER_PUBLISH":
  217. twitterPublishHandler(req.publishRes);
  218. break;
  219. case 'IFRAME_TWITTER_SHOW_POPUP_PAGE':
  220. let { from = '', showJoinGroupFinish } = req.data || {};
  221. showPopupPage({ path: '/NFT', from, showJoinGroupFinish });
  222. break
  223. case "IFRAME_TWITTER_SHOW_BUY_NFT":
  224. showBuyNFT(req.data)
  225. break
  226. case 'IFRAME_TWITTER_HIDE_BUY_NFT':
  227. hideBuyNFT()
  228. break
  229. case 'BG_SET_POPUP_CONFIG':
  230. setPopupConfByPopupPage();
  231. break
  232. // case 'IFREME_TAB_GROUP_SET_IFRAME_HEIGHT':
  233. // setTabGroupIframeStyle(req.data);
  234. // break
  235. // case 'IFREME_TAB_GROUP_CONTENT_GET_NAV_TOP':
  236. // getTweetProfileNavTop(req.data);
  237. case 'IFRAME_PAGE_JUMP':
  238. pageJumpHandler(req.data);
  239. break;
  240. case 'BG_LOGIN_SET_USERINFO_CB':
  241. loginSuccessHandle();
  242. break;
  243. case 'IFRAME_SHOW_JOIN_DIALOG':
  244. showJoinDialog(req.data)
  245. break
  246. case 'IFRAME_SHOW_GROUP_TIP':
  247. showGroupTip()
  248. break
  249. case 'IFRAME_SHOW_POST_DIALOG':
  250. showTwitterPost(req.data)
  251. break
  252. case 'BACK_TWITTER_NFT_POST_PRE':
  253. setTwitterTextarea(req.data)
  254. break
  255. case 'SWITCH_GROUP_STATUS':
  256. groupTipsSelectGroupTab(req.data);
  257. return sendResponse('ok')
  258. case 'IFRAME_GROUP_BANNER_GROUP_INFO':
  259. setGroupInfo(req.data)
  260. break;
  261. case 'IFRAME_JOINED_GROUP_SET_STYLE':
  262. setJoinedGroupIframeStyle(req.data)
  263. break
  264. case 'BACK_NFT_PUBLISH_DONE':
  265. refreshTabGroup()
  266. break
  267. case 'IFRAME_API_GET_TWEET_USER_INFO_REQ':
  268. TwitterApiUserByScreenName(req.data)
  269. break;
  270. // 回掉参数
  271. case 'HTTP_BACK_TO_CONTENT':
  272. httpBackToContentCallBack(req)
  273. break
  274. case 'BG_SHOW_DENET_PUBLISH_DIALOG':
  275. showPublishDialog();
  276. break;
  277. case 'Get_ToolBox_Fixed_TweetId':
  278. return sendResponse(toolbox_fixed_tweetId)
  279. case 'Set_ToolBox_Fixed':
  280. toolBox.switchStatus(req)
  281. break
  282. case 'Set_ToolBox_By_Nft':
  283. toolBox.buyNft(req)
  284. break;
  285. case 'Hide_ToolBox_By_Nft':
  286. toolBox.hideBuyNft(req)
  287. break;
  288. case 'IFRAME_API_GET_TWEET_USER_FOLLOW_STATUS':
  289. getTweetUserFollowStatus(req);
  290. break;
  291. case 'GET_CONTENT_BY_TWITTER_ID':
  292. sendContentByTwitterID(req.data.tweet_Id)
  293. break
  294. case 'BACK_DISCORD_LOGIN_SUCCESS':
  295. sendLoginSuccessToAllIframe()
  296. break
  297. case 'TEST':
  298. console.log('TEST')
  299. break
  300. case 'BG_FACEBOOK_SHARE_SUCCESS_BG':
  301. sendAllFacebookShareSuccess(req.data)
  302. break
  303. case 'USER_SETTING_CONTENT':
  304. sendUserSettingMessageToAllIframe(req.data)
  305. break
  306. }
  307. }
  308. const newRuntimeOnMessageMethod = (req, sender, sendResponse) => {
  309. }
  310. chrome.runtime.onMessage.addListener((req, sender, sendResponse) => {
  311. if (req.actionType) {
  312. oldRuntimeOnMessageMethod(req, sender, sendResponse)
  313. } else if (req.info) {
  314. newRuntimeOnMessageMethod(req, sender, sendResponse)
  315. chromeMessageCenter.init(req)
  316. }
  317. sendResponse && sendResponse('ok');
  318. })
  319. // --- test ---
  320. // async function funcTest() {
  321. // let res = await denet.chrome.content.test({ tweetId: 22 })
  322. // console.log('test sendmessage', res)
  323. // }
  324. // setTimeout(() => {
  325. // funcTest()
  326. // }, 3000);