background.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  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. windwoLoadSetPopupPage,
  21. setActionPopup,
  22. getTwitterNftPostPre,
  23. nftTxtPublish,
  24. getSysMessage,
  25. checkShowPublishDialog
  26. } from "@/logic/background/twitter";
  27. import Report from "@/log-center/log"
  28. import { PingPong, httpNetWork, httpContentToBack } from "@/logic/background/help";
  29. import { appVersionCode } from '@/http/configAPI.js'
  30. import { getChromeStorage, setChromeStorage } from '@/uilts/chromeExtension.js'
  31. import {
  32. facebookShareSuccess
  33. } from "@/logic/background/facebook";
  34. import {
  35. closeAchPayNoticeHandler
  36. } from "@/logic/background/denet";
  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. Report.reportLog({
  49. objectType: Report.objectType.background_function_try,
  50. funcName: 'onUpdateAvailable'
  51. })
  52. chrome.runtime.reload()
  53. } catch (error) {
  54. Report.reportLog({
  55. objectType: Report.objectType.background_function_catch,
  56. funcName: 'onUpdateAvailable',
  57. errMsg: error.message
  58. });
  59. }
  60. })
  61. chrome.runtime.onInstalled.addListener(onInstalledMethod);
  62. chrome.runtime.onMessage.addListener(onMessageMethod);
  63. // 定时器
  64. chrome.alarms.onAlarm.addListener(function (alarm) {
  65. // console.log("onAlarm-", alarm);
  66. switch (alarm.name) {
  67. case 'denetChromeAlarm':
  68. getMessageInfo();
  69. break
  70. case 'PingPong':
  71. PingPong()
  72. break;
  73. case 'LuckMessage':
  74. getSysMessage()
  75. break
  76. }
  77. });
  78. chrome.action.onClicked.addListener(function (tab) {
  79. injectExtensionPopup(tab);
  80. });
  81. chrome.tabs.onActivated.addListener(function (activeInfo) {
  82. setPopupConfig(activeInfo);
  83. })
  84. function thenInstalledMethod() {
  85. try {
  86. onInstalledCreateTab()
  87. onInstalledMid()
  88. onInstalledUserSet()
  89. // pingpang
  90. chrome.alarms.create('PingPong', {
  91. //1分鐘之後開始(該值不能小於1)
  92. delayInMinutes: 2,
  93. //開始後每一分鐘執行一次(該值不能小于1)
  94. periodInMinutes: 4
  95. });
  96. chrome.alarms.create('LuckMessage', {
  97. //1分鐘之後開始(該值不能小於1)
  98. delayInMinutes: 1,
  99. //開始後每一分鐘執行一次(該值不能小于1)
  100. periodInMinutes: 1
  101. });
  102. } catch (error) {
  103. Report.reportLog({
  104. objectType: Report.objectType.background_function_catch,
  105. funcName: 'thenInstalledMethod',
  106. errMsg: error.message
  107. })
  108. }
  109. }
  110. function onInstalledMethod() {
  111. try {
  112. // 版本更新判断
  113. getChromeStorage('baseInfo', (info) => {
  114. if (!info || !info.appVersionCode) {
  115. setChromeStorage({ baseInfo: JSON.stringify({ appVersionCode }) })
  116. thenInstalledMethod()
  117. } else if (appVersionCode != info.appVersionCode) {
  118. setChromeStorage({ baseInfo: JSON.stringify({ appVersionCode }) }, () => {
  119. chrome.runtime.reload()
  120. })
  121. } else {
  122. thenInstalledMethod()
  123. }
  124. })
  125. } catch (error) {
  126. Report.reportLog({
  127. objectType: Report.objectType.background_function_catch,
  128. funcName: 'onInstalledMethod',
  129. errMsg: error.message
  130. })
  131. }
  132. }
  133. function onMessageMethod(req, sender, sendResponse) {
  134. try {
  135. if (req) {
  136. switch (req.actionType) {
  137. case "POPUP_LOGIN":
  138. twitterPinLoginToken();
  139. break;
  140. case "POPUP_PUBLISH_TWITTER_RED_PACK":
  141. popupRePublish(req);
  142. break;
  143. case "POPUP_SHOW_DENET_PUBLISH_DIALOG":
  144. checkShowPublishDialog();
  145. break;
  146. case 'CONTENT_GET_PINED':
  147. checkPined();
  148. break;
  149. case 'CONTENT_SET_BADGE':
  150. setBadgeInfo(req);
  151. break;
  152. case 'CONTENT_HIDE_BADGE':
  153. hideBadge();
  154. break
  155. case 'CONTENT_SEND_CODE':
  156. twitterPinLoginCode(sender, req.code);
  157. break;
  158. case 'CONTENT_TWITTER_LOGIN':
  159. if (req.data) {
  160. twitterPinLoginToken()
  161. }
  162. break
  163. case "CONTENT_SEND_DISCORD_AUTH_CODE":
  164. discordLoginCode(req, sender);
  165. break
  166. case 'RED_PACKET_SAVE_DISCORD_AUTH_WINDOW_ID':
  167. saveDiscordAuthWindowId(req);
  168. break;
  169. case 'CONTENT_FACEBOOK_SHARE_SUCCESS':
  170. facebookShareSuccess(req, sender);
  171. break;
  172. case 'CONTENT_PONG':
  173. console.log('CONTENT_PONG')
  174. break
  175. case 'CONTENT_WINDOW_LOADED_SET_POPUP_PAGE':
  176. // windwoLoadSetPopupPage(req, sender);
  177. break;
  178. case 'CONTENT_SET_POPUP_CONFIG':
  179. setActionPopup(req, sender);
  180. break;
  181. case 'CONTENT_GET_TWITTER_NFT_POST_PRE':
  182. getTwitterNftPostPre(req.data, sender)
  183. break
  184. case 'CONTENT_NFT_TXT_PUBLISH':
  185. nftTxtPublish(req.data, sender)
  186. break
  187. case 'CONTENT_HTTP_NET_WORK':
  188. httpNetWork(req.funcName, req.data, sender)
  189. break
  190. case 'HTTP_CONTENT_TO_BACK':
  191. httpContentToBack(req, sender)
  192. break
  193. case 'CONTENT_TWITTER_SHORT_LINK':
  194. sendResponse('ok')
  195. req.arr_url.forEach(item => {
  196. if (item) {
  197. twitterShortUrl(sender, item)
  198. }
  199. });
  200. break
  201. case 'CONTENT_CLOSE_ACH_PAY_NOTICE':
  202. closeAchPayNoticeHandler();
  203. break;
  204. }
  205. }
  206. } catch (error) {
  207. Report.reportLog({
  208. objectType: Report.objectType.background_function_catch,
  209. funcName: 'onMessageMethod',
  210. errMsg: error.message
  211. });
  212. }
  213. }