Browse Source

[edit] back js

wenliming 3 years ago
parent
commit
4e250680f2

+ 34 - 86
src/entry/background.js

@@ -1,71 +1,17 @@
 // 此文件不要写具体逻辑,只调用函数
-import { pageUrl } from '@/http/configAPI'
 import {
     twitterShortUrl,
     twitterPinLoginToken,
     twitterPinLoginCode,
     onInstalledMid,
-    onInstalledUserSet
+    onInstalledUserSet,
+    onInstalledCreateTab,
+    checkPined,
+    popupRePublish,
+    setBadgeInfo,
+    hideBadge
 } from "@/logic/background/twitter";
 
-import { setChromeStorage, getChromeCookie , removeChromeCookie } from "@/uilts/chromeExtension";
-
-
-chrome.runtime.onInstalled.addListener(onInstalledMethod);
-
-chrome.runtime.onMessage.addListener(onMessageMethod);
-
-function onInstalledMethod() {
-    let cookiesParams = {
-        name: 'pickup_info',
-        url: pageUrl
-    }
-    getChromeCookie(cookiesParams, (res) => {
-        let { postNickName, srcContentId } = res;
-        if (res && postNickName && srcContentId) {
-            let url = `https://twitter.com/${postNickName}/status/${srcContentId}`
-            chrome.tabs.create({
-                url
-            });
-            removeChromeCookie(cookiesParams)
-        } else {
-            chrome.tabs.create({
-                url: "https://twitter.com",
-            });
-        }
-    })  
-    onInstalledMid()
-    onInstalledUserSet()
-}
-
-function onMessageMethod(req, sender, sendResponse) {
-    if (req) {
-        switch (req.method) {
-            case "POPUP_LOGIN":
-                popupLogin(sendResponse);
-                break;
-            case "POPUP_PUBLISH_TWITTER_RED_PACK":
-                setChromeStorage({
-                    popupShowPublishDialog: JSON.stringify({
-                        show: true,
-                        srcContent: req.data.srcContent,
-                        postId: req.data.postId
-                    }),
-                });
-                chrome.tabs.create({
-                    url: "https://twitter.com",
-                });
-                break;
-        }
-    }
-    return true; // remove this line to make the call sync!
-}
-
-//
-function popupLogin() {
-    twitterPinLoginToken();
-}
-
 // 消息通讯
 chrome.runtime.onConnect.addListener(function (port) {
     port.onMessage.addListener(function (res) {
@@ -83,33 +29,35 @@ chrome.runtime.onConnect.addListener(function (port) {
     });
 });
 
-chrome.runtime.onMessage.addListener((req, sender, sendResponse) => {
-    sendResponse('');
-    switch (req.actionType) {
-        case 'CONTENT_GET_PINED':
-            chrome.action.getUserSettings(res => {
-                let { isOnToolbar } = res;
-                console.log('isOnToolbar', isOnToolbar)
-                if (!isOnToolbar) {
-                    sendActivetabMessage({
-                        actionType: 'BG_SHOW_PIN_TIPS'
-                    });
-                }
-            })
-            break;
-    }
-})
+chrome.runtime.onInstalled.addListener(onInstalledMethod);
 
+chrome.runtime.onMessage.addListener(onMessageMethod);
 
-function sendActivetabMessage(message = {}) {
-    chrome.tabs.query({
-        active: true,
-        currentWindow: true
-    }, (tabs) => {
-        chrome.tabs.sendMessage(tabs[0].id, message, res => {
-            console.log(res)
-        })
-    })
+function onInstalledMethod() {
+    onInstalledCreateTab()
+    onInstalledMid()
+    onInstalledUserSet()
 }
 
-
+function onMessageMethod(req, sender, sendResponse) {
+    sendResponse('');
+    if (req) {
+        switch (req.actionType) {
+            case "POPUP_LOGIN":
+                twitterPinLoginToken();
+                break;
+            case "POPUP_PUBLISH_TWITTER_RED_PACK":
+                popupRePublish(req);
+                break;
+            case 'CONTENT_GET_PINED':
+                checkPined();
+                break;
+            case 'CONTENT_SET_BADGE':
+                setBadgeInfo(req);
+                break;
+            case 'CONTENT_HIDE_BADGE':
+                hideBadge();
+                break;
+        }
+    }
+}

+ 80 - 1
src/logic/background/twitter.js

@@ -1,6 +1,7 @@
 import { fetchTtwitterRequestToken, fetchTwitterLogin, fetchTwitterShortUrl } from '@/logic/background/fetch/twitter.js'
-import { LANDING_PAGE, LANDING_PAGE_MID, setChromeStorage, setChromeCookie, getChromeCookie ,getChromeStorage} from '@/uilts/chromeExtension.js'
+import { LANDING_PAGE, LANDING_PAGE_MID, setChromeStorage, setChromeCookie, getChromeCookie ,getChromeStorage, removeChromeCookie} from '@/uilts/chromeExtension.js'
 import { guid } from '@/uilts/help.js'
+import { pageUrl } from '@/http/configAPI'
 
 let authToken = ''
 export function twitterPinLoginToken() {
@@ -131,4 +132,82 @@ export function onInstalledUserSet() {
             }
         })
     })
