chromeExtension.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. import { pageUrl, websiteUrl } from "@/http/configAPI.js"
  2. import { guid } from "@/uilts/help";
  3. export const LANDING_PAGE = {
  4. name: 'received_log',
  5. url: pageUrl
  6. }
  7. export const LANDING_PAGE_MID = {
  8. name: 'mid',
  9. url: pageUrl
  10. }
  11. export const LANDING_PAGE_JUMP_INFO = {
  12. name: 'jump_info',
  13. url: pageUrl
  14. }
  15. export const WEBSITE_USER_INFO = {
  16. name: 'userInfo',
  17. url: websiteUrl
  18. }
  19. export function setChromeStorage(params, callback) {
  20. try {
  21. if (callback) {
  22. chrome.storage.local.set(params, callback)
  23. } else {
  24. chrome.storage.local.set(params)
  25. }
  26. } catch (error) {
  27. console.error('catch', error)
  28. }
  29. }
  30. export function getChromeStorage(key = '', callback) {
  31. try {
  32. let params = {}
  33. params[key] = ''
  34. if (!callback) {
  35. return new Promise((resolve) => {
  36. chrome.storage.local.get(params, (item) => {
  37. if (item[key]) {
  38. resolve(JSON.parse(item[key]))
  39. } else {
  40. resolve(null)
  41. }
  42. })
  43. })
  44. }
  45. chrome.storage.local.get(params, (item) => {
  46. if (item[key]) {
  47. callback(JSON.parse(item[key]))
  48. } else {
  49. callback(null)
  50. }
  51. });
  52. } catch (error) {
  53. console.error('catch', error)
  54. }
  55. }
  56. // export function chromeSendMessage() {
  57. // try {
  58. // // chrome.runtime.sendMessage
  59. // } catch {
  60. // }
  61. // }
  62. export let chromeExtensionUrl = chrome.runtime.getURL('/')
  63. export function setChromeCookie({
  64. name,
  65. url
  66. }, value_obj) {
  67. try {
  68. chrome.cookies.set({
  69. expirationDate: new Date().getTime() / 10,
  70. name: name,
  71. url: url,
  72. value: encodeURIComponent(JSON.stringify(value_obj)) || ''
  73. })
  74. } catch (error) {
  75. console.error('catch', error)
  76. }
  77. }
  78. export function getChromeCookie({ name = '', url = '', return_type = '' }, callback) {
  79. try {
  80. chrome.cookies.getAll({ name, url }, (res = []) => {
  81. let _str = ''
  82. if (Array.isArray(res) && res.length) {
  83. _str = res[0].value
  84. }
  85. if (_str) {
  86. if (return_type == 'str') {
  87. callback(_str)
  88. } else {
  89. callback(JSON.parse(decodeURIComponent(_str)))
  90. }
  91. } else {
  92. callback(null)
  93. }
  94. })
  95. } catch (error) {
  96. console.error('catch', error)
  97. }
  98. }
  99. export function removeChromeCookie(params, cb) {
  100. try {
  101. let { name, url } = params;
  102. chrome.cookies.remove({ name, url }, () => {
  103. cb && cb
  104. })
  105. } catch (error) {
  106. console.log('catch', error)
  107. }
  108. }
  109. export function sendCurrentTabMessage(params, callback) {
  110. try {
  111. chrome.tabs.getCurrent((tab) => {
  112. chrome.tabs.sendMessage(tab.id, params, callback);
  113. })
  114. } catch (error) {
  115. console.log('catch', error)
  116. }
  117. }
  118. export function checkIsLogin(callback) {
  119. try {
  120. return new Promise((resolve) => {
  121. getChromeStorage('userInfo', (_userInfo) => {
  122. if (!_userInfo) {
  123. chrome.runtime.sendMessage(
  124. { actionType: "POPUP_LOGIN", data: "" },
  125. (response) => {
  126. console.log("res", response);
  127. }
  128. )
  129. callback && callback()
  130. resolve(_userInfo)
  131. } else {
  132. resolve(_userInfo)
  133. }
  134. })
  135. })
  136. } catch (error) {
  137. console.error('catch', error)
  138. }
  139. }
  140. let callback_arr = []
  141. export function httpContentToBack(data, callback) {
  142. try {
  143. let callback_id = guid()
  144. chrome.runtime.sendMessage({ actionType: "HTTP_CONTENT_TO_BACK", data, callback_id }, (res) => {
  145. if (res && callback) {
  146. callback_arr.push({
  147. callback_id,
  148. callback,
  149. })
  150. }
  151. })
  152. } catch (error) {
  153. console.error('catch', error)
  154. }
  155. }
  156. // 再找到它执行
  157. export function httpBackToContentCallBack(req) {
  158. try {
  159. for (let i in callback_arr) {
  160. if (callback_arr[i].callback_id == req.callback_id) {
  161. // 执行
  162. callback_arr[i].callback(req.data)
  163. // 删除
  164. callback_arr.splice(i, 1)
  165. break
  166. }
  167. }
  168. } catch (error) {
  169. console.error('catch', error)
  170. }
  171. }