Browse Source

[edit][公共错误码,重新登录]

zhangwei 2 years ago
parent
commit
90e7c99467

+ 62 - 0
src/http/fetch.js

@@ -0,0 +1,62 @@
+import { appVersionCode, baseAPIUrl } from '@/http/configAPI.js'
+import { getChromeStorage } from '@/uilts/chromeExtension.js'
+
+export async function commonFetch({ url, method = 'POST' , params = {}, baseInfo = {}}) {
+
+    let storage_mid = await getChromeStorage('mid') || ''
+    const { mid } = storage_mid || {}
+    if (!baseInfo.token || !baseInfo.uid) {
+        const { accessToken: token = '', uid = '' } = await getChromeStorage('userInfo') || {}
+        baseInfo.token = token
+        baseInfo.uid = uid
+    }
+    baseInfo.mid = mid
+    baseInfo.appVersionCode = appVersionCode
+    baseInfo.machineCode = mid
+    baseInfo.appType = 1
+    baseInfo.loginUid = baseInfo.uid
+
+    return new Promise(function (resolve, reject) {
+        let _url = baseAPIUrl + url
+        fetch(_url, {
+            method: method, // or 'PUT'
+            headers: {
+                'Content-Type': 'application/json',
+            },
+            body: JSON.stringify({
+                "baseInfo": baseInfo,
+                "params": params
+            }),
+        })
+            .then(response => response.json())
+            .then(data => {
+                switch (data.code.toString()) {
+                    // twitter授权失效
+                    case '1003':
+                        chrome.storage.local.remove("userInfo");
+                        chrome.runtime.sendMessage(
+                            { actionType: "POPUP_LOGIN", data: "" },
+                            (response) => {
+                                console.log("res", response);
+                            }
+                        )
+                        break;
+                    // 登陆token失效
+                    case '-107':
+                        chrome.storage.local.remove("userInfo");
+                        chrome.runtime.sendMessage(
+                            { actionType: "POPUP_LOGIN", data: "" },
+                            (response) => {
+                                console.log("res", response);
+                            }
+                        )
+                        break;
+                }
+
+                resolve(data);
+            })
+            .catch((error) => {
+                reject(error);
+            });
+    })
+}

+ 22 - 0
src/http/request.js

