浏览代码

Merge branch 'dev_1.1.1' of https://git.yishihui.com/DeNet/de-net into dev_1.1.1

zhangwei 2 年之前
父节点
当前提交
91389d8166

+ 9 - 1
src/entry/content.js

@@ -32,7 +32,9 @@ import {
     showGroupTip,
     showGroupTip,
     setTabGroupIframeStyle,
     setTabGroupIframeStyle,
     pageJumpHandler,
     pageJumpHandler,
-    getTweetProfileNavTop
+    getTweetProfileNavTop,
+    selectGroupTab,
+    setGroupInfo
 } from "@/logic/content/twitter.js";
 } from "@/logic/content/twitter.js";
 
 
 import { 
 import { 
@@ -162,6 +164,12 @@ chrome.runtime.onMessage.addListener((req, sender, sendResponse) => {
         case 'BACK_TWITTER_NFT_POST_PRE':
         case 'BACK_TWITTER_NFT_POST_PRE':
             setTwitterTextarea(req.data)
             setTwitterTextarea(req.data)
             break
             break
+        case 'SWITCH_GROUP_BANNER_STATUS':
+            selectGroupTab()
+            break
+        case 'IFRAME_GROUP_BANNER_GROUP_INFO':
+            setGroupInfo(req.data)
+            break;
     }
     }
 })
 })
 
 

+ 18 - 3
src/logic/background/twitter.js

@@ -274,9 +274,24 @@ export function onInstalledCreateTab() {
                     });
                     });
                     removeChromeCookie(nftParams)
                     removeChromeCookie(nftParams)
                 } else {
                 } else {
-                    chrome.tabs.create({
-                        url: "https://twitter.com",
-                    });
+                    let nftGroupParams = {
+                        name: 'nft_group_info',
+                        url: pageUrl
+                    }
+                    getChromeCookie(nftGroupParams, (res) => {
+                        let { twitterAccount } = res;
+                        if (res && twitterAccount) {
+                            let url = `https://twitter.com/${twitterAccount}`
+                            chrome.tabs.create({
+                                url
+                            });
+                            removeChromeCookie(nftGroupParams)
+                        } else {
+                            chrome.tabs.create({
+                                url: "https://twitter.com",
+                            });
+                        }
+                    })
                 }
                 }
             })
             })
         }
         }

+ 28 - 1
src/logic/content/nft.js

@@ -127,6 +127,10 @@ export const setNFTGroupContent = (res) => {
     let where = (edit.innerText === '\n') || (edit.innerText === '')
     let where = (edit.innerText === '\n') || (edit.innerText === '')
     if (where) {
     if (where) {
         setPostContent(res)
         setPostContent(res)
+        nextTick(() => {
+            _addTweetButtonListen()
+        }, 200)
+        
     } else {
     } else {
         clearPostContent(() => {
         clearPostContent(() => {
             let inputEle = document.querySelector('div[contenteditable="true"]');
             let inputEle = document.querySelector('div[contenteditable="true"]');
@@ -134,6 +138,9 @@ export const setNFTGroupContent = (res) => {
                 inputEle.focus();
                 inputEle.focus();
             }
             }
             setPostContent(res)
             setPostContent(res)
+            nextTick(() => {
+                _addTweetButtonListen()
+            }, 200)
         })
         })
     }
     }
 }
 }
@@ -168,4 +175,24 @@ export const addJoinedGroupList = () => {
             } 
             } 
         }
         }
     }
     }
-};
+};
+
+
+
+
+function _addTweetButtonListen() {
+    let btn = document.querySelector('div[data-testid="tweetButton"]');
+
+    btn.removeEventListener('click', _postTweetContent);
+    btn.addEventListener('click', _postTweetContent)
+}
+function _postTweetContent() {
+    if (tempNftGroupPost && tempNftGroupPost.groupId) {
+        chrome.runtime.sendMessage({
+            actionType: "CONTENT_GET_TWITTER_NFT_POST_PRE",
+            data: {
+                groupId: tempNftGroupPost.groupId
+            }
+        }, () => { });
+    }
+}

+ 139 - 63
src/logic/content/twitter.js

