zhangwei 2 anni fa
parent
commit
2dd97c635d

+ 68 - 0
src/http/treasure.js

@@ -0,0 +1,68 @@
+import { service } from "./request";
+
+export function treasureDetail(params) {
+    return service({
+        url: `/post/treasure/detail`,
+        method: "post",
+        data: params,
+    });
+}
+
+
+export function inviteChannel(params) {
+    return service({
+        url: `/post/treasure/invite/channel`,
+        method: "post",
+        data: params,
+    });
+}
+
+export function inviteDetail(params) {
+    return service({
+        url: `/post/treasure/invite/detail`,
+        method: "post",
+        data: params,
+    });
+}
+
+export function inviteList(params) {
+    return service({
+        url: `/post/treasure/invite/list`,
+        method: "post",
+        data: params,
+    });
+}
+
+export function inviteList(params) {
+    return service({
+        url: `/post/treasure/open`,
+        method: "post",
+        data: params,
+    });
+}
+
+export function prepareStart(params) {
+    return service({
+        url: `/post/treasure/prepareStart`,
+        method: "post",
+        data: params,
+    });
+}
+
+
+export function receiveList(params) {
+    return service({
+        url: `/post/treasure/receive/list`,
+        method: "post",
+        data: params,
+    });
+}
+
+
+export function treasureStart(params) {
+    return service({
+        url: `/post/treasure/start`,
+        method: "post",
+        data: params,
+    });
+}

+ 30 - 0
src/logic/content/ParseCard.js

@@ -284,6 +284,13 @@ class ParseCard {
         _iframe.style.cssText = 'border:medium none; width:505px; min-height:180px;'
         return _iframe
     }
+    createTreasureIframe(params = { page_type, tweet_Id, post_Id, invite_code }) {
+        let _iframe = document.createElement('iframe')
+        _iframe.id = post_Id
+        _iframe.src = chrome.runtime.getURL('/iframe/treasure-hunt.html') + `?params=${JSON.stringify(params)}`;
+        _iframe.style.cssText = 'border:medium none; width:375px; min-height500pxpx;'
+        return _iframe
+    }
     isHasIframeByArticle(dom_card) {
         if (!dom_card || !dom_card.parentElement) {
             return
@@ -472,6 +479,29 @@ class ParseCard {
             dom.appendChild(this.createIframe({ post_Id, tweet_Id, page_type }))
         }
     }
+    replaceDOMRreasureCard({ invite_code, dom_card, tweet_Id, post_Id, time, short_url, page_type = '' }) {
+        if (!dom_card || !dom_card.parentElement) {
+            return
+        }
+        let type
+        let dom = dom_card.querySelector('div[aria-labelledby]')
+        if (dom) {
+            type = 'card'
+            for (let i = 0; i < dom.childNodes.length; i++) {
+                if (dom.childNodes[i].dataset && dom.childNodes[i].dataset.testid && dom.childNodes[i].dataset.testid == 'card.wrapper') {
+                    dom.children[i].style.display = 'none'
+                }
+            }
+        } else {
+            type = 'txt'
+            dom = dom_card.querySelector('div[lang][dir=auto]').parentElement
+        }
+
+        dom.style = 'min-height:500px'
+        if (dom) {
+            dom.appendChild(this.createTreasureIframe({ post_Id, tweet_Id, page_type, invite_code }))
+        }
+    }
     replaceNftDomRedPacket({ dom_card, tweet_Id, post_Id, time, short_url }) {
         if (!dom_card || !dom_card.parentElement) {
             return

+ 23 - 3
src/logic/content/twitter.js

@@ -802,6 +802,26 @@ function setIframeRedPacket(type = 'twitter') {
                     } else if (item && item.post_Id && !item.post_Id.includes('/')) {
                         item.page_type = '红包'
                         parseCard.replaceDOMRedPacket(item)
+                        // 夺宝链接
+                    } else if (item && item.post_Id && item.post_Id.includes('treasure/')) {
+                        // https://testh5.denetme.net/treasure/{postid}
+                        // https://testh5.denetme.net/treasure/invite/{inviteCode}
+
+                        // 邀请链接 
+                        if (item.post_Id.includes('invite/')) {
+                            item.invite_code = item.post_Id.includes('invite/')[1] || ''
+                            item.page_type = '邀请链接'
+                            if (item.invite_code) {
+                                parseCard.replaceDOMRreasureCard(item)
+                            }
+                        } else {
+                            // 原始链接
+                            item.page_type = '原始链接'
+                            item.post_Id = item.post_Id.includes('treasure/')[1] || ''
+                            if (item.post_Id) {
+                                parseCard.replaceDOMRreasureCard(item)
+                            }
+                        }
                     }
                 }
                 if (res.need_net_short_url.length > 0) {
@@ -981,9 +1001,9 @@ function onPageVisbile() {
 }
 
 const depositUSShowPopupPage = async () => {
-    let {form = '', path} = await getChromeStorage('achPayData') || {};
-    if(form == 'popupPage') {
-        showPopupPage({path});
+    let { form = '', path } = await getChromeStorage('achPayData') || {};
+    if (form == 'popupPage') {
+        showPopupPage({ path });
         chrome.storage.local.remove("achPayData");
     }
 }

+ 22 - 3
src/view/iframe/treasure-hunt/index.vue

@@ -2,19 +2,38 @@
     <v-cover v-if="state.page == '封面页'"></v-cover>
     <v-invite v-if="state.page == '邀请页'"></v-invite>
     <v-result v-if="state.page == '开奖页'"></v-result>
-
 </template>
 <script setup>
-import { reactive, provide } from 'vue'
+import { reactive, provide, onMounted } from 'vue'
 import VCover from '@/view/iframe/treasure-hunt/cover.vue'
 import VInvite from '@/view/iframe/treasure-hunt/invite.vue'
 import VResult from '@/view/iframe/treasure-hunt/result.vue'
-
+import { inviteDetail, treasureDetail } from '@/http/treasure.js'
+import { getQueryString } from '@/uilts/help'
 let state = reactive({
     page: '邀请页'
 })
 provide('state', state)
 
+onMounted(() => {
+    let params = JSON.parse(getQueryString('params') || '')
+    if (params.page_type == '邀请链接') {
+        // 邀请链接
+        // inviteDetail({
+        //     inviteCode: params.invite_code
+        // }).then((res) => {
+
+        // })
+
+    } else {
+        // 原始链接
+        // treasureDetail({
+        //     postId: params.post_Id
+        // }).then(() => {
+
+        // })
+    }
+})
 </script>
 <style lang="scss" >
 html,