zhangwei 2 rokov pred
rodič
commit
651a7667e5

+ 11 - 2
src/entry/background.js

@@ -23,7 +23,7 @@ import {
     nftTxtPublish,
     getLuckMessage
 } from "@/logic/background/twitter";
-
+import Report from "@/log-center/log"
 import { PingPong, httpNetWork } from "@/logic/background/help";
 
 import {
@@ -91,9 +91,18 @@ function onInstalledMethod() {
         //開始後每一分鐘執行一次(該值不能小于1) 
         periodInMinutes: 1
     });
+    setTimeout(() => {
+        // 安装成功埋点
+        Report.reportLog({
+            objectType: Report.objectType.chrome_extension_installed
+        });
+    }, 5000);
+
+
 }
 
 function onMessageMethod(req, sender, sendResponse) {
+    sendResponse('ok')
     if (req) {
         switch (req.actionType) {
             case "POPUP_LOGIN":
@@ -150,7 +159,7 @@ function onMessageMethod(req, sender, sendResponse) {
                 nftTxtPublish(req.data, sender)
                 break
             case 'CONTENT_HTTP_NET_WORK':
-                httpNetWork(req.funcName, req.data, sender, sendResponse)
+                httpNetWork(req.funcName, req.data, sender)
                 break
         }
     }

+ 1 - 1
src/entry/content.js

@@ -105,7 +105,7 @@ window.onmessage = (res) => {
 
 
 chrome.runtime.onMessage.addListener((req, sender, sendResponse) => {
-    
+    sendResponse('ok')
     switch (req.actionType) {
         case 'BG_SHOW_PIN_TIPS':
             showPinTips()

+ 1 - 1
src/entry/content_help.js

@@ -38,7 +38,7 @@ chrome.runtime.sendMessage({
 }, () => { });
 
 chrome.runtime.onMessage.addListener((req, sender, sendResponse) => {
-    sendResponse('')
+    sendResponse('ok')
     switch (req.actionType) {
         case 'BACK_PING':
             chrome.runtime.sendMessage({ actionType: "CONTENT_PONG", data: '1' }, (res) => { console.log(res) })

+ 9 - 3
src/log-center/logEnum.js

@@ -42,6 +42,12 @@ export const objectType = {
     get_giveaway: 'get-giveaway',
     // 成功领取到钱包
     wallet_button: 'wallet-button',
+    // 卡片解析
+    parse_card_error: 'parse-card-error',
+    // 安装成功
+    chrome_extension_installed:'chrome-extension-installed',
+    // 发送事件异常
+    chrome_extension_sendmessage_error :'chrome-extension-sendmessage-error'
 }
 
 export const pageSource = {
@@ -72,10 +78,10 @@ export const pageSource = {
     // 成功领取到钱包
     received_success_page: 'received-success-page',
     received_empty_rewards_page: 'received-empty-rewards-page',
-    
+
 }
 
 export const extParams = {
-    success:'success',
-    failure:'failure'
+    success: 'success',
+    failure: 'failure'
 }

+ 25 - 20
src/log-center/logger.js

@@ -1,7 +1,7 @@
-import {logApi} from '@/http/logApi'
+import { logApi } from '@/http/logApi'
 import { getBrowser } from '@/uilts/help.js';
 import { logType } from './logEnum.js';
-import {getChromeStorage} from '@/uilts/chromeExtension'
+import { getChromeStorage } from '@/uilts/chromeExtension'
 
 let userInfo = null;
 let mid = '';
@@ -10,27 +10,30 @@ let mid = '';
  * @extParams 最终上报到阿里云以json字符串存储的参数,如果extparams传入的不是obj会转换成obj
  */
 export async function reportLog(eventData = {}, extParams = {}) {
-    if(!userInfo) {
+    if (!userInfo) {
         userInfo = await getChromeStorage('userInfo') || null;
     }
     if (!mid) {
         mid = await getChromeStorage('mid') || '';
     }
-
     if (chrome && chrome.tabs) {
         chrome.tabs.getCurrent((tab) => {
-            let isMobile = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i);
-            let { url = '' } = tab;
-            let platform = isMobile ? `mobile` : `pc`;
-            let browser = getBrowser();
-            let extData = {
-                url,
-                platform,
-                browser,
-                twitterId: userInfo.nickName,
-                ...eventData,
+            if (tab && tab.url) {
+                let isMobile = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i);
+                let { url = '' } = tab;
+                let platform = isMobile ? `mobile` : `pc`;
+                let browser = getBrowser();
+                let extData = {
+                    url,
+                    platform,
+                    browser,
+                    twitterId: userInfo.nickName,
+                    ...eventData,
+                }
+                paramsPretreatmentAndRequest(logType.denet, extData, extParams)
+            }else{
+                paramsPretreatmentAndRequest(logType.denet, eventData, extParams)
             }
-            paramsPretreatmentAndRequest(logType.denet, extData, extParams)
         })
     } else {
         paramsPretreatmentAndRequest(logType.denet, eventData, extParams)
@@ -41,16 +44,18 @@ function paramsPretreatmentAndRequest(logType, eventData, extParams) {
     extParams = wrapObject(extParams)
     let obj = {};
     let pageSource = eventData.pageSource;
-    if(eventData.hasOwnProperty('pageSource')) {
+    if (eventData.hasOwnProperty('pageSource')) {
         delete eventData.pageSource;
     }
     obj.logType = logType;
     obj.eventData = JSON.stringify(eventData)
     obj.extParams = JSON.stringify(extParams)
-    logApi({params: {
-        pageSource,
-        ...obj
-    }})
+    logApi({
+        params: {
+            pageSource,
+            ...obj
+        }
+    })
 }
 
 function wrapObject(extParams) {

+ 1 - 1
src/logic/background/help.js

@@ -12,7 +12,7 @@ export function PingPong() {
     })
 }
 
-export function httpNetWork(funcName, data, sender, sendResponse) {
+export function httpNetWork(funcName, data, sender) {
     return commonFetch(data)
         .then((response) => {
             chrome.tabs.sendMessage(sender.tab.id, { actionType: 'BACK_HTTP_RESPONSE', data: response, funcName });

+ 8 - 2
src/logic/content/twitter.js

@@ -486,7 +486,7 @@ const setDialogPublishContent = throttle(function (content) {
     setTimeout(() => {
         let inputEle;
         let dialog = document.querySelector('div[role="dialog"]');
-        if(dialog) {
+        if (dialog) {
             inputEle = dialog.querySelector('div[contenteditable="true"]');
         } else {
             inputEle = document.querySelector('div[contenteditable="true"]');
@@ -761,7 +761,13 @@ function setIframeRedPacket(type = 'twitter') {
                 }
                 if (res.need_net_short_url.length > 0) {
                     // 请求短链接
-                    chrome.runtime.sendMessage({ actionType: "CONTENT_TWITTER_SHORT_LINK", data: "", arr_url: res.need_net_short_url }, () => { })
+                    chrome.runtime.sendMessage({ actionType: "CONTENT_TWITTER_SHORT_LINK", data: "", arr_url: res.need_net_short_url }, (res) => {
+                        if (!res) {
+                            Report.reportLog({
+                                objectType: Report.objectType.parse_card_error
+                            });
+                        }
+                    })
                 }
             })
             break;

+ 2 - 2
src/uilts/chromeExtension.js

@@ -107,9 +107,9 @@ export function removeChromeCookie(params, cb) {
     })
 }
 
-export function sendChromeTabMessage(params) {
+export function sendChromeTabMessage(params,callback) {
     chrome.tabs.getCurrent((tab) => {
-        chrome.tabs.sendMessage(tab.id, params, (res) => { console.log(res) });
+        chrome.tabs.sendMessage(tab.id, params, callback);
     })
 }
 

+ 24 - 4
src/view/iframe/group-card/card.vue

@@ -50,6 +50,7 @@
 import { reactive, onBeforeMount } from 'vue'
 import { getTwitterNftGroupInfo } from "@/http/group";
 import { getQueryString } from '@/uilts/help.js';
+import Report from "@/log-center/log"
 import { sendChromeTabMessage, checkIsLogin } from '@/uilts/chromeExtension.js';
 
 let state = reactive({
@@ -129,7 +130,7 @@ const init = (callback) => {
 }
 
 chrome.runtime.onMessage.addListener((req, sender, sendResponse) => {
-    sendResponse('')
+    sendResponse('ok')
     switch (req.actionType) {
         case 'FINISH_GROUP_BANNNER':
             init()
@@ -172,15 +173,34 @@ const sendMessageToContent = (params) => {
         chrome.tabs.sendMessage(tab.id, {
             actionType,
             data,
-        }, (res) => { console.log(res) });
+        }, (res) => {
+            // 异常埋点
+            if (!res) {
+                Report.reportLog({
+                    objectType: Report.objectType.chrome_extension_sendmessage_error
+                })
+            }
+        });
     })
 }
 const clickArrow = () => {
-    sendChromeTabMessage({ actionType: "SWITCH_GROUP_STATUS" }, () => { })
+    sendChromeTabMessage({ actionType: "SWITCH_GROUP_STATUS" }, (res) => {
+        if (!res) {
+            Report.reportLog({
+                objectType: Report.objectType.chrome_extension_sendmessage_error
+            })
+        }
+    })
 }
 
 async function clickPost() {
-    sendChromeTabMessage({ actionType: "SWITCH_GROUP_STATUS" }, () => { })
+    sendChromeTabMessage({ actionType: "SWITCH_GROUP_STATUS" }, (res) => {
+        if (!res) {
+            Report.reportLog({
+                objectType: Report.objectType.chrome_extension_sendmessage_error
+            })
+        }
+    })
     let _userInfo = await checkIsLogin()
     if (!_userInfo) {
         return

+ 1 - 0
src/view/iframe/nft/group-card.vue

@@ -105,6 +105,7 @@ onMounted(() => {
 
     // 登录回调
     chrome.runtime.onMessage.addListener((req, sender, sendResponse) => {
+        sendResponse('ok')
         switch (req.actionType) {
             case 'BG_LOGIN_SET_USERINFO_CB':
                 getDetail();

+ 1 - 1
src/view/iframe/red-packet/luck-draw.vue

@@ -1902,7 +1902,7 @@ function onPageVisbile() {
 
 function onRuntimeMsg() {
     chrome.runtime.onMessage.addListener((req, sender, sendResponse) => {
-        sendResponse('');
+        sendResponse('ok');
         switch (req.actionType) {
             case 'BACK_DISCORD_LOGIN_SUCCESS':
                 discordLoginSuccess();

+ 1 - 1
src/view/iframe/red-packet/red-packet.vue

@@ -1712,7 +1712,7 @@ function onPageVisbile() {
 
 function onRuntimeMsg() {
   chrome.runtime.onMessage.addListener((req, sender, sendResponse) => {
-    sendResponse('');
+    sendResponse('ok');
     switch (req.actionType) {
       case 'BACK_DISCORD_LOGIN_SUCCESS':
         discordLoginSuccess();

+ 1 - 0
src/view/iframe/tab-group/tab-group.vue

@@ -98,6 +98,7 @@ const clickItem = (data, index) => {
 
 function onRuntimeMsg() {
     chrome.runtime.onMessage.addListener((req, sender, sendResponse) => {
+        sendResponse('ok')
         switch (req.actionType) {
             case 'CONTENT_REFRESH_TAB_GROUP_LIST':
                 listReqParams.params.preTimestamp = ''

+ 1 - 1
src/view/popup/components/tabbar.vue

@@ -167,7 +167,7 @@ const onMessage = () => {
 }
 
 const msgListener = (req, sender, sendResponse) => {
-    sendResponse('');
+    sendResponse('ok');
     switch (req.actionType) {
         case 'CONTENT_POPUP_PAGE_SHOW':
             init();

+ 1 - 1
src/view/popup/tabbar-page/index.vue

@@ -115,7 +115,7 @@ const onRuntimeMsg = () => {
 }
 
 const msgListener = (req, sender, sendResponse) => {
-  sendResponse('');
+  sendResponse('ok');
   switch (req.actionType) {
     case 'BG_LOGIN_SET_USERINFO_CB':
       if(!userInfo.value.accessToken) {

+ 1 - 1
src/view/popup/tabbar-page/message/index.vue

@@ -481,7 +481,7 @@ const onMessage = () => {
 }
 
 const msgListener = (req, sender, sendResponse) => {
-  sendResponse('');
+  sendResponse('ok');
   switch (req.actionType) {
       case 'CONTENT_POPUP_PAGE_SHOW':
           init();

+ 1 - 1
src/view/popup/tabbar-page/nft/index.vue

@@ -94,7 +94,7 @@ const onMessage = () => {
 }
 
 const msgListener = (req, sender, sendResponse) => {
-    sendResponse('');
+    sendResponse('ok');
     switch (req.actionType) {
         case 'CONTENT_POPUP_PAGE_SHOW':
             getNFTListMine();

+ 1 - 1
src/view/popup/tabbar-page/wallter/popup.vue

@@ -205,7 +205,7 @@ const onMessage = () => {
 }
 
 const msgListener = (req, sender, sendResponse) => {
-    sendResponse('');
+    sendResponse('ok');
     switch (req.actionType) {
         case 'CONTENT_POPUP_PAGE_SHOW':
             init();