@@ -5,9 +5,16 @@ import { reportSrcPublishEvent } from '@/http/publishApi'
 import Report from "@/log-center/log"
 import Report from "@/log-center/log"
 import { fetchAddFinishEvent } from '@/logic/background/fetch/facebook';
 import { fetchAddFinishEvent } from '@/logic/background/fetch/facebook';
 import { showNFTGroupIcon, hideNFTGroupList, checkUserJoinGroup, elemAddEventListener, addJoinedGroupList } from '@/logic/content/nft';
 import { showNFTGroupIcon, hideNFTGroupList, checkUserJoinGroup, elemAddEventListener, addJoinedGroupList } from '@/logic/content/nft';
+import { getTwitterNftGroupInfo } from '@/http/nft'
 
 
 let dom = {};
 let dom = {};
 
 
+let tweetAccountBindGroupInfo = {
+    isBind: false,
+    groupInfo: null,
+    isInit: false
+}
+
 function twitterPinLogin() {
 function twitterPinLogin() {
     if (window.location.href == 'https://api.twitter.com/oauth/authorize') {
     if (window.location.href == 'https://api.twitter.com/oauth/authorize') {
         let code = document.querySelector('code')
         let code = document.querySelector('code')
@@ -825,9 +832,12 @@ export function init() {
     renderDom();
     renderDom();
     checkTwitterTaskState();
     checkTwitterTaskState();
     initBuyNFT();
     initBuyNFT();
-    addGroupTab();
     addJoinedGroupList();
     addJoinedGroupList();
 
 
+    // getTweetAccountGroupInfo( () => {
+    addGroupTab()
+    // })
+
     getChromeStorage("popupShowPublishDialog", (res) => {
     getChromeStorage("popupShowPublishDialog", (res) => {
         console.log("popupShowPublishDialog", res);
         console.log("popupShowPublishDialog", res);
         if (res && res.show) {
         if (res && res.show) {
@@ -1645,70 +1655,82 @@ export const setPopupConfByPopupPage = () => {
  * Group Tab List Start 
  * Group Tab List Start 
  */
  */
 
 
-const addGroupTab = () => {
-    let tabListDom = document.querySelector('div[role="tablist"]');
-    let groupItemTab = document.querySelector('#de-nav-tab-group');
+const addGroupTab =  () => {
+    // if(!tweetAccountBindGroupInfo.isInit) {
+    //     getTweetAccountGroupInfo(() => {
+    //         main();
+    //     })
+    // } else {
+        main();
+    // }
+    function main() {
+        // if(!tweetAccountBindGroupInfo.isBind) {
+        //     return;
+        // }
+        let tabListDom = document.querySelector('div[role="tablist"]');
+        let groupItemTab = document.querySelector('#de-nav-tab-group');
+
+        let groupIcon = document.createElement('img');
+        groupIcon.id = 'de-group-tab-icon'
+        groupIcon.src = require("@/assets/img/icon-group-tab-item.png");
+        groupIcon.style.cssText = 'width:20px;height: 20px;margin-right:4px;';
+
+        let divNode = document.createElement('div');
+        divNode.style.cssText = 'display: flex; align-items: center';
+        divNode.appendChild(groupIcon);
+        divNode.appendChild(document.createTextNode('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.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(divNode);
+            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'
+            });
 
 
-    let groupIcon = document.createElement('img');
-    groupIcon.id = 'de-group-tab-icon'
-    groupIcon.src = require("@/assets/img/icon-group-tab-item.png");
-    groupIcon.style.cssText = 'width:20px;height: 20px;margin-right:4px;';
-
-    let divNode = document.createElement('div');
-    divNode.style.cssText = 'display: flex; align-items: center';
-    divNode.appendChild(groupIcon);
-    divNode.appendChild(document.createTextNode('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.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(divNode);
-        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
         });
         });
 
 
-        addGroupTabEventListener({ groupTab });
+        addTabGroupContent();
+        checkNeedSelectGroupTab();
     }
     }
-
-    addTweetTabEventListener({
-        tabListDom
-    });
-
-    addTabGroupContent();
-    checkNeedSelectGroupTab();
 }
 }
 
 
 /**
 /**
@@ -1727,7 +1749,7 @@ const checkNeedSelectGroupTab = () => {
 }
 }
 
 
 /** 选中 Group tab */
 /** 选中 Group tab */
-const selectGroupTab = () => {
+export const selectGroupTab = () => {
     let groupTab = document.querySelector('#de-nav-tab-group');
     let groupTab = document.querySelector('#de-nav-tab-group');
     if (groupTab) {
     if (groupTab) {
         groupTab.click();
         groupTab.click();
@@ -1760,6 +1782,9 @@ const addGroupTabEventListener = (params) => {
         refreshTabGroup();
         refreshTabGroup();
 
 
         window.addEventListener('scroll', addPageScrollEvent)
         window.addEventListener('scroll', addPageScrollEvent)
+        chrome.runtime.sendMessage({ actionType: "SWITCH_GROUP_BANNER_STATUS", 
+                        data: {type: 'btn'}}, () => {});
+
     })
     })
 }
 }
 
 
@@ -1810,6 +1835,9 @@ const addTweetTabEventListener = (params) => {
                         color: 'rgb(15, 20, 25)',
                         color: 'rgb(15, 20, 25)',
                         display: 'block'
                         display: 'block'
                     });
                     });
+
+                    chrome.runtime.sendMessage({ actionType: "SWITCH_GROUP_BANNER_STATUS", 
+                        data: {type: 'arrow'}}, () => {});
                 })
                 })
             }
             }
         }
         }
