Przeglądaj źródła

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

zhangwei 2 lat temu
rodzic
commit
374a4220e0

+ 190 - 164
src/entry/background.js

@@ -35,18 +35,40 @@ import {
 import {
     closeAchPayNoticeHandler
 } from "@/logic/background/denet";
+
+try {
+    chrome.runtime.onMessage.addListener(onMessageMethod);
+} catch (error) {
+    console.log('error when background onMessage addListener', error)
+}
+
 try {
-    //加载bg.js 执行
-    setMessageCount();
+    chrome.runtime.onInstalled.addListener(onInstalledMethod);
+} catch (error) {
+    console.log('error when background onInstalled addListener', error)
+}
+
 
-    // 消息通讯
+
+
+// chrome.runtime.setUninstallURL('https://denet.me', (e) => { 
+//     console.log('e', e)
+// })
+
+// 消息通讯
+try {
     chrome.runtime.onConnect.addListener(function (port) {
         port.onDisconnect.addListener(function () {
             onDisconnectHandler(port);
         });
     });
+} catch (error) {
+    console.log('error when background onConnect addListener', error)
+}
+
 
-    // 当有可用更新时触发
+// 当有可用更新时触发
+try {
     chrome.runtime.onUpdateAvailable.addListener(() => {
         try {
             setChromeStorage({ onUpdateAvailable: JSON.stringify({ onUpdateAvailable: '1' }) }, () => {
@@ -60,12 +82,13 @@ try {
             });
         }
     })
+} catch (error) {
+    console.log('error when background onUpdateAvailable addListener', error)
+}
 
-    chrome.runtime.onInstalled.addListener(onInstalledMethod);
-
-    chrome.runtime.onMessage.addListener(onMessageMethod);
 
-    // 定时器
+// 定时器
+try {
     chrome.alarms.onAlarm.addListener(function (alarm) {
         // console.log("onAlarm-", alarm);
         switch (alarm.name) {
@@ -80,174 +103,177 @@ try {
                 break
         }
     });
+} catch (error) {
+    console.log('error when background onAlarm addListener', error)
+}
 
-    chrome.action.onClicked.addListener(function (tab) {
-        injectExtensionPopup(tab);
-    });
 
-    chrome.tabs.onActivated.addListener(function (activeInfo) {
-        setPopupConfig(activeInfo);
-    })
+chrome.action.onClicked.addListener(function (tab) {
+    injectExtensionPopup(tab);
+});
 
-    function thenInstalledMethod() {
-        try {
+chrome.tabs.onActivated.addListener(function (activeInfo) {
+    setPopupConfig(activeInfo);
+})
 
-            onInstalledCreateTab()
-            onInstalledMid()
-            onInstalledUserSet()
-            // pingpang
-            chrome.alarms.create('PingPong', {
-                //1分鐘之後開始(該值不能小於1) 
-                delayInMinutes: 2,
-                //開始後每一分鐘執行一次(該值不能小于1) 
-                periodInMinutes: 4
-            });
-            chrome.alarms.create('LuckMessage', {
-                //1分鐘之後開始(該值不能小於1) 
-                delayInMinutes: 1,
-                //開始後每一分鐘執行一次(該值不能小于1) 
-                periodInMinutes: 1
-            });
-        } catch (error) {
-            Report.reportLog({
-                objectType: Report.objectType.background_function_catch,
-                funcName: 'thenInstalledMethod',
-                errMsg: error.message
-            });
-        }
+function thenInstalledMethod() {
+    try {
+
+        onInstalledCreateTab()
+        onInstalledMid()
+        onInstalledUserSet()
+        // pingpang
+        chrome.alarms.create('PingPong', {
+            //1分鐘之後開始(該值不能小於1) 
+            delayInMinutes: 2,
+            //開始後每一分鐘執行一次(該值不能小于1) 
+            periodInMinutes: 4
+        });
+        chrome.alarms.create('LuckMessage', {
+            //1分鐘之後開始(該值不能小於1) 
+            delayInMinutes: 1,
+            //開始後每一分鐘執行一次(該值不能小于1) 
+            periodInMinutes: 1
+        });
+    } catch (error) {
+        Report.reportLog({
+            objectType: Report.objectType.background_function_catch,
+            funcName: 'thenInstalledMethod',
+            errMsg: error.message
+        });
     }
-    function onInstalledMethod({ id, previousVersion, reason }) {
-        try {
-            Report.reportLog({
-                id,
-                previousVersion,
-                reason,
-                funcName: 'onInstalledMethodCallback'
-            });
-            // 3.onInstalledMethod 执行了那个
-            // 版本更新判断
-            getChromeStorage('baseInfo', (info) => {
-                if (!info || !info.appVersionCode) {
-                    setChromeStorage({ onInstalledMethod: JSON.stringify({ onInstalledMethod: '1' }) })
-                    setChromeStorage({ baseInfo: JSON.stringify({ appVersionCode }) })
-                    thenInstalledMethod()
-                } else if (appVersionCode != info.appVersionCode) {
-                    setChromeStorage({ onInstalledMethod: JSON.stringify({ onInstalledMethod: '2' }) }, () => {
-                        setChromeStorage({ baseInfo: JSON.stringify({ appVersionCode }) }, () => {
-                            chrome.runtime.reload()
-                            onInstalledUserSet()
-                        })
+}
+function onInstalledMethod({ id, previousVersion, reason }) {
+    try {
+        Report.reportLog({
+            id,
+            previousVersion,
+            reason,
+            funcName: 'onInstalledMethodCallback'
+        });
+        // 3.onInstalledMethod 执行了那个
+        // 版本更新判断
+        getChromeStorage('baseInfo', (info) => {
+            if (!info || !info.appVersionCode) {
+                setChromeStorage({ onInstalledMethod: JSON.stringify({ onInstalledMethod: '1' }) })
+                setChromeStorage({ baseInfo: JSON.stringify({ appVersionCode }) })
+                thenInstalledMethod()
+            } else if (appVersionCode != info.appVersionCode) {
+                setChromeStorage({ onInstalledMethod: JSON.stringify({ onInstalledMethod: '2' }) }, () => {
+                    setChromeStorage({ baseInfo: JSON.stringify({ appVersionCode }) }, () => {
+                        chrome.runtime.reload()
+                        onInstalledUserSet()
                     })
-                } else {
-                    setChromeStorage({ onInstalledMethod: JSON.stringify({ onInstalledMethod: '3' }) })
-                    thenInstalledMethod()
-                }
-            })
+                })
+            } else {
+                setChromeStorage({ onInstalledMethod: JSON.stringify({ onInstalledMethod: '3' }) })
+                thenInstalledMethod()
+            }
+        })
 
-            // 1.onUpdateAvailable 存储到本地,再上报
-            getChromeStorage('onUpdateAvailable', (res) => {
-                if (res && res.onUpdateAvailable) {
-                    Report.reportLog({
-                        objectType: Report.objectType.background_function_try,
-                        funcName: 'onUpdateAvailable',
-                    })
-                }
-            })
-        } catch (error) {
-            Report.reportLog({
-                objectType: Report.objectType.background_function_catch,
-                funcName: 'onInstalledMethod',
-                errMsg: error.message
-            })
-        }
+        // 1.onUpdateAvailable 存储到本地,再上报
+        getChromeStorage('onUpdateAvailable', (res) => {
+            if (res && res.onUpdateAvailable) {
+                Report.reportLog({
+                    objectType: Report.objectType.background_function_try,
+                    funcName: 'onUpdateAvailable',
+                })
+            }
+        })
+    } catch (error) {
+        Report.reportLog({
+            objectType: Report.objectType.background_function_catch,
+            funcName: 'onInstalledMethod',
+            errMsg: error.message
+        })
     }
+}
 
-    function onMessageMethod(req, sender, sendResponse) {
-        try {
-            if (req) {
-                switch (req.actionType) {
-                    case "POPUP_LOGIN":
+function onMessageMethod(req, sender, sendResponse) {
+    try {
+        if (req) {
+            switch (req.actionType) {
+                case "POPUP_LOGIN":
+                    twitterPinLoginToken();
+                    sendResponse('ok');
+                    break;
+                case "POPUP_PUBLISH_TWITTER_RED_PACK":
+                    popupRePublish(req);
+                    sendResponse('ok');
+                    break;
+                case "POPUP_SHOW_DENET_PUBLISH_DIALOG":
+                    checkShowPublishDialog();
+                    break;
+                case 'CONTENT_GET_PINED':
+                    checkPined();
+                    break;
+                case 'CONTENT_SET_BADGE':
+                    setBadgeInfo(req);
+                    break;
+                case 'CONTENT_HIDE_BADGE':
+                    hideBadge();
+                    break
+                case 'CONTENT_SEND_CODE':
+                    twitterPinLoginCode(sender, req.code);
+                    break;
+                case 'CONTENT_TWITTER_LOGIN':
+                    if (req.data) {
                         twitterPinLoginToken();
                         sendResponse('ok');
-                        break;
-                    case "POPUP_PUBLISH_TWITTER_RED_PACK":
-                        popupRePublish(req);
-                        sendResponse('ok');
-                        break;
-                    case "POPUP_SHOW_DENET_PUBLISH_DIALOG":
-                        checkShowPublishDialog();
-                        break;
-                    case 'CONTENT_GET_PINED':
-                        checkPined();
-                        break;
-                    case 'CONTENT_SET_BADGE':
-                        setBadgeInfo(req);
-                        break;
-                    case 'CONTENT_HIDE_BADGE':
-                        hideBadge();
-                        break
-                    case 'CONTENT_SEND_CODE':
-                        twitterPinLoginCode(sender, req.code);
-                        break;
-                    case 'CONTENT_TWITTER_LOGIN':
-                        if (req.data) {
-                            twitterPinLoginToken();
-                            sendResponse('ok');
+                    }
+                    break
+                case "CONTENT_SEND_DISCORD_AUTH_CODE":
+                    discordLoginCode(req, sender);
+                    break
+                case 'RED_PACKET_SAVE_DISCORD_AUTH_WINDOW_ID':
+                    saveDiscordAuthWindowId(req);
+                    sendResponse('ok');
+                    break;
+                case 'CONTENT_FACEBOOK_SHARE_SUCCESS':
+                    facebookShareSuccess(req, sender);
+                    break;
+                case 'CONTENT_PONG':
+                    sendResponse('CONTENT_PONG');
+                    break
+                case 'CONTENT_WINDOW_LOADED_SET_POPUP_PAGE':
+                    // windwoLoadSetPopupPage(req, sender);
+                    break;
+                case 'CONTENT_SET_POPUP_CONFIG':
+                    setActionPopup(req, sender);
+                    break;
+                case 'CONTENT_GET_TWITTER_NFT_POST_PRE':
+                    getTwitterNftPostPre(req.data, sender)
+                    break
+                case 'CONTENT_NFT_TXT_PUBLISH':
+                    nftTxtPublish(req.data, sender)
+                    break
+                case 'CONTENT_HTTP_NET_WORK':
+                    httpNetWork(req.funcName, req.data, sender)
+                    break
+                case 'HTTP_CONTENT_TO_BACK':
+                    httpContentToBack(req, sender)
+                    sendResponse('ok')
+                    break
+                case 'CONTENT_TWITTER_SHORT_LINK':
+                    sendResponse('ok')
+                    req.arr_url.forEach(item => {
+                        if (item) {
+                            twitterShortUrl(sender, item)
                         }
-                        break
-                    case "CONTENT_SEND_DISCORD_AUTH_CODE":
-                        discordLoginCode(req, sender);
-                        break
-                    case 'RED_PACKET_SAVE_DISCORD_AUTH_WINDOW_ID':
-                        saveDiscordAuthWindowId(req);
-                        sendResponse('ok');
-                        break;
-                    case 'CONTENT_FACEBOOK_SHARE_SUCCESS':
-                        facebookShareSuccess(req, sender);
-                        break;
-                    case 'CONTENT_PONG':
-                        sendResponse('CONTENT_PONG');
-                        break
-                    case 'CONTENT_WINDOW_LOADED_SET_POPUP_PAGE':
-                        // windwoLoadSetPopupPage(req, sender);
-                        break;
-                    case 'CONTENT_SET_POPUP_CONFIG':
-                        setActionPopup(req, sender);
-                        break;
-                    case 'CONTENT_GET_TWITTER_NFT_POST_PRE':
-                        getTwitterNftPostPre(req.data, sender)
-                        break
-                    case 'CONTENT_NFT_TXT_PUBLISH':
-                        nftTxtPublish(req.data, sender)
-                        break
-                    case 'CONTENT_HTTP_NET_WORK':
-                        httpNetWork(req.funcName, req.data, sender)
-                        break
-                    case 'HTTP_CONTENT_TO_BACK':
-                        httpContentToBack(req, sender)
-                        sendResponse('ok')
-                        break
-                    case 'CONTENT_TWITTER_SHORT_LINK':
-                        sendResponse('ok')
-                        req.arr_url.forEach(item => {
-                            if (item) {
-                                twitterShortUrl(sender, item)
-                            }
-                        });
-                        break
-                    case 'CONTENT_CLOSE_ACH_PAY_NOTICE':
-                        closeAchPayNoticeHandler();
-                        break;
-                }
+                    });
+                    break
+                case 'CONTENT_CLOSE_ACH_PAY_NOTICE':
+                    closeAchPayNoticeHandler();
+                    break;
             }
-        } catch (error) {
-            Report.reportLog({
-                objectType: Report.objectType.background_function_catch,
-                funcName: 'onMessageMethod',
-                errMsg: error.message
-            });
         }
+    } catch (error) {
+        Report.reportLog({
+            objectType: Report.objectType.background_function_catch,
+            funcName: 'onMessageMethod',
+            errMsg: error.message
+        });
     }
-} catch (error) {
-    console.log('error', error)
-}
+}
+//加载bg.js 执行
+setMessageCount();

+ 14 - 0
src/log-center/logEnum.js

@@ -27,6 +27,13 @@ export const objectType = {
     withdrawButton: "withdraw-button",
     topupButton: "topup-button",
 
+
+    getMoreGiveaway: "get-more-giveaway",
+    nextButton: "next-button",
+    openChestButton: "open-chest-button",
+    copyButton: "copy-button",
+
+
     //discord
     getDiscordGuildNoData: 'get-discord-guild-no-data',
     getDiscordGuildCatch: 'get-discord-guild-catch',
@@ -93,6 +100,12 @@ export const pageSource = {
     nftShopPage: "nft-shop-page",
     nftPreviewPage: "nft-preview-page",
     denetNftTransferPage: "denet-nft-transfer-page",
+
+
+    newFansRewardPage: "new-fans-reward-page",
+    inviteFriendsPage: "invite-friends-page",
+    openTreasurePage: "open-treasure-page",
+
     // 待开红包页
     pending_page: 'pending-page',
     // 已领取任务页
@@ -116,6 +129,7 @@ export const pageSource = {
     post_editor_guide_page_left: 'post-editor-guide-page-left',
     post_editor_guide_page_right: 'post-editor-guide-page-right',
     buy_posteditor_nft_dialog: 'buy-posteditor-nft-dialog',
+
 }
 
 export const extParams = {

+ 1 - 1
src/logic/background/help.js

@@ -8,7 +8,7 @@ export function PingPong() {
             if (tabs.length) {
                 let tab = tabs.filter((item) => { return item.active == true })
                 if (tab.length) {
-                    chrome.tabs.sendMessage(tab[0].id, { actionType: 'BACK_PING' }, () => { });
+                    chrome.tabs.sendMessage(tab[0].id, { actionType: 'BACK_PING' });
                 }
             }
         })

+ 4 - 3
src/view/components/component-zoom.vue

@@ -23,8 +23,8 @@ let props = defineProps({
 })
 
 watch(() => props.txt, (newVal) => {
-    setFontZoom(300)
-},
+      setFontZoom(300)
+    },
     {
         deep: true
     })
@@ -40,6 +40,7 @@ const setFontZoom = (time = 600) => {
 }
 
 onMounted(() => {
+    setFontZoom(0)
     setFontZoom()
 })
 
@@ -54,4 +55,4 @@ onMounted(() => {
     white-space: nowrap;
     width: fit-content;
 }
-</style>
+</style>

+ 11 - 10
src/view/components/custom-card-cover.vue

@@ -57,11 +57,11 @@
                 &nbsp;GIVEAWAY
             </div>
             <div class="coin">
-                <img v-if="data.currencyIconUrl" :src="data.currencyIconUrl || imgHeaderCover" />
-                <span id="preview-after-amount"
-                    :style="{
-                        fontSize: amount_font_size + 'px'
-                    }">{{ data.amountValue || 0 }}</span>
+                <component-zoom width="300" fontSize="56" :txt="data.amountValue || 0">
+                  <img v-if="data.currencyIconUrl" :src="data.currencyIconUrl || imgHeaderCover" />
+                  <span id="preview-after-amount">{{ data.amountValue || 0 }}</span>
+                </component-zoom>
+
             </div>
             <div class="time-area" v-if="data.type == PlayType.lottery">
                 <img class="icon-clock" :src="require('@/assets/svg/icon-time.svg')" />
@@ -86,7 +86,7 @@
                 </component-zoom>
             </div>
 
-            <div class="treasure-row-3" :style="{'visibility': data.currencyCode? 'visible' : 'hidden'}">
+            <div class="treasure-row-3" :style="{'visibility': data.currencyCode && data.currencyCode != 'USD'? 'visible' : 'hidden'}">
                 <img class="img" :src="data.currencyIconUrl" /> <span class="txt"> {{data.tokenSymbol}}  <template v-if="data.currencyCode != 'USD'">equivalent (Crypto)</template></span>
             </div>
 
@@ -130,7 +130,6 @@
                     <span class="count">{{data.totalCount}}Winners</span>
                     <span>to Share </span>
                     <span class="prize-name">{{isMoneyRewardCpd ? data.amountValue + ' ' + data.tokenSymbol : data.customizedReward}}</span>
-
                 </component-zoom>
             </div>
             <div class="open-btn" @click="open">
@@ -200,7 +199,7 @@ const open = () => {
 };
 
 onMounted(() => {
-    setFontSize()
+    // setFontSize()
 })
 </script>
 
@@ -234,11 +233,13 @@ onMounted(() => {
         .coin {
             text-align: center;
             width: 100%;
-            padding: 6px 0;
+            padding: 3px 0;
             margin: 0 auto;
             display: flex;
             align-items: center;
             justify-content: center;
+            height: 85px;
+            box-sizing: border-box;
 
             img {
                 width: 46px;
@@ -247,7 +248,7 @@ onMounted(() => {
                 border: 3px solid #ffffff;
             }
 
-            span {
+            #preview-after-amount {
                 margin-left: 15px;
                 font-weight: 800;
                 font-size: 60px;

+ 12 - 12
src/view/components/custom-card-horizontal-cover.vue

@@ -20,14 +20,14 @@
                     DeNet.me
                 </div>
                 <div class="desc">
-                    DeNet: An Easy Web3 Tool For GIVEAWAY / AIRDROP
+                   {{data.type == PlayType.treasure ? `Treasure Chest: ${data.amountValue} ${data.tokenSymbol} (worth $${data.usdEstimateOrderAmount}) for ${data.totalCount} winners` : 'DeNet: An Easy Web3 Tool For Giveaway / Airdrop'}}
                     <!-- 🎁 <template v-if="data.tokenSymbol=='USD'">$</template>{{data.amountValue}} GIVEAWAY -->
                 </div>
             </div>
 
             <div class="user-info">
-                <img :src="data.userInfo.avatarUrl" 
-                class="avatar"/> 
+                <img :src="data.userInfo.avatarUrl"
+                class="avatar"/>
                 <template v-if="data.type != PlayType.treasure">
                     {{data.userInfo.nickName}}
                 </template>
@@ -55,9 +55,9 @@
 
                     <div class="desc">
                         <template  v-if="data.type == PlayType.lottery">
-                            <img class="icon-clock" 
+                            <img class="icon-clock"
                             :src="require('@/assets/svg/icon-preview-clock.svg')" />  {{data.validityDuration}} H
-                            <img class="icon-trophy" 
+                            <img class="icon-trophy"
                             :src="require('@/assets/svg/icon-preview-trophy.svg')" /> <span class="trophy-count">{{data.totalCount}} WINNERS</span>
                         </template>
                         <template v-else-if="data.type == PlayType.common">
@@ -69,12 +69,12 @@
                     <div class="treasure-row-1">
                         <span class="left">Treasure</span>
                         <component-zoom width="160">
-                            <span class="right">${{data.amountValue}}</span>
+                            <span class="right">${{data.usdEstimateOrderAmount}}</span>
                         </component-zoom>
                     </div>
                     <div class="treasure-desc-data">
                         <div class="item">
-                            <img class="icon" 
+                            <img class="icon"
                                 :src="require('@/assets/svg/icon-preview-trophy.svg')" />
                             {{data.totalCount}} Winners
                         </div>
@@ -88,7 +88,7 @@
         </template>
         <template class="custom-card"  v-else>
             <img class="custom-card-cover" v-if="isLottaryCpd" :src="require('@/assets/subject/img-custom-lottary-bg.png')"  />
-            <img class="custom-card-cover" v-else :src="require('@/assets/subject/img-custom-common-bg.png')"  />  
+            <img class="custom-card-cover" v-else :src="require('@/assets/subject/img-custom-common-bg.png')"  />
             <div class="bottom-bar" v-if="showBottom">
                 <div class="title">
                     DeNet.me
@@ -207,7 +207,7 @@ watch(() => props.data, () => {
         }
 
         .treasure-info {
-            color: #fff; 
+            color: #fff;
             opacity: 0.7;
             font-weight: 300;
         }
@@ -266,9 +266,9 @@ watch(() => props.data, () => {
             margin-top: -8px;
 
             .treasure-row-1 {
-                display: flex; 
+                display: flex;
+                justify-content: flex-start;
                 align-items: center;
-                justify-content: center;
                 font-weight: 900;
                 font-size: 35px;
                 color: #fff;
@@ -293,7 +293,7 @@ watch(() => props.data, () => {
                     font-size: 14px;
                     color: #E1D4C5;
                     margin-bottom: 10px;
-                    display: flex; 
+                    display: flex;
                     align-items: center;
 
                     .icon {

+ 0 - 1
src/view/content/message/index.vue

@@ -105,7 +105,6 @@ const readMessage = (id = 0) => {
 chrome.runtime.onMessage.addListener((req, sender, sendResponse) => {
     if (req.actionType == 'BACK_UNREAD_MESSAGE') {
         let data = req.data.data || []
-        console.log('BACK_UNREAD_MESSAGE', data)
         if (req.data.code == 0 && data.length > 0) {
             data.forEach((item) => {
                 if (state.list.filter((filter_item) => { return filter_item.id == item.id }).length == 0) {

+ 3 - 0
src/view/iframe/buy-nft/buy/home.vue

@@ -163,6 +163,9 @@ const clickClose = () => {
     })
 }
 const clickJump = (item) => {
+    // 防止重复点击
+    if (payNext.value) return;
+
     pay_info.home.sale_plan = item
     payNext.value = true;
     // post

+ 1 - 1
src/view/iframe/publish/components/pay-button.vue

@@ -67,7 +67,7 @@ const props = defineProps({
         default: 'DEFAULT'
     },
     bizType: {
-        type: String,
+        type: [String, Number],
         default: PlayType.treasure
     }
 });

+ 9 - 7
src/view/iframe/publish/components/preview-card.vue

@@ -21,6 +21,7 @@
                         <custom-card-cover :data="{
                             totalCount: baseFormData.totalCount,
                             amountValue: baseFormData.amountValue,
+                            usdEstimateOrderAmount: baseFormData.usdEstimateOrderAmount,
                             tokenSymbol: currentCurrencyInfo.tokenSymbol,
                             currencyCode: currentCurrencyInfo.currencyCode,
                             currencyIconUrl: currentCurrencyInfo.iconPath,
@@ -37,13 +38,13 @@
                         }"></custom-card-cover>
                     </div>
                 </div>
-            </div> 
+            </div>
 
             <!-- 安装之前的卡片样式 -->
             <div class="content-before"
                 v-show="!installStatus"
                 :style="{'width': (baseFormData.rewardType === RewardType.money) ? `${reviewCanvasParams.width}px` : '100%'}">
-                <div class="head" 
+                <div class="head"
                     :style="{'zoom': reviewCanvasParams.zoom}">
                     <img :src="userInfo.avatarUrl"
                         class="avatar"/>
@@ -63,6 +64,7 @@
                         :data="{
                             totalCount: baseFormData.totalCount,
                             amountValue: baseFormData.amountValue,
+                            usdEstimateOrderAmount: baseFormData.usdEstimateOrderAmount,
                             tokenSymbol: currentCurrencyInfo.tokenSymbol,
                             currencyCode: currentCurrencyInfo.currencyCode,
                             currencyIconUrl: currentCurrencyInfo.iconPath,
@@ -171,13 +173,13 @@ const calcPreviewCanvasParams = () => {
         const canvasHeight = 820, canvasWidth = 600;
         if(domHeight < canvasHeight) {
             //比例: 高 / 宽
-            let hWRatio = canvasHeight / canvasWidth; 
-            //缩小宽度 = 高度 / 比例  
-            let width = domHeight / hWRatio;  
+            let hWRatio = canvasHeight / canvasWidth;
+            //缩小宽度 = 高度 / 比例
+            let width = domHeight / hWRatio;
             if(width > canvasWidth) {
                 width = canvasWidth;
             }
-            //缩小比例 
+            //缩小比例
             let zoom = width / canvasWidth;
             if(zoom > 1) {
                 zoom = 1;
@@ -320,7 +322,7 @@ onUnmounted(() => {
             background-size: contain;
             background-repeat: no-repeat;
             height: 100%;
-           
+
             .custom-prize-card-wrapper {
                 width: 370px;
                 left: 56px;

+ 8 - 5
src/view/iframe/publish/give-dialog.vue

@@ -173,7 +173,7 @@
                                             <div class="form-cell">
                                                 <div class="cell-title">
                                                     <img class="title-icon" :src="require('@/assets/svg/icon-form-winners.svg')" />
-                                                    {{selectModeInfo.type != PlayType.treasure ? 'Winners' : 'New Follower'}}
+                                                    {{selectModeInfo.type != PlayType.treasure ? 'Winners' : 'Growing Target'}}
                                                 </div>
                                                 <div class="cell-content">
                                                     <div class="count-input-wrapper">
@@ -338,7 +338,10 @@
                         <!-- 预览 -->
                         <template v-else-if="showComType == 'preview'">
                             <preview-sheet
-                                :baseFormData="baseFormData"
+                                :baseFormData="{
+                                  ...baseFormData,
+                                  usdEstimateOrderAmount: treasureFormData.usdEstimateOrderAmount
+                                }"
                                 :upGainAmountUsdValue="treasureFormData.upGainAmountUsdValue"
                                 :currentCurrencyInfo="currentCurrencyInfo"
                                 :tempCurrentCurrencyInfo="tempCurrentCurrencyInfo"
@@ -646,7 +649,7 @@ let currentCurrencyInfo = ref(defaultCurrentCurrencyInfo);
 const discordIptErrTxt = 'Discord invite link is wrong';
 const discordIptEmptyErrTxt = 'Enter discord invite link';
 const discordIptNerverExpiresErrTxt = 'Make sure the Discord link never expires'
-const requireFollowTxt = '添加 follow task'
+const requireFollowTxt = 'Please add at least one user to follow at "Follow'
 let iptErrType = ''; //discord
 
 let formList = reactive([
@@ -1684,7 +1687,7 @@ const checkTreasureAmountRange = (isInTemplate) => {
         } else {
 
             let txt =  `The prize pool must be above ${isInTemplate ? ('<span class="font-color-1D9BF0">$' + currentLuckDropConfig.minTotalUsdAmount + '</span>') : ('$' + currentLuckDropConfig.minTotalUsdAmount)}
-                            or the average prize must be above
+                            and the average prize must be above
                             ${isInTemplate ? ('<span class="font-color-1D9BF0">$' + currentLuckDropConfig.minAvgUsdAmount +' per person.</span>' ): ('$' + currentLuckDropConfig.minAvgUsdAmount + ' per person.') }`
 
             const isAmountForbidden = currentLuckDropConfig?.minTotalUsdAmount ? +math.format(math.evaluate(baseFormData.amountValue * usdPrice)) < currentLuckDropConfig?.minTotalUsdAmount : false;
@@ -1711,7 +1714,7 @@ const treasureFormValidata = () => {
         isShowUsdMinMessage.value = true;
     } else if (!baseFormData.totalCount || baseFormData.totalCount == '0') {
         // 输入Follower
-        iptErrMsgTxt.value = "Enter the number of new follower";
+        iptErrMsgTxt.value = 'Please enter "Growing Targe"';
     } else if(iptErrMsgTxt.value  = checkTreasureAmountRange()) {
         // 粉丝单价是否 小于总金额规则 大于最小粉丝单价 、大于币种最小精度
         isShowUsdMinMessage.value = true;

+ 42 - 3
src/view/iframe/treasure-hunt/components/invite-friends.vue

@@ -5,7 +5,9 @@
             tasks.</div>
         <div class="area-url">
             <div class="url">{{ state.detail.inviteUrl }}</div>
-            <div class="btn copy-btn" @click="clickCopy" :data-clipboard-text="state.detail.inviteCopyUrl">
+            <div class="btn copy-btn" @click="clickCopy"
+             v-click-log="state.log_invite_copy_btn_click"
+            :data-clipboard-text="state.detail.inviteCopyUrl">
                 Copy
             </div>
         </div>
@@ -14,7 +16,10 @@
                 @click="clickShare(item)" class="share-item" />
         </div>
         <v-btn :txt="state.open_btn.txt" :font-size="'17px'" class="btn" :icon="false"
-            :disabled="state.open_btn.disabled" @onClick="clickBtn" font-weight="600"></v-btn>
+            :disabled="state.open_btn.disabled"
+            v-show-log="state.log_invite_btn_show"
+            v-click-log="state.log_invite_btn_click"
+             @onClick="clickBtn" font-weight="600"></v-btn>
 
     </div>
 </template>
@@ -22,9 +27,43 @@
 import VBtn from '@/view/iframe/treasure-hunt/components/btn.vue'
 import { inviteChannel } from '@/http/treasure'
 import { inject, onMounted } from 'vue'
+import Report from "@/log-center/log"
+
 let ClipboardJS = require('clipboard');
+
 let state = inject('state')
 
+state.log_invite_btn_show = {
+    businessType: Report.businessType.buttonView,
+    pageSource: Report.pageSource.inviteFriendsPage,
+    objectType: Report.objectType.openChestButton,
+    redPacketType: Report.redPacketType.treasure,
+    shareLinkId:  state.invite_code,
+    myShareLinkId: state.detail.inviteCopyUrl,
+    currentInvitedNum: state.detail.inviteCount,
+    postId: state.postId
+}
+
+state.log_invite_btn_click = {
+    businessType: Report.businessType.buttonClick,
+    pageSource: Report.pageSource.inviteFriendsPage,
+    objectType: Report.objectType.openChestButton,
+    redPacketType: Report.redPacketType.treasure,
+    shareLinkId:  state.invite_code,
+    myShareLinkId: state.detail.inviteCopyUrl,
+    currentInvitedNum: state.detail.inviteCount,
+    postId: state.postId
+}
+state.log_invite_copy_btn_click = {
+    businessType: Report.businessType.buttonClick,
+    pageSource: Report.pageSource.inviteFriendsPage,
+    objectType: Report.objectType.copyButton,
+    redPacketType: Report.redPacketType.treasure,
+    shareLinkId:  state.invite_code,
+    myShareLinkId: state.detail.inviteCopyUrl,
+    currentInvitedNum: state.detail.inviteCount,
+    postId: state.postId
+}
 onMounted(() => {
     try {
         chrome.management.get('ophjlpahpchlmihnnnihgmmeilfjmjjc', (res) => {
@@ -170,4 +209,4 @@ const clickCopy = () => {
 
 
 }
-</style>
+</style>

+ 16 - 2
src/view/iframe/treasure-hunt/components/invite-list.vue

@@ -16,7 +16,9 @@
         </div>
         <div class="footer">
             <v-btn :txt="state.open_btn.txt" :font-size="'17px'" class="btn" :icon="false"
-                :disabled="state.open_btn.disabled" @onClick="clickBtn" font-weight="600"></v-btn>
+                :disabled="state.open_btn.disabled"
+                v-click-log="state.log_invite_btn_click"
+                @onClick="clickBtn" font-weight="600"></v-btn>
         </div>
     </div>
 </template>
@@ -24,6 +26,7 @@
 import VBtn from '@/view/iframe/treasure-hunt/components/btn.vue'
 import { inviteList } from '@/http/treasure'
 import { inject, onMounted } from 'vue'
+import Report from "@/log-center/log"
 
 var moment = require('moment')
 let state = inject('state')
@@ -32,6 +35,17 @@ let page_num = 1
 let page_size = 10
 let list_end = false
 
+state.log_invite_btn_click = {
+    businessType: Report.businessType.buttonClick,
+    pageSource: Report.pageSource.inviteFriendsPage,
+    objectType: Report.objectType.openChestButton,
+    redPacketType: Report.redPacketType.treasure,
+    shareLinkId:  state.invite_code,
+    myShareLinkId: state.detail.inviteCopyUrl,
+    currentInvitedNum: state.detail.inviteCount,
+    postId: state.postId
+}
+
 onMounted(() => {
     list()
 })
@@ -176,4 +190,4 @@ const clickBtn = () => {
         }
     }
 }
-</style>
+</style>

+ 29 - 3
src/view/iframe/treasure-hunt/components/open-box.vue

@@ -1,5 +1,5 @@
 <template>
-    <div class="open-box">
+    <div class="open-box" v-show-log="state.log_open_box_show">
         <div class="background"></div>
         <!-- 开奖页 -->
         <div class="content">
@@ -15,15 +15,41 @@
                     </div>
                 </div>
             </div>
-            <v-btn :txt="'OK'" :font-size="'16px'" class="btn" :icon="false" @onClick="clickBtn"></v-btn>
+            <v-btn :txt="'OK'" :font-size="'16px'" class="btn" :icon="false" v-click-log="state.log_open_box_btn_click" @onClick="clickBtn"></v-btn>
         </div>
     </div>
 </template>
 <script setup>
 import { inject } from 'vue'
 import VBtn from '@/view/iframe/treasure-hunt/components/btn.vue'
+
+import Report from "@/log-center/log"
+
 let state = inject('state')
 
+state.log_open_box_show = {
+    businessType: Report.businessType.pageView,
+    pageSource: Report.pageSource.openTreasurePage,
+    redPacketType: Report.redPacketType.treasure,
+    shareLinkId:  state.invite_code,
+    myShareLinkId: state.detail.inviteCopyUrl,
+    currentInvitedNum: state.detail.inviteCount,
+    postId: state.postId
+}
+
+
+state.log_open_box_btn_click = {
+    businessType: Report.businessType.buttonClick,
+    pageSource: Report.pageSource.openTreasurePage,
+    objectType: Report.objectType.nextButton,
+    redPacketType: Report.redPacketType.treasure,
+    shareLinkId:  state.invite_code,
+    myShareLinkId: state.detail.inviteCopyUrl,
+    currentInvitedNum: state.detail.inviteCount,
+    postId: state.postId
+}
+
+
 const clickBtn = () => {
     state.open_box.show = false
 }
@@ -149,4 +175,4 @@ const clickBtn = () => {
         opacity: 1;
     }
 }
-</style>
+</style>

+ 19 - 11
src/view/iframe/treasure-hunt/cover.vue

@@ -43,7 +43,7 @@
             <span>to Hunt Treasure</span>
         </div>
         <v-btn :txt="state.open_btn.txt" :font-size="'17px'" :icon="true" :disabled="false" @onClick="clickBtn"
-            :loading="state.btn_loading" v-click-log="state.log_click"></v-btn>
+            :loading="state.btn_loading"></v-btn>
     </div>
 
 </template>
@@ -60,14 +60,7 @@ import { reSetBindRepost } from '@/http/help.js'
 let state = inject('state')
 
 state.log_show = {
-    pageSource: Report.pageSource.pending_page,
-    redPacketType: Report.redPacketType.treasure,
-    shareLinkId: state.invite_code,
-    postId: state.postId
-}
-
-state.log_click = {
-    objectType: Report.pageSource.open_button,
+    businessType: Report.businessType.pageView,
     pageSource: Report.pageSource.pending_page,
     redPacketType: Report.redPacketType.treasure,
     shareLinkId: state.invite_code,
@@ -141,10 +134,25 @@ const toLast = (num, bit) => {
 
 const clickBtn = () => {
     if (state.cover_status == '奖励已被领光') {
-        window.open('https://twitter.com/search?q=%23denet')
+        Report.reportLog({
+            pageSource: Report.pageSource.pending_page,
+            businessType: Report.businessType.buttonClick,
+            objectType: Report.objectType.getMoreGiveaway,
+            postId: state.postId
+        });
+        window.open('https://twitter.com/search?q=%23denet');
         return
     }
 
+    Report.reportLog({
+      businessType: Report.businessType.buttonClick,
+      objectType: Report.objectType.open_button,
+      pageSource: Report.pageSource.pending_page,
+      redPacketType: Report.redPacketType.treasure,
+      shareLinkId: state.invite_code,
+      postId: state.postId
+    });
+
     state.btn_loading = true
     setTimeout(() => {
         if (state.btn_loading == true) {
@@ -373,4 +381,4 @@ const startBtn = () => {
     }
 
 }
-</style>
+</style>

+ 17 - 4
src/view/iframe/treasure-hunt/invite.vue

@@ -1,6 +1,6 @@
 <template>
     <!-- 邀请页 -->
-    <div class="area-process">
+    <div class="area-process" v-show-log="state.log_invite_show">
         <v-head :left-data="state.detail.postUserInfo || null" :rightData="state.detail.remainAmountUsdValue"></v-head>
         <div class="box-process">
             <div class="item" v-for="item, i in state.boxs">
@@ -44,9 +44,22 @@ import InviteList from '@/view/iframe/treasure-hunt/components/invite-list.vue'
 import HoverTip from '@/view/iframe/treasure-hunt/components/hover-tip.vue'
 import InviteFriends from '@/view/iframe/treasure-hunt/components/invite-friends.vue'
 import VDialog from '@/view/iframe/treasure-hunt/components/dialog.vue'
+
+import Report from "@/log-center/log"
+
 let content_success_message = ref(null)
 let state = inject('state')
 
+state.log_invite_show = {
+    businessType: Report.businessType.pageView,
+    pageSource: Report.pageSource.inviteFriendsPage,
+    redPacketType: Report.redPacketType.treasure,
+    shareLinkId:  state.invite_code,
+    myShareLinkId: state.detail.inviteCopyUrl,
+    currentInvitedNum: state.detail.inviteCount,
+    postId: state.postId
+}
+
 // ---- 走马灯
 state.success_message_list = []
 
@@ -156,7 +169,7 @@ const btnStatus = () => {
 
     state.treasureId = ''
     let open_num = 0
-    // 有打开的箱子 Open the chest 
+    // 有打开的箱子 Open the chest
     state.boxs.forEach((item, index) => {
         if (item.taskFinishStatus == 1 && item.openStatus == 0) {
             state.open_btn.txt = 'Open the Chest'
@@ -168,7 +181,7 @@ const btnStatus = () => {
         if (item.taskFinishStatus == 1) {
             setLineFull(index, item.finishNeedInviteCount, item.successInviteCount)
         }
-        // 三个箱子全部打开了 
+        // 三个箱子全部打开了
         if (item.openStatus == 1) {
             open_num++
         }
@@ -371,4 +384,4 @@ const mouseLeave = () => {
 
 
 }
-</style>
+</style>

+ 29 - 4
src/view/iframe/treasure-hunt/result.vue

@@ -1,6 +1,6 @@
 <template>
     <!-- 开奖页 -->
-    <div class="content">
+    <div class="content" v-show-log="state.log_result_show">
         <img :src="require('@/assets/img/icon-silver-open-box.png')" alt="" />
         <div class="mark">
 
@@ -36,15 +36,40 @@
             </template>
         </div>
         <v-btn :txt="'Invite friends for more treasures'" :font-size="'16px'" class="btn"
-            v-if="Number(state.start_task.amountValue) > 0" @onClick="clickBtn" :disabled="false"></v-btn>
-        <v-btn :txt="'Invite'" :font-size="'16px'" class="btn" v-else @onClick="clickBtn" :disabled="false"></v-btn>
+            v-if="Number(state.start_task.amountValue) > 0"  v-click-log="state.log_result_click" @onClick="clickBtn" :disabled="false"></v-btn>
+        <v-btn :txt="'Invite'" :font-size="'16px'" class="btn" v-else @onClick="clickBtn" :disabled="false"  v-click-log="state.log_result_click"></v-btn>
     </div>
 </template>
 <script setup>
 import { inject, onMounted } from 'vue'
 import VBtn from '@/view/iframe/treasure-hunt/components/btn.vue'
+import Report from "@/log-center/log"
+
 let state = inject('state')
 
+state.log_result_show = {
+    businessType: Report.businessType.pageView,
+    pageSource: Report.pageSource.newFansRewardPage,
+    redPacketType: Report.redPacketType.treasure,
+    shareLinkId: state.invite_code,
+    postId: state.postId,
+    extParams: {
+      isNewFans: Number(state.start_task.amountValue) > 0 ? true : false
+    }
+}
+
+state.log_result_click = {
+    businessType: Report.businessType.buttonClick,
+    pageSource: Report.pageSource.newFansRewardPage,
+    objectType: Report.objectType.nextButton,
+    redPacketType: Report.redPacketType.treasure,
+    shareLinkId: state.invite_code,
+    postId: state.postId,
+    extParams: {
+      isNewFans: Number(state.start_task.amountValue) > 0 ? true : false
+    }
+}
+
 const clickBtn = () => {
     state.init(() => {
         state.page = '邀请页'
@@ -134,4 +159,4 @@ JSON.parse('[{\"type\":2},{\"type\":10},{\"relatedUsers\":[{\"name\":\"Ice176197
         left: 15px;
     }
 }
-</style>
+</style>