123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- import { logApi, reportFrontLogApi } from '@/http/logApi'
- import { getBrowser } from '@/uilts/help.js';
- import { logType } from './logEnum.js';
- import { getChromeStorage } from '@/uilts/chromeExtension'
- let userInfo = null;
- let mid = '';
- /**
- * @eventData 以键值对存储,会在最终上报里解开的参数
- * @extParams 最终上报到阿里云以json字符串存储的参数,如果extparams传入的不是obj会转换成obj
- */
- export async function reportLog(eventData = {}, extParams = {}) {
- if (!userInfo) {
- userInfo = await getChromeStorage('userInfo') || null;
- }
- if (!mid) {
- mid = await getChromeStorage('mid') || '';
- }
- if (chrome && chrome.tabs) {
- chrome.tabs.getCurrent((tab) => {
- 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 && userInfo.nickName || '',
- ...eventData,
- }
- paramsPretreatmentAndRequest(logType.denet, extData, extParams)
- }else{
- paramsPretreatmentAndRequest(logType.denet, eventData, extParams)
- }
- })
- } else {
- paramsPretreatmentAndRequest(logType.denet, eventData, extParams)
- }
- }
- function paramsPretreatmentAndRequest(logType, eventData, extParams) {
- extParams = wrapObject(extParams)
- let obj = {};
- let pageSource = eventData.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
- }
- }).then(res => {
- }).catch(err => {
- reportFrontLogApi({
- logData: JSON.stringify(err)
- })
- })
- }
- function wrapObject(extParams) {
- if (typeDecide(extParams, 'Object')) {
- return extParams
- }
- return { 'defaultExt': extParams }
- }
- /**
- * 检测对象类型
- */
- function typeDecide(o, type) {
- return Object.prototype.toString.call(o) === `[object ${type}]`;
- }
|