|
@@ -765,6 +765,7 @@ function initParseCard() {
|
|
checkHasSliderDeBtn();
|
|
checkHasSliderDeBtn();
|
|
changeQueueNum(-1)
|
|
changeQueueNum(-1)
|
|
showNFTCard()
|
|
showNFTCard()
|
|
|
|
+ addGroupTab();
|
|
}, 1000)
|
|
}, 1000)
|
|
} else if (inFacebook && inFacebookNode) {
|
|
} else if (inFacebook && inFacebookNode) {
|
|
clearInterval(timer)
|
|
clearInterval(timer)
|
|
@@ -812,8 +813,8 @@ export function init() {
|
|
renderDom();
|
|
renderDom();
|
|
checkTwitterTaskState();
|
|
checkTwitterTaskState();
|
|
|
|
|
|
- onBodyClick();
|
|
|
|
initBuyNFT();
|
|
initBuyNFT();
|
|
|
|
+ addGroupTab();
|
|
|
|
|
|
getChromeStorage("popupShowPublishDialog", (res) => {
|
|
getChromeStorage("popupShowPublishDialog", (res) => {
|
|
console.log("popupShowPublishDialog", res);
|
|
console.log("popupShowPublishDialog", res);
|
|
@@ -1433,16 +1434,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 = () => {
|
|
export const setPopupConfByPopupPage = () => {
|
|
let iframe = document.getElementById('de-popup-page');
|
|
let iframe = document.getElementById('de-popup-page');
|
|
if (iframe) {
|
|
if (iframe) {
|
|
@@ -1471,4 +1462,251 @@ export const setPopupConfByPopupPage = () => {
|
|
}
|
|
}
|
|
}, () => { });
|
|
}, () => { });
|
|
}
|
|
}
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+const addGroupTab = () => {
|
|
|
|
+ let tabListDom = document.querySelector('div[role="tablist"]');
|
|
|
|
+ let groupItemTab = document.querySelector('#de-nav-tab-group');
|
|
|
|
+
|
|
|
|
+ if(tabListDom && !groupItemTab) {
|
|
|
|
+ let lineDom = document.createElement('div');
|
|
|
|
+ lineDom.id = 'de-tab-line';
|
|
|
|
+ lineDom.style.cssText = `border-radius: 9999px;
|
|
|
|
+ position: absolute;
|
|
|
|
+ bottom: 0px;
|
|
|
|
+ min-width: 56px;
|
|
|
|
+ align-self: center;
|
|
|
|
+ height: 4px;
|
|
|
|
+ background-color: rgb(29, 155, 240);
|
|
|
|
+ display: none`;
|
|
|
|
+
|
|
|
|
+ let groupTab = document.createElement('div');
|
|
|
|
+ groupTab.innerHTML = `Group`;
|
|
|
|
+ groupTab.id = 'de-nav-tab-group';
|
|
|
|
+ groupTab.style.cssText = `z-index: 1;
|
|
|
|
+ position: relative;
|
|
|
|
+ display: flex;
|
|
|
|
+ min-width: 56px;
|
|
|
|
+ -webkit-box-pack: center;
|
|
|
|
+ justify-content: center;
|
|
|
|
+ -webkit-box-align: center;
|
|
|
|
+ align-items: center;
|
|
|
|
+ text-align: center;
|
|
|
|
+ padding: 0px 16px;
|
|
|
|
+ color: rgb(83, 100, 113);
|
|
|
|
+ font-weight: 700;
|
|
|
|
+ height: 53px;
|
|
|
|
+ cursor: pointer;
|
|
|
|
+ font: 500 15px / 20px TwitterChirp, -apple-system, "system-ui", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;`;
|
|
|
|
+ groupTab.appendChild(lineDom);
|
|
|
|
+ tabListDom.appendChild(groupTab);
|
|
|
|
+
|
|
|
|
+ groupTab.addEventListener('mouseenter', function() {
|
|
|
|
+ groupTab.style.background = 'rgba(15, 20, 25, 0.1)'
|
|
|
|
+ });
|
|
|
|
+ groupTab.addEventListener('mouseleave', function() {
|
|
|
|
+ groupTab.style.background = 'none'
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ addGroupTabEventListener({groupTab});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ addTweetTabEventListener({
|
|
|
|
+ tabListDom
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ addTabGroupContent();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ *
|
|
|
|
+ * Group tab点击事件监听
|
|
|
|
+ */
|
|
|
|
+const addGroupTabEventListener = (params) => {
|
|
|
|
+ let {groupTab} = params;
|
|
|
|
+ groupTab.addEventListener('click', function() {
|
|
|
|
+ setGroupTabSelfStyle({groupColor: 'rgb(15, 20, 25)',
|
|
|
|
+ groupFontWeight: '700',
|
|
|
|
+ lineDisplay: 'block'});
|
|
|
|
+
|
|
|
|
+ setTweetActiveTabStyle({
|
|
|
|
+ color: 'rgb(83, 100, 113)',
|
|
|
|
+ display: 'none'});
|
|
|
|
+
|
|
|
|
+ setTabContentStyle({
|
|
|
|
+ tweetTabContentDisply: 'none',
|
|
|
|
+ iframeContentDisplay: 'block'});
|
|
|
|
+
|
|
|
|
+ refreshTabGroup();
|
|
|
|
+
|
|
|
|
+ window.addEventListener('scroll', addPageScrollEvent)
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+const addPageScrollEvent = () => {
|
|
|
|
+ let wrapperDom = document.querySelector('html');
|
|
|
|
+ let contentDom = document.querySelector('main[role="main"]');
|
|
|
|
+ let data = {
|
|
|
|
+ wrapperHeight: wrapperDom.offsetHeight,
|
|
|
|
+ wrapperScrollTop: wrapperDom.scrollTop,
|
|
|
|
+ contentHeight: contentDom.offsetHeight
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ chrome.runtime.sendMessage({ actionType: "CONTENT_GROUP_LIST_SCROLL",
|
|
|
|
+ data: data}, () => {});
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ *
|
|
|
|
+ * twitter tab点击事件监听
|
|
|
|
+ */
|
|
|
|
+const addTweetTabEventListener = (params) => {
|
|
|
|
+ let {tabListDom} = params;
|
|
|
|
+ let groupItemTab = document.querySelector('#de-nav-tab-group');
|
|
|
|
+
|
|
|
|
+ if(tabListDom && groupItemTab) {
|
|
|
|
+ // 监听twitter tab点击事件
|
|
|
|
+ let tweetTabItem = tabListDom.querySelectorAll('div[role="presentation"]');
|
|
|
|
+ if(tweetTabItem.length) {
|
|
|
|
+ for(let i = 0; i < tweetTabItem.length; i++) {
|
|
|
|
+ let item = tweetTabItem[i];
|
|
|
|
+ item.addEventListener('click', function() {
|
|
|
|
+ window.removeEventListener('scroll', addPageScrollEvent);
|
|
|
|
+
|
|
|
|
+ setGroupTabSelfStyle({groupColor: 'rgb(83, 100, 113)',
|
|
|
|
+ groupFontWeight: '500',
|
|
|
|
+ lineDisplay: 'none'});
|
|
|
|
+
|
|
|
|
+ setTabContentStyle({
|
|
|
|
+ tweetTabContentDisply: 'block',
|
|
|
|
+ iframeContentDisplay: 'none'});
|
|
|
|
+
|
|
|
|
+ setTweetActiveTabStyle({
|
|
|
|
+ color: 'rgb(15, 20, 25)',
|
|
|
|
+ display: 'block'});
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 设置 Group Tab 样式
|
|
|
|
+ */
|
|
|
|
+const setGroupTabSelfStyle = (params = {}) => {
|
|
|
|
+ let {groupColor, groupFontWeight, lineDisplay} = params;
|
|
|
|
+ let groupTab = document.querySelector('#de-nav-tab-group');
|
|
|
|
+ groupTab.style.color = groupColor;
|
|
|
|
+ groupTab.style.fontWeight = groupFontWeight;
|
|
|
|
+
|
|
|
|
+ let lineDom = groupTab.querySelector('#de-tab-line');
|
|
|
|
+ if(lineDom) {
|
|
|
|
+ lineDom.style.display = lineDisplay;
|
|
|
|
+ }
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 切换到 Group tab时 刷新列表
|
|
|
|
+ */
|
|
|
|
+const refreshTabGroup = () => {
|
|
|
|
+ chrome.runtime.sendMessage({ actionType: "CONTENT_REFRESH_TAB_GROUP_LIST",
|
|
|
|
+ data:{}}, () => { });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ *
|
|
|
|
+ * tab选中时设置 激活 的字体样式和选中条
|
|
|
|
+ */
|
|
|
|
+const setTweetActiveTabStyle = (params) => {
|
|
|
|
+ let {color, display} = params || {};
|
|
|
|
+ let tweetActiveTab = document.querySelector('a[aria-selected="true"]').querySelector('div');
|
|
|
|
+ tweetActiveTab.style.color = color;
|
|
|
|
+
|
|
|
|
+ let tweetTabLine = tweetActiveTab.querySelector('div');
|
|
|
|
+ if(tweetTabLine) {
|
|
|
|
+ tweetTabLine.style.display = display;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ *
|
|
|
|
+ * 设置 tab 切换时 tab内容的样式(显示隐藏)
|
|
|
|
+ */
|
|
|
|
+const setTabContentStyle = (params) => {
|
|
|
|
+ let {tweetTabContentDisply, iframeContentDisplay} = params;
|
|
|
|
+ let tweetTabContent = getTweetTabContent();
|
|
|
|
+ if(tweetTabContent) {
|
|
|
|
+ if(tweetTabContentDisply == 'block') {
|
|
|
|
+ let {display} = tweetTabContent.style;
|
|
|
|
+ if(display == 'none') {
|
|
|
|
+ tweetTabContent.style.display = 'block';
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ tweetTabContent.style.display = tweetTabContentDisply;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ tweetTabContent = document.querySelector('div[data-testid="emptyState"]');
|
|
|
|
+ if(tweetTabContent) {
|
|
|
|
+ tweetTabContent.style.display = tweetTabContentDisply;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ let iframeContent = document.getElementById('de-tab-group-content');
|
|
|
|
+
|
|
|
|
+ if(!iframeContent) {
|
|
|
|
+ addTabGroupContent();
|
|
|
|
+ }
|
|
|
|
+ setTimeout(() => {
|
|
|
|
+ iframeContent = document.getElementById('de-tab-group-content');
|
|
|
|
+ if(iframeContent) {
|
|
|
|
+ iframeContent.style.display = iframeContentDisplay;
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ *
|
|
|
|
+ * 获取 twitter tab 下的内容
|
|
|
|
+ */
|
|
|
|
+const getTweetTabContent = () => {
|
|
|
|
+ let tweetTabContent = document.querySelector('[data-testid="primaryColumn"] [role="navigation"] + * > div[aria-label]:not([role="progressbar"])');
|
|
|
|
+ return tweetTabContent;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 注入 Group List 内容
|
|
|
|
+ */
|
|
|
|
+const addTabGroupContent = () => {
|
|
|
|
+ let iframe = document.createElement('iframe');
|
|
|
|
+ iframe.id = 'de-tab-group-content';
|
|
|
|
+ iframe.src = chrome.runtime.getURL('/iframe/tab-group.html');
|
|
|
|
+ iframe.style.cssText = `border: medium none; height: 500px;display: none`
|
|
|
|
+
|
|
|
|
+ let iframeContent = document.getElementById('de-tab-group-content');
|
|
|
|
+
|
|
|
|
+ let tweetTabContent = getTweetTabContent();
|
|
|
|
+ if (!iframeContent) {
|
|
|
|
+ if(tweetTabContent && tweetTabContent.parentElement) {
|
|
|
|
+ tweetTabContent.parentElement.appendChild(iframe);
|
|
|
|
+ } else {
|
|
|
|
+ tweetTabContent = document.querySelector('div[data-testid="emptyState"]');
|
|
|
|
+ if(tweetTabContent && tweetTabContent.parentElement) {
|
|
|
|
+ tweetTabContent.parentElement.appendChild(iframe);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ *
|
|
|
|
+ * 设置Tab Group Iframe 样式
|
|
|
|
+ */
|
|
|
|
+export const setTabGroupIframeStyle = (params) => {
|
|
|
|
+ let {height = 0} = params;
|
|
|
|
+ // if(height > 0) {
|
|
|
|
+ let iframeContent = document.getElementById('de-tab-group-content');
|
|
|
|
+ // iframeContent.style.height = height + 'px';
|
|
|
|
+ iframeContent.style.height = document.querySelector('html').offsetHeight + 'px';
|
|
|
|
+ // }
|
|
}
|
|
}
|