background.js 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  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. chrome.runtime.onMessage.addListener(onMessageMethod);
  38. } catch (error) {
  39. console.log('error when background onMessage addListener', error)
  40. }
  41. try {
  42. chrome.runtime.onInstalled.addListener(onInstalledMethod);
  43. } catch (error) {
  44. console.log('error when background onInstalled addListener', error)
  45. }
  46. // chrome.runtime.setUninstallURL('https://denet.me', (e) => {
  47. // console.log('e', e)
  48. // })
  49. // 消息通讯
  50. try {
  51. chrome.runtime.onConnect.addListener(function (port) {
  52. port.onDisconnect.addListener(function () {
  53. onDisconnectHandler(port);
  54. });
  55. });
  56. } catch (error) {
  57. console.log('error when background onConnect addListener', error)
  58. }
  59. // 当有可用更新时触发
  60. try {
  61. chrome.runtime.onUpdateAvailable.addListener(() => {
  62. try {
  63. setChromeStorage({ onUpdateAvailable: JSON.stringify({ onUpdateAvailable: '1' }) }, () => {
  64. chrome.runtime.reload()
  65. })
  66. } catch (error) {
  67. Report.reportLog({
  68. objectType: Report.objectType.background_function_catch,
  69. funcName: 'onUpdateAvailable',
  70. errMsg: error.message
  71. });
  72. }
  73. })
  74. } catch (error) {
  75. console.log('error when background onUpdateAvailable addListener', error)
  76. }
  77. // 定时器
  78. try {
  79. chrome.alarms.onAlarm.addListener(function (alarm) {
  80. // console.log("onAlarm-", alarm);
  81. switch (alarm.name) {
  82. case 'denetChromeAlarm':
  83. getMessageInfo();
  84. break
  85. case 'PingPong':
  86. PingPong()
  87. break;
  88. case 'LuckMessage':
  89. getSysMessage()
  90. break
  91. }
  92. });
  93. } catch (error) {
  94. console.log('error when background onAlarm addListener', error)
  95. }
  96. chrome.action.onClicked.addListener(function (tab) {
  97. injectExtensionPopup(tab);
  98. });
  99. chrome.tabs.onActivated.addListener(function (activeInfo) {
  100. setPopupConfig(activeInfo);
  101. })
  102. function thenInstalledMethod() {
  103. try {
  104. onInstalledCreateTab()
  105. onInstalledMid()
  106. onInstalledUserSet()
  107. // pingpang
  108. chrome.alarms.create('PingPong', {
  109. //1分鐘之後開始(該值不能小於1)
  110. delayInMinutes: 2,
  111. //開始後每一分鐘執行一次(該值不能小于1)
  112. periodInMinutes: 4
  113. });
  114. chrome.alarms.create('LuckMessage', {
  115. //1分鐘之後開始(該值不能小於1)
  116. delayInMinutes: 1,
  117. //開始後每一分鐘執行一次(該值不能小于1)
  118. periodInMinutes: 1
  119. });
  120. } catch (error) {
  121. Report.reportLog({
  122. objectType: Report.objectType.background_function_catch,
  123. funcName: 'thenInstalledMethod',
  124. errMsg: error.message
  125. });
  126. }
  127. }
  128. function onInstalledMethod({ id, previousVersion, reason }) {
  129. try {
  130. Report.reportLog({
  131. id,
  132. previousVersion,
  133. reason,
  134. funcName: 'onInstalledMethodCallback'
  135. });
  136. // 3.onInstalledMethod 执行了那个
  137. // 版本更新判断
  138. getChromeStorage('baseInfo', (info) => {
  139. // 第一次安装
  140. if (!info || !info.appVersionCode) {
  141. setChromeStorage({ onInstalledMethod: JSON.stringify({ onInstalledMethod: '1' }) })
  142. setChromeStorage({ baseInfo: JSON.stringify({ appVersionCode }) })
  143. thenInstalledMethod()
  144. // 版本更新了
  145. } else if (appVersionCode != info.appVersionCode) {
  146. setChromeStorage({ onInstalledMethod: JSON.stringify({ onInstalledMethod: '2' }) }, () => {
  147. setChromeStorage({ baseInfo: JSON.stringify({ appVersionCode }) }, () => {
  148. // chrome.runtime.reload()
  149. onInstalledUserSet()
  150. })
  151. })
  152. } else {
  153. setChromeStorage({ onInstalledMethod: JSON.stringify({ onInstalledMethod: '3' }) })
  154. thenInstalledMethod()
  155. }
  156. console.log('1-appVersionCode', appVersionCode)
  157. console.log('1-info.appVersionCode', info.appVersionCode)
  158. console.log('1-info', info)
  159. })
  160. console.log('2-appVersionCode', appVersionCode)
  161. // 1.onUpdateAvailable 存储到本地,再上报
  162. getChromeStorage('onUpdateAvailable', (res) => {
  163. if (res && res.onUpdateAvailable) {
  164. Report.reportLog({
  165. objectType: Report.objectType.background_function_try,
  166. funcName: 'onUpdateAvailable',
  167. })
  168. }
  169. })
  170. } catch (error) {
  171. Report.reportLog({
  172. objectType: Report.objectType.background_function_catch,
  173. funcName: 'onInstalledMethod',
  174. errMsg: error.message
  175. })
  176. }
  177. }
  178. function onMessageMethod(req, sender, sendResponse) {
  179. try {
  180. if (req) {
  181. switch (req.actionType) {
  182. case "POPUP_LOGIN":
  183. twitterPinLoginToken();
  184. sendResponse('ok');
  185. break;
  186. case "POPUP_PUBLISH_TWITTER_RED_PACK":
  187. popupRePublish(req);
  188. sendResponse('ok');
  189. break;
  190. case "POPUP_SHOW_DENET_PUBLISH_DIALOG":
  191. checkShowPublishDialog();
  192. break;
  193. case 'CONTENT_GET_PINED':
  194. checkPined();
  195. break;
  196. case 'CONTENT_SET_BADGE':
  197. setBadgeInfo(req);
  198. break;
  199. case 'CONTENT_HIDE_BADGE':
  200. hideBadge();
  201. break
  202. case 'CONTENT_SEND_CODE':
  203. twitterPinLoginCode(sender, req.code);
  204. break;
  205. case 'CONTENT_TWITTER_LOGIN':
  206. if (req.data) {
  207. twitterPinLoginToken();
  208. sendResponse('ok');
  209. }
  210. break
  211. case "CONTENT_SEND_DISCORD_AUTH_CODE":
  212. discordLoginCode(req, sender);
  213. break
  214. case 'RED_PACKET_SAVE_DISCORD_AUTH_WINDOW_ID':
  215. saveDiscordAuthWindowId(req);
  216. sendResponse('ok');
  217. break;
  218. case 'CONTENT_FACEBOOK_SHARE_SUCCESS':
  219. facebookShareSuccess(req, sender);
  220. break;
  221. case 'CONTENT_PONG':
  222. sendResponse('CONTENT_PONG');
  223. break
  224. case 'CONTENT_WINDOW_LOADED_SET_POPUP_PAGE':
  225. // windwoLoadSetPopupPage(req, sender);
  226. break;
  227. case 'CONTENT_SET_POPUP_CONFIG':
  228. setActionPopup(req, sender);
  229. break;
  230. case 'CONTENT_GET_TWITTER_NFT_POST_PRE':
  231. getTwitterNftPostPre(req.data, sender)
  232. break
  233. case 'CONTENT_NFT_TXT_PUBLISH':
  234. nftTxtPublish(req.data, sender)
  235. break
  236. case 'CONTENT_HTTP_NET_WORK':
  237. httpNetWork(req.funcName, req.data, sender)
  238. break
  239. case 'HTTP_CONTENT_TO_BACK':
  240. httpContentToBack(req, sender)
  241. sendResponse('ok')
  242. break
  243. case 'CONTENT_TWITTER_SHORT_LINK':
  244. sendResponse('ok')
  245. req.arr_url.forEach(item => {
  246. if (item) {
  247. twitterShortUrl(sender, item)
  248. }
  249. });
  250. break
  251. case 'CONTENT_CLOSE_ACH_PAY_NOTICE':
  252. closeAchPayNoticeHandler();
  253. break;
  254. }
  255. }
  256. } catch (error) {
  257. Report.reportLog({
  258. objectType: Report.objectType.background_function_catch,
  259. funcName: 'onMessageMethod',
  260. errMsg: error.message
  261. });
  262. }
  263. }
  264. //加载bg.js 执行
  265. setMessageCount();