@@ -91,6 +91,28 @@ service.interceptors.request.use(async (config) => {
 service.interceptors.response.use(
   response => {
     const res = response.data;
+    switch (res.code.toString()) {
+      // twitter授权失效
+      case '1003':
+        chrome.storage.local.remove("userInfo");
+        chrome.runtime.sendMessage(
+          { actionType: "POPUP_LOGIN", data: "" },
+          (response) => {
+            console.log("res", response);
+          }
+        )
+        break;
+      // 登陆token失效
+      case '-107':
+        chrome.storage.local.remove("userInfo");
+        chrome.runtime.sendMessage(
+          { actionType: "POPUP_LOGIN", data: "" },
+          (response) => {
+            console.log("res", response);
+          }
+        )
+        break;
+    }    
     return res
   },
   error => {

+ 40 - 151
src/logic/background/fetch/twitter.js

@@ -1,67 +1,23 @@
-import { appVersionCode, baseAPIUrl } from '@/http/configAPI.js'
+import { commonFetch } from '@/http/fetch.js'
 import { getChromeStorage } from '@/uilts/chromeExtension.js'
-
 export async function fetchTtwitterRequestToken() {
-    let storage_mid = await getChromeStorage('mid') || ''
-    const { mid } = storage_mid || {}
-    return new Promise(function (resolve, reject) {
-        let _url = `${baseAPIUrl}/user/twitterRequestToken`
-        fetch(_url, {
-            method: 'POST', // or 'PUT'
-            headers: {
-                'Content-Type': 'application/json',
-            },
-            body: JSON.stringify({
-                "baseInfo": {
-                    appVersionCode,
-                    mid
-                },
-                "params": {
-                    "oauthCallback": "oob"
-                }
-            }),
-        })
-            .then(response => response.json())
-            .then(data => {
-                resolve(data);
-            })
-            .catch((error) => {
-                reject(error);
-            });
+    return commonFetch({
+        url: '/user/twitterRequestToken',
+        params: {
+            "oauthCallback": "oob"
+        }
     })
 }
 
-export async function fetchTwitterLogin(oauthToken,consumerKey, oauthVerifier, receivedIds = []) {
-    let storage_mid = await getChromeStorage('mid') || ''
-    const { mid } = storage_mid || {}
-    return new Promise(function (resolve, reject) {
-        let _url = `${baseAPIUrl}/user/twitterLogin`
-        fetch(_url, {
-            method: 'POST', // or 'PUT'
-            headers: {
-                'Content-Type': 'application/json',
-            },
-            body: JSON.stringify({
-                "baseInfo": {
-                    appVersionCode,
-                    mid
-                },
-                "params": {
-                    "oauthToken": oauthToken,
-                    "oauthVerifier": oauthVerifier,
-                    "consumerKey":consumerKey,
-                    "receivedIds": receivedIds
-                }
-            }),
-        })
-            .then(response => response.json())
-            .then(data => {
-                resolve(data);
-            })
-            .catch((error) => {
-                reject(error);
-            });
-
+export async function fetchTwitterLogin(oauthToken, consumerKey, oauthVerifier, receivedIds = []) {
+    return commonFetch({
+        url: '/user/twitterLogin',
+        params: {
+            "oauthToken": oauthToken,
+            "oauthVerifier": oauthVerifier,
+            "consumerKey": consumerKey,
+            "receivedIds": receivedIds
+        }
     })
 }
 // 请求推特短链接
@@ -78,112 +34,45 @@ export async function fetchTwitterShortUrl(url) {
 
 
 export async function fetchAllMessageInfo(params = {}) {
-    let storage_mid = await getChromeStorage('mid') || ''
     const { accessToken: token = '', uid = '' } = await getChromeStorage('userInfo') || {}
-    const { mid } = storage_mid || {};
-    return new Promise(function (resolve, reject) {
-        if(!token) {
+    if (!token) {
+        return new Promise(function (resolve, reject) {
             resolve({});
-            return;
-        }
-        let _url = `${baseAPIUrl}/message/getStat`
-        fetch(_url, {
-            method: 'POST', 
-            headers: {
-                'Content-Type': 'application/json',
-            },
-            body: JSON.stringify({
-                "baseInfo": {
-                    appVersionCode,
-                    mid,
-                    machineCode: mid,
-                    token: token,
-                    uid,
-                    loginUid: uid,
-                    appType:1,
-                },
-                "params": params
-            }),
-        }).then(response => response.json())
-            .then(data => {
-                resolve(data);
-            })
-            .catch((error) => {
-                reject(error);
-            });
+        })
+    }
+    return commonFetch({
+        url: '/message/getStat',
+        params
     })
 }
 
 export async function fetchReadTaskAllMsg(params = {}) {
-    let storage_mid = await getChromeStorage('mid') || ''
     const { accessToken: token = '', uid = '' } = await getChromeStorage('userInfo') || {}
-    const { mid } = storage_mid || {};
-    return new Promise(function (resolve, reject) {
-        if(!token) {
+    if (!token) {
+        return new Promise(function (resolve, reject) {
             resolve({});
-            return;
-        }
-        let _url = `${baseAPIUrl}/message/readAllMsgByType`
-        fetch(_url, {
-            method: 'POST', 
-            headers: {
-                'Content-Type': 'application/json',
-            },
-            body: JSON.stringify({
-                "baseInfo": {
-                    appVersionCode,
-                    mid,
-                    machineCode: mid,
-                    token: token,
-                    uid,
-                    loginUid: uid,
-                    appType:1,
-                },
-                "params": params
-            }),
-        }).then(response => response.json())
-            .then(data => {
-                resolve(data);
-            })
-            .catch((error) => {
-                reject(error);
-            });
+        })
+    }
+    return commonFetch({
+        url: '/message/readAllMsgByType',
+        params
     })
 }
 
 
 export async function getDiscordUserInfo(params = {}) {
-    let storage_mid = await getChromeStorage('mid') || ''
     const { accessToken: token = '', uid = '' } = await getChromeStorage('userInfo') || {}
-    const { mid } = storage_mid || {};
-    return new Promise(function (resolve, reject) {
-        if(!token) {
+    if (!token) {
+        return new Promise(function (resolve, reject) {
             resolve({});
-        }
-        let _url = `${baseAPIUrl}/openapi/discord/token`
-        fetch(_url, {
-            method: 'POST', 
-            headers: {
-                'Content-Type': 'application/json',
-            },
-            body: JSON.stringify({
-                "baseInfo": {
-                    appVersionCode,
-                    mid,
-                    machineCode: mid,
-                    token: token,
-                    uid,
-                    loginUid: uid,
-                    appType:1,
-                },
-                "params": params
-            }),
-        }).then(response => response.json())
-            .then(data => {
-                resolve(data);
-            })
-            .catch((error) => {
-                reject(error);
-            });
+        })
+    }
+    return commonFetch({
+        url: '/openapi/discord/token',
+        baseInfo: {
+            token,
+            uid
+        },
+        params
     })
 }

+ 7 - 5
src/logic/background/twitter.js

@@ -11,11 +11,13 @@ export function twitterPinLoginToken() {
         // 没有登陆
         if (!res) {
             fetchTtwitterRequestToken().then((res) => {
-                authToken = res.data.authToken
-                consumerKey = res.data.consumerKey
-                chrome.tabs.create({
-                    url: `https://api.twitter.com/oauth/authorize?oauth_token=${res.data.authToken}`
-                })
+                if (res.code == 0) {
+                    authToken = res.data.authToken
+                    consumerKey = res.data.consumerKey
+                    chrome.tabs.create({
+                        url: `https://api.twitter.com/oauth/authorize?oauth_token=${res.data.authToken}`
+                    })
+                }
             })
         }
     })

+ 36 - 27
src/view/iframe/red-packet/red-packet.vue

@@ -385,15 +385,17 @@ async function clickLikeBtn() {
   if (!_userInfo) {
     return
   }
-  state.loading_show = true
-
-
   // window.parent.postMessage({
   //   actionType: "IFRAME_DO_TASK", task_data: {
   //     tweet_Id: state.tweetId
   //   }, task_type: 'like'
   // }, "*");
 
+  if (state.detail.finishTaskType && state.detail.finishTaskType == 2) {
+    window.open(`https://twitter.com/intent/like?tweet_id=${state.tweetId}`)
+    return
+  }
+  state.loading_show = true
   oneKeyLike({
     params: {
       tweetId: state.srcContentId
@@ -471,8 +473,11 @@ async function clickRetweetBtn() {
   if (!_userInfo) {
     return
   }
+  if (state.detail.finishTaskType && state.detail.finishTaskType == 2) {
+    window.open(`https://twitter.com/intent/retweet?tweet_id=${state.tweetId}`)
+    return
+  }
   state.loading_show = true
-
   oneKeyReTweet({
     params: {
       tweetId: state.srcContentId
@@ -531,19 +536,41 @@ function getValidity() {
   }, 1000)
 }
 
+const openFollowTabs = () => {
+  let array_finish = state.detail.taskCondition[0].relatedUsers.filter((item) => { return item.finished == false })
+  let url
+  if (array_finish.length > 0) {
+    state.done.follow = false
+    // 打开标签页的方法
+    array_finish.forEach((item) => {
+      url = `https://twitter.com/intent/follow?screen_name=${item.name}&tweet_id=${state.tweetId}`
+      chrome.tabs.create({ url }, (tab) => {
+        if (follow_open_tabs.filter((item) => { return item.url == tab.url }).length == 0) {
+          follow_open_tabs.push(tab)
+        }
+      })
+    })
+  }
+}
+
 async function clickFollowAll(item, is_all) {
+  debugger
   let _userInfo = await checkIsLogin()
   if (!_userInfo) {
     return
   }
-  state.loading_show = true
+
   let arr_name = []
   for (let i in item) {
     if (!item[i].finished) {
       arr_name.push(item[i].name)
     }
   }
-
+  if (state.detail.finishTaskType && state.detail.finishTaskType == 2) {
+    openFollowTabs()
+    return
+  }
+  state.loading_show = true
   oneKeyFollow({
     params: {
       names: arr_name
@@ -553,29 +580,12 @@ async function clickFollowAll(item, is_all) {
     if (res.code == 0) {
       res.data.forEach((item1) => {
         state.detail.taskCondition[0].relatedUsers.forEach(item2 => {
-          if (item1.name == item2.name && item1.following) {
+          if (item1.name == item2.name && item1.finished) {
             item2.finished = true
           }
         });
       })
-      let array_finish = state.detail.taskCondition[0].relatedUsers.filter((item) => { return item.following == false })
-      let url
-      if (array_finish.length > 0) {
-        state.done.follow = false
-        // 打开标签页的方法
-        array_finish.forEach((item) => {
-          url = `https://twitter.com/intent/follow?screen_name=${item.name}&tweet_id=${state.tweetId}`
-          chrome.tabs.create({ url }, (tab) => {
-            if (follow_open_tabs.filter((item) => { return item.url == tab.url }).length == 0) {
-              follow_open_tabs.push(tab)
-            }
-          })
-        })
-      } else {
-        state.done.follow = true
-      }
-
-
+      openFollowTabs()
     }
   })
 
@@ -1427,10 +1437,9 @@ function openInviteUrl() {
   }
 }
 
-
 </script>
  
-<style  lang="scss">
+<style lang="scss" scoped>
 html,
 body {
   margin: 0;