background.js 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. // 此文件不要写具体逻辑,只调用函数
  2. import {
  3. twitterShortUrl,
  4. twitterPinLoginToken,
  5. twitterPinLoginCode,
  6. onInstalledMid,
  7. onInstalledUserSet,
  8. onInstalledCreateTab,
  9. checkPined,
  10. popupRePublish,
  11. setBadgeInfo,
  12. hideBadge,
  13. setMessageCount,
  14. discordLoginCode,
  15. saveDiscordAuthWindowId,
  16. onDisconnectHandler,
  17. getMessageInfo,
  18. injectExtensionPopup,
  19. setPopupConfig,
  20. setActionPopup,
  21. getTwitterNftPostPre,
  22. nftTxtPublish,
  23. getSysMessage,
  24. checkShowPublishDialog
  25. } from "@/logic/background/twitter";
  26. import Report from "@/log-center/log"
  27. import { PingPong, httpNetWork, httpContentToBack } from "@/logic/background/help";
  28. import { appVersionCode } from '@/http/configAPI.js'
  29. import { getChromeStorage, setChromeStorage } from '@/uilts/chromeExtension.js'
  30. import {
  31. facebookShareSuccess
  32. } from "@/logic/background/facebook";
  33. import {
  34. closeAchPayNoticeHandler
  35. } from "@/logic/background/denet";
  36. try {
  37. //加载bg.js 执行
  38. setMessageCount();
  39. // 消息通讯
  40. chrome.runtime.onConnect.addListener(function (port) {
  41. port.onDisconnect.addListener(function () {
  42. onDisconnectHandler(port);
  43. });
  44. });
  45. // 当有可用更新时触发
  46. chrome.runtime.onUpdateAvailable.addListener(() => {
  47. try {
  48. setChromeStorage({ onUpdateAvailable: JSON.stringify({ onUpdateAvailable: '1' }) }, () => {
  49. chrome.runtime.reload()
  50. })
  51. } catch (error) {
  52. Report.reportLog({
  53. objectType: Report.objectType.background_function_catch,
  54. funcName: 'onUpdateAvailable',
  55. errMsg: error.message
  56. });
  57. }
  58. })
  59. chrome.runtime.onInstalled.addListener(onInstalledMethod);
  60. chrome.runtime.onMessage.addListener(onMessageMethod);
  61. // 定时器
  62. chrome.alarms.onAlarm.addListener(function (alarm) {
  63. // console.log("onAlarm-", alarm);
  64. switch (alarm.name) {
  65. case 'denetChromeAlarm':
  66. getMessageInfo();
  67. break
  68. case 'PingPong':
  69. PingPong()
  70. break;
  71. case 'LuckMessage':
  72. getSysMessage()
  73. break
  74. }
  75. });
  76. chrome.action.onClicked.addListener(function (tab) {
  77. injectExtensionPopup(tab);
  78. });
  79. chrome.tabs.onActivated.addListener(function (activeInfo) {
  80. setPopupConfig(activeInfo);
  81. })
  82. function thenInstalledMethod() {
  83. try {
  84. onInstalledCreateTab()
  85. onInstalledMid()
  86. onInstalledUserSet()
  87. // pingpang
  88. chrome.alarms.create('PingPong', {
  89. //1分鐘之後開始(該值不能小於1)
  90. delayInMinutes: 2,
  91. //開始後每一分鐘執行一次(該值不能小于1)
  92. periodInMinutes: 4
  93. });
  94. chrome.alarms.create('LuckMessage', {
  95. //1分鐘之後開始(該值不能小於1)
  96. delayInMinutes: 1,
  97. //開始後每一分鐘執行一次(該值不能小于1)
  98. periodInMinutes: 1
  99. });
  100. } catch (error) {
  101. Report.reportLog({
  102. objectType: Report.objectType.background_function_catch,
  103. funcName: 'thenInstalledMethod',
  104. errMsg: error.message
  105. });
  106. }
  107. }
  108. function onInstalledMethod() {
  109. try {
  110. // 3.onInstalledMethod 执行了那个
  111. // 版本更新判断
  112. getChromeStorage('baseInfo', (info) => {
  113. if (!info || !info.appVersionCode) {
  114. setChromeStorage({ onInstalledMethod: JSON.stringify({ onInstalledMethod: '1' }) })
  115. setChromeStorage({ baseInfo: JSON.stringify({ appVersionCode }) })
  116. thenInstalledMethod()
  117. } else if (appVersionCode != info.appVersionCode) {
  118. setChromeStorage({ onInstalledMethod: JSON.stringify({ onInstalledMethod: '2' }) }, () => {
  119. setChromeStorage({ baseInfo: JSON.stringify({ appVersionCode }) }, () => {
  120. chrome.runtime.reload()
  121. })
  122. })
  123. } else {
  124. setChromeStorage({ onInstalledMethod: JSON.stringify({ onInstalledMethod: '3' }) })
  125. thenInstalledMethod()
  126. }
  127. })
  128. // 1.onUpdateAvailable 存储到本地,再上报
  129. getChromeStorage('onUpdateAvailable', (res) => {
  130. if (res && res.onUpdateAvailable) {
  131. Report.reportLog({
  132. objectType: Report.objectType.background_function_try,
  133. funcName: 'onUpdateAvailable',
  134. })
  135. }
  136. })
  137. } catch (error) {
  138. Report.reportLog({
  139. objectType: Report.objectType.background_function_catch,
  140. funcName: 'onInstalledMethod',
  141. errMsg: error.message
  142. })
  143. }
  144. }
  145. function onMessageMethod(req, sender, sendResponse) {
  146. try {
  147. if (req) {
  148. switch (req.actionType) {
  149. case "POPUP_LOGIN":
  150. twitterPinLoginToken();
  151. break;
  152. case "POPUP_PUBLISH_TWITTER_RED_PACK":
  153. popupRePublish(req);
  154. break;
  155. case "POPUP_SHOW_DENET_PUBLISH_DIALOG":
  156. checkShowPublishDialog();
  157. break;
  158. case 'CONTENT_GET_PINED':
  159. checkPined();
  160. break;
  161. case 'CONTENT_SET_BADGE':
  162. setBadgeInfo(req);
  163. break;
  164. case 'CONTENT_HIDE_BADGE':
  165. hideBadge();
  166. break
  167. case 'CONTENT_SEND_CODE':
  168. twitterPinLoginCode(sender, req.code);
  169. break;
  170. case 'CONTENT_TWITTER_LOGIN':
  171. if (req.data) {
  172. twitterPinLoginToken()
  173. }
  174. break
  175. case "CONTENT_SEND_DISCORD_AUTH_CODE":
  176. discordLoginCode(req, sender);
  177. break
  178. case 'RED_PACKET_SAVE_DISCORD_AUTH_WINDOW_ID':
  179. saveDiscordAuthWindowId(req);
  180. break;
  181. case 'CONTENT_FACEBOOK_SHARE_SUCCESS':
  182. facebookShareSuccess(req, sender);
  183. break;
  184. case 'CONTENT_PONG':
  185. console.log('CONTENT_PONG')
  186. break
  187. case 'CONTENT_WINDOW_LOADED_SET_POPUP_PAGE':
  188. // windwoLoadSetPopupPage(req, sender);
  189. break;
  190. case 'CONTENT_SET_POPUP_CONFIG':
  191. setActionPopup(req, sender);
  192. break;
  193. case 'CONTENT_GET_TWITTER_NFT_POST_PRE':
  194. getTwitterNftPostPre(req.data, sender)
  195. break
  196. case 'CONTENT_NFT_TXT_PUBLISH':
  197. nftTxtPublish(req.data, sender)
  198. break
  199. case 'CONTENT_HTTP_NET_WORK':
  200. httpNetWork(req.funcName, req.data, sender)
  201. break
  202. case 'HTTP_CONTENT_TO_BACK':
  203. httpContentToBack(req, sender)
  204. break
  205. case 'CONTENT_TWITTER_SHORT_LINK':
  206. sendResponse('ok')
  207. req.arr_url.forEach(item => {
  208. if (item) {
  209. twitterShortUrl(sender, item)
  210. }
  211. });
  212. break
  213. case 'CONTENT_CLOSE_ACH_PAY_NOTICE':
  214. closeAchPayNoticeHandler();
  215. break;
  216. }
  217. }
  218. } catch (error) {
  219. Report.reportLog({
  220. objectType: Report.objectType.background_function_catch,
  221. funcName: 'onMessageMethod',
  222. errMsg: error.message
  223. });
  224. }
  225. }
  226. } catch (error) {
  227. console.log('error', error)
  228. }