background.js 9.8 KB

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