|
@@ -1,43 +1,63 @@
|
|
|
<template>
|
|
|
<div class="nft">
|
|
|
- <div class="title">
|
|
|
- <div class="tag">
|
|
|
- <img class="logo" :src="saleData.nftProjectAvatar" />
|
|
|
- <font class="text">{{saleData.nftProjectName}}</font>
|
|
|
- <img class="tagImg" :src=" require('@/assets/img/icon-nft.png') " />
|
|
|
+ <template v-if="!isLoading">
|
|
|
+ <div class="title">
|
|
|
+ <div class="tag">
|
|
|
+ <img class="logo" :src="saleData.nftProjectAvatar" />
|
|
|
+ <font class="text">{{saleData.nftProjectName}}</font>
|
|
|
+ <img class="tagImg" :src=" require('@/assets/img/icon-nft.png') " />
|
|
|
+ </div>
|
|
|
+ <div class="share" v-if="!isShare" @click="share">
|
|
|
+ <img :src=" require('@/assets/img/icon-ntf-share.png') " />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- <div class="share" @click="share">
|
|
|
- <img :src=" require('@/assets/img/icon-ntf-share.png') " />
|
|
|
+ <div class="content">
|
|
|
+ <img :src="saleData.windowImagePath" />
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <div class="content">
|
|
|
- <img :src="saleData.windowImagePath" />
|
|
|
- </div>
|
|
|
- <div class="buy" @click="buy">
|
|
|
- <button>Buy NFT</button>
|
|
|
- </div>
|
|
|
+ <div class="buy" @click="buy">
|
|
|
+ <button>Buy NFT</button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
import { onBeforeMount, ref } from 'vue'
|
|
|
-import { getTwitterSaleNftProjectInfo } from '@/http/nft'
|
|
|
+import { getTwitterSaleNftProjectInfo, getNftProjectInfo } from '@/http/nft'
|
|
|
import { pageUrl } from "@/http/configAPI.js"
|
|
|
|
|
|
const saleData = ref({});
|
|
|
+const isShare = ref(false);
|
|
|
+const isLoading = ref(true);
|
|
|
|
|
|
const getSaleInfo = () => {
|
|
|
- let urlParams = window.location.search;
|
|
|
- let searchParams = new URLSearchParams(urlParams);
|
|
|
- let pathname = searchParams.get('pathname');
|
|
|
- let pathArr, account;
|
|
|
- if (pathname) {
|
|
|
- pathname = decodeURIComponent(pathname);
|
|
|
- pathname = pathname.slice(1);
|
|
|
- pathArr = pathname.split('/');
|
|
|
- account = pathArr[0];
|
|
|
- getSaleProjectInfo(account);
|
|
|
- }
|
|
|
+ chrome.tabs.getCurrent((tab) => {
|
|
|
+ let url = new URL(tab.url);
|
|
|
+ let pathname = url.pathname;
|
|
|
+ let pathArr, account;
|
|
|
+ if (pathname) {
|
|
|
+ pathname = decodeURIComponent(pathname);
|
|
|
+ pathname = pathname.slice(1);
|
|
|
+ pathArr = pathname.split('/');
|
|
|
+ account = pathArr[0];
|
|
|
+ getSaleProjectInfo(account);
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+const getSaleData = (projectId) => {
|
|
|
+ getNftProjectInfo({
|
|
|
+ params: {
|
|
|
+ nftProjectId: projectId
|
|
|
+ }
|
|
|
+ }).then(res => {
|
|
|
+ let { data } = res;
|
|
|
+ if (data !== null) {
|
|
|
+ // setData
|
|
|
+ saleData.value = data;
|
|
|
+ isLoading.value = false;
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
const getSaleProjectInfo = (account) => {
|
|
@@ -50,6 +70,7 @@ const getSaleProjectInfo = (account) => {
|
|
|
if (data !== null) {
|
|
|
// setData
|
|
|
saleData.value = data;
|
|
|
+ isLoading.value = false;
|
|
|
// postMessage
|
|
|
chrome.tabs.getCurrent((tab) => {
|
|
|
chrome.tabs.sendMessage(tab.id, { actionType: "IFRAME_NFT_SHOW_SALE" });
|
|
@@ -60,8 +81,9 @@ const getSaleProjectInfo = (account) => {
|
|
|
|
|
|
const share = () => {
|
|
|
let url = pageUrl + `/nft/${saleData.value.nftProjectId}`
|
|
|
+ let content = `#DNFT\r${url}`
|
|
|
chrome.tabs.getCurrent((tab) => {
|
|
|
- chrome.tabs.sendMessage(tab.id, { actionType: "IFRAME_TWITTER_PUBLISH", publishRes: { srcContent: url } });
|
|
|
+ chrome.tabs.sendMessage(tab.id, { actionType: "IFRAME_TWITTER_PUBLISH", publishRes: { srcContent: content } });
|
|
|
})
|
|
|
}
|
|
|
|
|
@@ -70,7 +92,15 @@ const buy = () => {
|
|
|
}
|
|
|
|
|
|
onBeforeMount(() => {
|
|
|
- getSaleInfo()
|
|
|
+ let urlParams = new URL(window.location.href);
|
|
|
+ let searchParmas = new URLSearchParams(urlParams.search);
|
|
|
+ let projectId = searchParmas.get('projectId') || '';
|
|
|
+ if (projectId) {
|
|
|
+ isShare.value = true;
|
|
|
+ getSaleData(projectId)
|
|
|
+ } else {
|
|
|
+ getSaleInfo()
|
|
|
+ }
|
|
|
})
|
|
|
</script>
|
|
|
|