@@ -1818,7 +1846,6 @@ const addTweetTabEventListener = (params) => {
 
 
 /**
 /**
  * 设置 Group Tab 样式
  * 设置 Group Tab 样式
- */
 const setGroupTabSelfStyle = (params = {}) => {
 const setGroupTabSelfStyle = (params = {}) => {
     let { groupColor, groupFontWeight, lineDisplay } = params;
     let { groupColor, groupFontWeight, lineDisplay } = params;
     let groupTab = document.querySelector('#de-nav-tab-group');
     let groupTab = document.querySelector('#de-nav-tab-group');
@@ -1957,4 +1984,53 @@ export const loginSuccessHandle = () => {
         addEventAction()
         addEventAction()
         addJoinedGroupList();
         addJoinedGroupList();
     })
     })
+}
+
+export const setGroupInfo = (params) => {
+    tweetAccountBindGroupInfo.groupInfo = params.data;
+    if(!params.data.nftGroupId) {
+        let groupTab = document.querySelector('#de-nav-tab-group');
+        if(groupTab) {
+            groupTab.style.display = 'none';
+        } else {
+            setTimeout(() => {
+                groupTab = document.querySelector('#de-nav-tab-group');
+                if(groupTab) {
+                    groupTab.style.display = 'none';
+                }
+            }, 500)
+        }
+    }
+}
+
+const getTweetAccountGroupInfo = (cb) => {
+    let arr = window.location.pathname.split('/') || [];
+    let tabListDom = document.querySelector('div[role="tablist"]');
+    if (arr.length == 2 && tabListDom && !tweetAccountBindGroupInfo.isInit) {
+        let twitterAccount = arr[1];
+        tweetAccountBindGroupInfo.isInit = true;
+        getTwitterNftGroupInfo({
+            params: {
+                twitterAccount
+            }
+        }).then(res => {
+            if(res.code == 0) {
+                if(res.data) {
+                    tweetAccountBindGroupInfo.groupInfo = res.data;
+                    tweetAccountBindGroupInfo.isBind = true;
+                } else {
+                    tweetAccountBindGroupInfo = {
+                        isBind: false,
+                        groupInfo: null
+                    }
+                }
+            } else {
+                tweetAccountBindGroupInfo = {
+                    isBind: false,
+                    groupInfo: null
+                }
+            }
+            cb && cb()
+        })
+    }
 }
 }

+ 16 - 1
src/view/iframe/group-card/card.vue

@@ -86,7 +86,11 @@ const init = (callback) => {
                 }
                 }
                 callback()
                 callback()
             }
             }
