|
@@ -5,9 +5,9 @@ import { reportSrcPublishEvent } from '@/http/publishApi'
|
|
|
import Report from "@/log-center/log"
|
|
|
import { fetchAddFinishEvent } from '@/logic/background/fetch/facebook';
|
|
|
import { showNFTGroupIcon, hideNFTGroupList, checkUserJoinGroup, elemAddEventListener, addJoinedGroupList } from '@/logic/content/nft';
|
|
|
-import { getTwitterNftGroupInfo } from '@/http/nft'
|
|
|
import { jumpTwitterDetailByAlert, showEditTweet } from '@/logic/content/help/twitter.js'
|
|
|
import { clearPostContent, setGroupIconStatus } from '@/logic/content/nft.js'
|
|
|
+import ToolBox from '@/logic/content/ToolBox'
|
|
|
import axios from 'axios';
|
|
|
|
|
|
let dom = {};
|
|
@@ -73,14 +73,14 @@ function renderDom() {
|
|
|
/**
|
|
|
* 展示give弹窗
|
|
|
*/
|
|
|
-export function showGiveDialogHandler(userInfo) {
|
|
|
+export function showGiveDialogHandler(params) {
|
|
|
let iframe = document.getElementById('iframe-content');
|
|
|
if (iframe) {
|
|
|
- iframe.contentWindow.postMessage({ actionType: 'CONTENT_SHOW_GIVE_DIALOG', userInfo }, '*');
|
|
|
+ iframe.contentWindow.postMessage({ actionType: 'CONTENT_SHOW_GIVE_DIALOG', data: params }, '*');
|
|
|
} else {
|
|
|
_addIframe();
|
|
|
let iframe = document.getElementById('iframe-content');
|
|
|
- iframe.contentWindow.postMessage({ actionType: 'CONTENT_SHOW_GIVE_DIALOG', userInfo }, '*');
|
|
|
+ iframe.contentWindow.postMessage({ actionType: 'CONTENT_SHOW_GIVE_DIALOG', data: params }, '*');
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -233,6 +233,10 @@ function _publishTweetEvent(params, cb) {
|
|
|
}
|
|
|
|
|
|
function onClosePublishDialogHandle(dom, params) {
|
|
|
+ // 如果是 Tool box
|
|
|
+ if (params.postType == 3) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
dom.querySelector('div[role="group"]').addEventListener('click', function () {
|
|
|
setTimeout(() => {
|
|
|
let parent = document.querySelector('div[data-testid="confirmationSheetDialog"]');
|
|
@@ -273,9 +277,10 @@ function checkIsShowReSend(dom, params) {
|
|
|
* @param isClick
|
|
|
* @private
|
|
|
*/
|
|
|
-function _addDeNetEditBtn(parent, dom, isClick = false) {
|
|
|
+function _addDeNetEditBtn(params = {}) {
|
|
|
setTimeout(() => {
|
|
|
- if (parent && parent.parentNode) {
|
|
|
+ let toolElem = document.querySelector('div[data-testid="toolBar"]');
|
|
|
+ if (toolElem) {
|
|
|
Report.reportLog({
|
|
|
pageSource: Report.pageSource.mainPage,
|
|
|
businessType: Report.businessType.buttonView,
|
|
@@ -283,12 +288,17 @@ function _addDeNetEditBtn(parent, dom, isClick = false) {
|
|
|
});
|
|
|
let innerDeIcon = document.getElementById('de-btn1');
|
|
|
if (!innerDeIcon) {
|
|
|
- parent.parentNode.insertBefore(dom, parent.nextElementSibling);
|
|
|
+ toolElem.firstChild.appendChild(createTweetToolbarDenet())
|
|
|
+ }
|
|
|
+
|
|
|
+ let innerToolBoxIcon = document.getElementById('de-tool-box-btn-01');
|
|
|
+ if (!innerToolBoxIcon) {
|
|
|
+ toolElem.firstChild.appendChild(createTweetToolbarToolBox())
|
|
|
}
|
|
|
} else {
|
|
|
setTimeout(() => {
|
|
|
- parent = _getScheduleDom(isClick);
|
|
|
- if (parent && parent.parentNode) {
|
|
|
+ let toolElem = document.querySelector('div[data-testid="toolBar"]');
|
|
|
+ if (toolElem) {
|
|
|
Report.reportLog({
|
|
|
pageSource: Report.pageSource.mainPage,
|
|
|
businessType: Report.businessType.buttonView,
|
|
@@ -296,7 +306,12 @@ function _addDeNetEditBtn(parent, dom, isClick = false) {
|
|
|
});
|
|
|
let innerDeIcon = document.getElementById('de-btn1');
|
|
|
if (!innerDeIcon) {
|
|
|
- parent.parentNode.insertBefore(dom, parent.nextElementSibling);
|
|
|
+ toolElem.firstChild.appendChild(createTweetToolbarDenet())
|
|
|
+ }
|
|
|
+
|
|
|
+ let innerToolBoxIcon = document.getElementById('de-tool-box-btn-01');
|
|
|
+ if (!innerToolBoxIcon) {
|
|
|
+ toolElem.firstChild.appendChild(createTweetToolbarToolBox())
|
|
|
}
|
|
|
}
|
|
|
}, 1000)
|
|
@@ -304,16 +319,6 @@ function _addDeNetEditBtn(parent, dom, isClick = false) {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * 在dialog插入deNet按钮
|
|
|
- * @private
|
|
|
- */
|
|
|
-// function _addDeNetBtnToDialog() {
|
|
|
-// setTimeout(() => {
|
|
|
-// let dialogScheduleBtn = _getScheduleDom(true);
|
|
|
-// _addDeNetEditBtn(dialogScheduleBtn, dom.deBtn2);
|
|
|
-// }, 800)
|
|
|
-// }
|
|
|
|
|
|
/**
|
|
|
* 获取左侧twitter按钮
|
|
@@ -335,9 +340,9 @@ function _addDeNetBtn() {
|
|
|
let navWidth = document.querySelector('nav[role="navigation"]').offsetWidth;
|
|
|
addSliderNavDeBtn(navWidth < 245);
|
|
|
let innerDeIcon = document.getElementById('de-btn1');
|
|
|
- if (!innerDeIcon) {
|
|
|
- let dialogScheduleBtn = _getScheduleDom(false);
|
|
|
- dom && dom.deBtn1 && _addDeNetEditBtn(dialogScheduleBtn, dom.deBtn1);
|
|
|
+ let innerToolBoxIcon = document.getElementById('de-tool-box-btn-01');
|
|
|
+ if (!innerDeIcon || !innerToolBoxIcon) {
|
|
|
+ _addDeNetEditBtn();
|
|
|
}
|
|
|
}, 800)
|
|
|
}
|
|
@@ -430,7 +435,7 @@ export function hideNoticeBindTweet() {
|
|
|
* 点击deNet按钮处理
|
|
|
* @private
|
|
|
*/
|
|
|
-function _deNetBtnClick() {
|
|
|
+function _deNetBtnClick(params = {}) {
|
|
|
getUserInfo((res) => {
|
|
|
if (res) {
|
|
|
if (window.location.pathname != '/home') {
|
|
@@ -439,7 +444,7 @@ function _deNetBtnClick() {
|
|
|
}
|
|
|
dom.homeBtn.click();
|
|
|
}
|
|
|
- showGiveDialogHandler(res);
|
|
|
+ showGiveDialogHandler(params);
|
|
|
} else {
|
|
|
let loadIcon = document.getElementById('de-btn-loading');
|
|
|
if (loadIcon) {
|
|
@@ -526,17 +531,13 @@ function _createBtnDom() {
|
|
|
deBtn.style.cssText = 'width:90%;height: 52px;text-align:center;line-height:52px;margin-bottom: 4px;margin-top: 4px;background: linear-gradient(274.8deg, #FF9900 -3.69%, #BD00FF 69.71%, #00F0FF 122.65%);color:#fff;font-size:17px;font-weight:700;border-radius:100px;cursor: pointer;display: flex;align-items: center;justify-content: center;';
|
|
|
|
|
|
// 编辑框内按钮
|
|
|
- const deBtn1 = document.createElement('img');
|
|
|
let src = require("@/assets/img/icon-gift-pack.png");
|
|
|
const smallDeBtnStyle = 'width:20px;height: 20px;cursor: pointer;padding: 0px 8px';
|
|
|
- deBtn1.id = 'de-btn1';
|
|
|
- deBtn1.style.cssText = smallDeBtnStyle;
|
|
|
- deBtn1.src = src
|
|
|
|
|
|
const deBtn2 = document.createElement('div');
|
|
|
deBtn2.id = 'de-btn2';
|
|
|
deBtn2.style.cssText = smallDeBtnStyle;
|
|
|
- deBtn2.src = "@/assets/img/icon-gift-pack.png"
|
|
|
+ deBtn2.src = src
|
|
|
|
|
|
// 小屏按钮
|
|
|
const deBtn3 = document.createElement('img');
|
|
@@ -545,29 +546,14 @@ function _createBtnDom() {
|
|
|
deBtn3.style.cssText = 'width:52px;height: 52px;margin-top:20px;cursor: pointer;';
|
|
|
|
|
|
deBtn.addEventListener('click', () => {
|
|
|
- // chrome.runtime.sendMessage({
|
|
|
- // actionType: 'CONTENT_SET_BADGE',
|
|
|
- // data: {
|
|
|
- // text: '2'
|
|
|
- // }
|
|
|
- // }, res => {
|
|
|
- // console.log(res);
|
|
|
- // })
|
|
|
-
|
|
|
Report.reportLog({
|
|
|
pageSource: Report.pageSource.mainPage,
|
|
|
businessType: Report.businessType.buttonClick,
|
|
|
objectType: Report.objectType.buttonMain
|
|
|
});
|
|
|
- _deNetBtnClick();
|
|
|
- })
|
|
|
- deBtn1.addEventListener('click', () => {
|
|
|
- Report.reportLog({
|
|
|
- pageSource: Report.pageSource.mainPage,
|
|
|
- businessType: Report.businessType.buttonClick,
|
|
|
- objectType: Report.objectType.buttonSecond
|
|
|
+ _deNetBtnClick({
|
|
|
+ type: 'SHOW_SELECT'
|
|
|
});
|
|
|
- _deNetBtnClick();
|
|
|
})
|
|
|
deBtn2.addEventListener('click', () => {
|
|
|
_deNetBtnClick();
|
|
@@ -578,15 +564,54 @@ function _createBtnDom() {
|
|
|
businessType: Report.businessType.buttonClick,
|
|
|
objectType: Report.objectType.buttonMain
|
|
|
});
|
|
|
- _deNetBtnClick();
|
|
|
+ _deNetBtnClick({
|
|
|
+ type: 'SHOW_SELECT'
|
|
|
+ });
|
|
|
})
|
|
|
dom.deBtn = deBtn;
|
|
|
- dom.deBtn1 = deBtn1;
|
|
|
dom.deBtn2 = deBtn2;
|
|
|
dom.deBtn3 = deBtn3;
|
|
|
dom.loadingImg = loadingImg;
|
|
|
}
|
|
|
|
|
|
+function createTweetToolbarDenet() {
|
|
|
+ let src = require("@/assets/img/icon-gift-pack.png");
|
|
|
+ const smallDeBtnStyle = 'width:20px;height: 20px;cursor: pointer;padding: 0px 8px';
|
|
|
+
|
|
|
+ const deBtn1 = document.createElement('img');
|
|
|
+ deBtn1.id = 'de-btn1';
|
|
|
+ deBtn1.style.cssText = smallDeBtnStyle;
|
|
|
+ deBtn1.src = src;
|
|
|
+
|
|
|
+ deBtn1.addEventListener('click', () => {
|
|
|
+ Report.reportLog({
|
|
|
+ pageSource: Report.pageSource.mainPage,
|
|
|
+ businessType: Report.businessType.buttonClick,
|
|
|
+ objectType: Report.objectType.buttonSecond
|
|
|
+ });
|
|
|
+ _deNetBtnClick();
|
|
|
+ })
|
|
|
+
|
|
|
+ return deBtn1;
|
|
|
+}
|
|
|
+
|
|
|
+function createTweetToolbarToolBox() {
|
|
|
+ let src = require("@/assets/img/icon-tool-box-01.png");
|
|
|
+ const smallDeBtnStyle = 'width:20px;height: 20px;cursor: pointer;padding: 0px 8px';
|
|
|
+
|
|
|
+ const deToolBoxBtn = document.createElement('img');
|
|
|
+ deToolBoxBtn.id = 'de-tool-box-btn-01';
|
|
|
+ deToolBoxBtn.style.cssText = smallDeBtnStyle;
|
|
|
+ deToolBoxBtn.src = src;
|
|
|
+
|
|
|
+ deToolBoxBtn.addEventListener('click', () => {
|
|
|
+ _deNetBtnClick({
|
|
|
+ type: 'TOOL_BOX'
|
|
|
+ })
|
|
|
+ })
|
|
|
+
|
|
|
+ return deToolBoxBtn;
|
|
|
+}
|
|
|
async function addSliderNavDeBtn(isSmall = false) {
|
|
|
try {
|
|
|
if (!isSmall) {
|
|
@@ -625,7 +650,7 @@ async function addSliderNavDeBtn(isSmall = false) {
|
|
|
|
|
|
function onWindowResize() {
|
|
|
window.onresize = throttle(function () {
|
|
|
- setTabGroupIframeStyle();
|
|
|
+ setTabGroupIframeStyle({}, true);
|
|
|
try {
|
|
|
if (tweetPublishStore.showPublishDialog) {
|
|
|
let dialog = document.querySelector('div[role="dialog"]');
|
|
@@ -665,8 +690,7 @@ function checkHasDeBtn() {
|
|
|
let toolBar = document.querySelector('div[data-testid="toolBar"]');
|
|
|
let innerDeIcon = document.getElementById('de-btn1');
|
|
|
if (toolBar && !innerDeIcon) {
|
|
|
- let dialogScheduleBtn = _getScheduleDom(false);
|
|
|
- dom && dom.deBtn1 && _addDeNetEditBtn(dialogScheduleBtn, dom.deBtn1);
|
|
|
+ _addDeNetEditBtn();
|
|
|
}
|
|
|
} catch (e) {
|
|
|
console.log(e)
|
|
@@ -724,6 +748,10 @@ export const changeQueueNum = (num = 0) => {
|
|
|
|
|
|
let main_observer = null
|
|
|
function onChangePageMain(targetNode) {
|
|
|
+ if (main_observer) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ changeQueueNum(1)
|
|
|
try {
|
|
|
const config = { attributes: false, childList: true, subtree: true };
|
|
|
const callback = (mutationsList, observer) => {
|
|
@@ -764,7 +792,11 @@ function setIframeRedPacket(type = 'twitter') {
|
|
|
item.post_Id = item.post_Id.split('luckdraw/')[1] || ''
|
|
|
item.page_type = '抽奖'
|
|
|
parseCard.replaceDOMRedPacket(item)
|
|
|
- } else {
|
|
|
+ } else if (item && item.post_Id && item.post_Id.indexOf('toolbox/') >= 0) {
|
|
|
+ item.page_type = 'toolbox'
|
|
|
+ item.post_Id = item.post_Id.split('toolbox/')[1] || ''
|
|
|
+ parseCard.replaceDomView(item)
|
|
|
+ } else if (item && item.post_Id && !item.post_Id.includes('/')) {
|
|
|
item.page_type = '红包'
|
|
|
parseCard.replaceDOMRedPacket(item)
|
|
|
}
|
|
@@ -838,10 +870,7 @@ function initParseCard() {
|
|
|
if (inTwitter && inTwitterNode) {
|
|
|
clearInterval(timer)
|
|
|
setInterval(() => {
|
|
|
- if (!main_observer) {
|
|
|
- onChangePageMain(inTwitterNode)
|
|
|
- changeQueueNum(1)
|
|
|
- }
|
|
|
+ onChangePageMain(inTwitterNode)
|
|
|
twitterPinLogin()
|
|
|
showNFTGroupIcon()
|
|
|
if (queue_num <= 0) {
|
|
@@ -859,10 +888,7 @@ function initParseCard() {
|
|
|
} else if (inFacebook && inFacebookNode) {
|
|
|
clearInterval(timer)
|
|
|
setInterval(() => {
|
|
|
- if (!main_observer) {
|
|
|
- onChangePageMain(inFacebookNode)
|
|
|
- changeQueueNum(1)
|
|
|
- }
|
|
|
+ onChangePageMain(inTwitterNode)
|
|
|
if (queue_num <= 0) {
|
|
|
return
|
|
|
}
|
|
@@ -872,6 +898,7 @@ function initParseCard() {
|
|
|
}
|
|
|
}, 1000);
|
|
|
}
|
|
|
+
|
|
|
let inited = false
|
|
|
// 初始化
|
|
|
export function init() {
|
|
@@ -897,16 +924,18 @@ export function init() {
|
|
|
}
|
|
|
|
|
|
if (window.location.host.includes('twitter.com')) {
|
|
|
+ renderDom();
|
|
|
showNFTCard()
|
|
|
showNFTGroupIcon()
|
|
|
addEventAction();
|
|
|
checkUserJoinGroup();
|
|
|
- renderDom();
|
|
|
checkTwitterTaskState();
|
|
|
initBuyNFT();
|
|
|
addJoinedGroupList();
|
|
|
getSysTheme();
|
|
|
addGroupTab();
|
|
|
+ // 预加载全屏 toobbox
|
|
|
+ ToolBox.initFull()
|
|
|
}
|
|
|
// 渲染dom
|
|
|
initParseCard()
|
|
@@ -1762,15 +1791,6 @@ export const tiggerInjectPopupPage = () => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-const onBodyClick = () => {
|
|
|
- if (window.location.href.indexOf('api.twitter.com') < 0) {
|
|
|
- document.querySelector('body').addEventListener('click', function () {
|
|
|
- console.log('click')
|
|
|
- // hidePopupPage();
|
|
|
- })
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
export const setPopupConfByPopupPage = () => {
|
|
|
let iframe = document.getElementById('de-popup-page');
|
|
|
if (iframe) {
|
|
@@ -1980,7 +2000,12 @@ export const groupTipsSelectGroupTab = (params = {}) => {
|
|
|
const addGroupTabEventListener = () => {
|
|
|
let groupTab = getGroupTabNode();
|
|
|
groupTab.addEventListener('click', function () {
|
|
|
- let groupColor = systemInfo.theme == 'light' ? 'rgb(15, 20, 25)' : '#fff';
|
|
|
+ let bgColor = document.querySelector('body').style.backgroundColor;
|
|
|
+
|
|
|
+ let groupColor = systemInfo.theme == 'dark' && bgColor == 'rgb(0, 0, 0)' ? '#fff' : 'rgb(15, 20, 25)';
|
|
|
+
|
|
|
+ // let groupColor = systemInfo.theme == 'light' ? 'rgb(15, 20, 25)' : '#fff';
|
|
|
+
|
|
|
setGroupTabSelfStyle({
|
|
|
groupColor: groupColor,
|
|
|
groupFontWeight: '700',
|
|
@@ -2265,7 +2290,10 @@ const fixProfileTabAutoSwitch = () => {
|
|
|
*
|
|
|
* 设置Tab Group Iframe 样式
|
|
|
*/
|
|
|
-export const setTabGroupIframeStyle = (params) => {
|
|
|
+export const setTabGroupIframeStyle = (params, isReSize = false) => {
|
|
|
+ if (!isReSize) {
|
|
|
+ getSysTheme();
|
|
|
+ }
|
|
|
let iframeContent = getGroupTabContentNode();
|
|
|
if (iframeContent) {
|
|
|
let htmlHeight = document.querySelector('html').offsetHeight;
|
|
@@ -2339,6 +2367,7 @@ const getSysTheme = () => {
|
|
|
} else {
|
|
|
systemInfo.theme = 'dark'
|
|
|
}
|
|
|
+ sysThemeChange();
|
|
|
themeMedia.addListener(e => {
|
|
|
addGroupTab()
|
|
|
if (e.matches) {
|
|
@@ -2346,9 +2375,22 @@ const getSysTheme = () => {
|
|
|
} else {
|
|
|
systemInfo.theme = 'dark'
|
|
|
}
|
|
|
+ sysThemeChange();
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+const sysThemeChange = () => {
|
|
|
+ setTimeout(() => {
|
|
|
+ let bgColor = document.querySelector('body').style.backgroundColor;
|
|
|
+
|
|
|
+ chrome.runtime.sendMessage({
|
|
|
+ actionType: "CONTENT_SYS_THEME_CHANGE", data: {
|
|
|
+ theme: systemInfo.theme,
|
|
|
+ twitterTheme: bgColor == 'rgb(0, 0, 0)' ? 'dark' : 'light'
|
|
|
+ }
|
|
|
+ }, () => { })
|
|
|
+ }, 800)
|
|
|
+}
|
|
|
|
|
|
/**
|
|
|
*
|