+}
+
+/**
+ * 检查是否pined 显示tips
+ */
+export function checkPined() {
+    chrome.action.getUserSettings(res => {
+        let { isOnToolbar } = res;
+        if (!isOnToolbar) {
+            sendActivetabMessage({
+                actionType: 'BG_SHOW_PIN_TIPS'
+            });
+        }
+    })
+}
+
+function sendActivetabMessage(message = {}) {
+    chrome.tabs.query({
+        active: true,
+        currentWindow: true
+    }, (tabs) => {
+        chrome.tabs.sendMessage(tabs[0].id, message, res => {
+            console.log(res)
+        })
+    })
+}
+
+
+/**
+ * 安装后打开新标签页
+ */
+export function onInstalledCreateTab() {
+    let cookiesParams = {
+        name: 'pickup_info',
+        url: pageUrl
+    }
+    getChromeCookie(cookiesParams, (res) => {
+        let { postNickName, srcContentId } = res;
+        if (res && postNickName && srcContentId) {
+            let url = `https://twitter.com/${postNickName}/status/${srcContentId}`
+            chrome.tabs.create({
+                url
+            });
+            removeChromeCookie(cookiesParams)
+        } else {
+            chrome.tabs.create({
+                url: "https://twitter.com",
+            });
+        }
+    })
+}
+
+/**
+ * 在popop重新发送
+ * @param {*} req 
+ */
+export function popupRePublish(req) {
+    setChromeStorage({
+        popupShowPublishDialog: JSON.stringify({
+            show: true,
+            srcContent: req.data.srcContent,
+            postId: req.data.postId
+        }),
+    });
+    chrome.tabs.create({
+        url: "https://twitter.com",
+    });
+}
+
+export function setBadgeInfo() {
+    let {text = '', color = [255, 0, 0, 255]} = req.data || {};
+    chrome.action.setBadgeText({text: text});
+    chrome.action.setBadgeBackgroundColor({color: color });
+}
+
+export function hideBadge() {
+    chrome.action.setBadgeText({text: ''});
+    chrome.action.setBadgeBackgroundColor({color: [0, 0, 0, 0]});
 }

+ 10 - 1
src/logic/content/twitter.js

@@ -249,7 +249,7 @@ function _addIframe() {
     let iframe = document.createElement('iframe');
     iframe.src = chrome.runtime.getURL('/iframe/publish.html')
     iframe.id = 'iframe-content'
-    iframe.style.cssText = 'position:fixed;top:0px;right:0;display:block; width:100%;height:100%;z-index:0; border: medium none;display:none';
+    iframe.style.cssText = 'position:fixed;top:0px;right:0;display:block; width:100%;height:100%;z-index:10000; border: medium none;display:none';
     // shadowRoot.appendChild(iframe);
     // document.body.appendChild(span)
     dom.iframe = iframe;
@@ -384,6 +384,15 @@ function _createBtnDom(port) {
     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,

+ 2 - 3
src/view/iframe/publish/components/preview-card.vue

@@ -95,7 +95,6 @@ import { ref, defineProps, onMounted, nextTick, watch, reactive } from "vue";
 import customCardCover from '@/view/components/custom-card-cover.vue'
 
 import {getChromeStorage} from "@/uilts/chromeExtension"
-import { throttle } from "@/uilts/help"
 import {getUser} from "@/http/publishApi"
 
 let userInfo = ref({});
@@ -195,9 +194,9 @@ onMounted(() => {
             installStatus.value = !installStatus.value;
         }, 3000)
     });
-    window.addEventListener('resize', throttle(function () {
+    window.addEventListener('resize',function () {
         calcPreviewCanvasParams();
-    }, 300))
+    })
 })
 
 </script>

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

@@ -673,7 +673,7 @@ function checkIsLogin() {
           data.loading_show = false
         }, 3000)
         chrome.runtime.sendMessage(
-          { method: "POPUP_LOGIN", data: "" },
+          { actionType: "POPUP_LOGIN", data: "" },
           (response) => {
             console.log("res", response);
           }

+ 2 - 2
src/view/popup/popup.vue

@@ -439,9 +439,9 @@ const login = () => {
 /**
  * sendMessage
  */
-const callEventPageMethod = (method, data, callback) => {
+const callEventPageMethod = (actionType, data, callback) => {
     chrome.runtime.sendMessage(
-        { method: method, data: data },
+        { actionType: actionType, data: data },
         function (response) {
             if (typeof callback === "function") callback(response);
         }