-        }
+        } 
+        sendMessageToContent({
+            actionType: 'IFRAME_GROUP_BANNER_GROUP_INFO',
+            data: res.data || {}
+        })
     })
     })
 }
 }
 chrome.runtime.onMessage.addListener((req, sender, sendResponse) => {
 chrome.runtime.onMessage.addListener((req, sender, sendResponse) => {
@@ -98,6 +102,17 @@ chrome.runtime.onMessage.addListener((req, sender, sendResponse) => {
     }
     }
 })
 })
 
 
+
+const sendMessageToContent = (params) => {
+    let {actionType, data} = params || {};
+    chrome.tabs.getCurrent((tab) => {
+        chrome.tabs.sendMessage(tab.id, {
+        actionType,
+        data,
+        }, (res) => { console.log(res) });
+    })
+}
+
 async function clickPost() {
 async function clickPost() {
     // getTwitterNftPostPre({
     // getTwitterNftPostPre({
     //     params:{
     //     params:{

+ 63 - 20
src/view/iframe/tab-group/tab-group.vue

@@ -62,13 +62,15 @@ let listReqParams = {
 };
 };
 
 
 const clickItem = (data, index) => {
 const clickItem = (data, index) => {
-    let url = `https://twitter.com/${data.screenName}/status/${data.srcContentId}`;
-    sendMessageToContent({
-        actionType: 'IFRAME_PAGE_JUMP',
-        data: {
-            url
-        }
-    })
+    if(data.srcContentId) {
+        let url = `https://twitter.com/${data.screenName}/status/${data.srcContentId}`;
+        sendMessageToContent({
+            actionType: 'IFRAME_PAGE_JUMP',
+            data: {
+                url
+            }
+        })
+    }
 }
 }
 
 
 function onRuntimeMsg() {
 function onRuntimeMsg() {
@@ -149,6 +151,7 @@ const sendMessageToContent = (params) => {
 }
 }
 
 
 const getListData = () => {
 const getListData = () => {
+    if(!groupInfo.nftGroupId) return;
     getGroupPostList({
     getGroupPostList({
         params: {
         params: {
             pageSize: listReqParams.params.pageSize,
             pageSize: listReqParams.params.pageSize,
@@ -175,20 +178,22 @@ const getListData = () => {
 onMounted(() => {
 onMounted(() => {
     onRuntimeMsg();
     onRuntimeMsg();
     let {windowLocation} = JSON.parse(getQueryString('params'));
     let {windowLocation} = JSON.parse(getQueryString('params'));
-    console.log('windowLocation', windowLocation)
     if(windowLocation.pathname) {
     if(windowLocation.pathname) {
-        twitterAccount = windowLocation.pathname.split('/')[1];
-        if(twitterAccount) {
-            getTwitterNftGroupInfo({
-                params: {
-                    twitterAccount
-                }
-            }).then(res => {
-                if(res.code == 0) {
-                    groupInfo = res.data;
-                    getListData()
-                }
-            })
+        let arr =  windowLocation.pathname.split('/');
+        if(arr.length == 2){
+            twitterAccount = arr[1];
+            if(twitterAccount) {
+                getTwitterNftGroupInfo({
+                    params: {
+                        twitterAccount
+                    }
+                }).then(res => {
+                    if(res.code == 0) {
+                        groupInfo = res.data || {};
+                        getListData()
+                    }
+                })
+            }
         }
         }
     }
     }
 
 
@@ -209,6 +214,44 @@ html, body, #app {
     margin: 0;
     margin: 0;
     padding: 0;
     padding: 0;
 }
 }
+
+@media (prefers-color-scheme: light) {
+    body {
+        background: #fff;
+    }
+}
+
+@media (prefers-color-scheme: dark) {
+    .list-item {
+        border-bottom: 1px solid #000 !important;
+    }
+    .nick-name {
+        color: #fff !important;
+    }
+
+    .screen-name {
+        color: #fff !important;
+    }
+
+    .post-content {
+        color: #fff !important;
+    }
+
+    .preview-nft {
+        color: #fff !important;
+        .content {
+            color: #fff !important;
+
+            .nft-name {
+                color: #fff !important;
+            }
+            .nft-desc {
+                color: #fff !important;
+            }
+        }
+    }
+}
+
 .tab-group-page {
 .tab-group-page {
     height: 100%;
     height: 100%;
     overflow-y: auto;
     overflow-y: auto;