<template>
    <div class="nft-content">
        <template v-if="isLoading">
            <img class="loading" src="../../static/svg/icon-loading.svg" />
        </template>
        <template v-else>
            <template v-if="isMobile">
                <div class="small">
                    <div class="banner"><img :src="detail.pageImagePath" /></div>
                    <div class="title">Open link on PC to Buy NFT</div>
                    <div class="desc">{{ linkHref }}</div>
                    <div class="copy">
                        <button class="btn" :data-clipboard-text="linkHref">Copy Link</button>
                    </div>
                </div>
            </template>
            <template v-else>
                <div class="logo">
                    <img src="/img/icon-logo.png" alt />
                </div>
                <div class="show">
                    <div class="center">
                        <div class="img">
                            <img :src="detail.pageImagePath" />
                        </div>
                        <div class="info">
                            <template v-if="isChrome">
                                <div class="title">Install DeNet Plugin<br />to Buy NFT</div>
                                <img class="buy" @click="installExtension"
                                    src="../../static/img/icon-install-plugin.svg" />
                            </template>
                            <template v-else>
                                <div class="title">Only Support to Use Chrome to buy NFT</div>
                                <img class="buy" @click="installChrome"
                                    src="../../static/img/icon-install-chrome.svg" />
                            </template>
                        </div>
                    </div>
                </div>
            </template>
        </template>
    </div>
</template>

<script>
import axios from 'axios'
import Cookies from 'js-cookie'
import { Toast } from 'vant';
import { isBrowser, appVersionCode, appType } from '../../utils/help.js'
import Report from "@/log-center/log"

const api = {
    prod: 'https://api.denetme.net',
    pre: 'https://preapi.denetme.net',
    test: 'https://testapi.denetme.net'
}
const page = {
    prod: "https://h5.denetme.net",
    pre: "https://preh5.denetme.net",
    test: 'https://testh5.denetme.net'
}
const jumpUrl = page[process.env.NUXT_ENV.MODE] + '/'
const baseURL = api[process.env.NUXT_ENV.MODE]
const ClipboardJS = require('clipboard')

export default {
    name: 'ntf',
    data() {
        return {
            isLoading: true,
            appVersionCode: appVersionCode,
            jumpUrl: jumpUrl,
            detail: {},
            config: {},
            title: 'DeNet Giveaway',
            isMobile: false,
            isChrome: false,
            linkHref: '',
            metaTitle: 'DeNet: An Easy Web3 Tool For GIVEAWAY / AIRDROP',
        }
    },
    head() {
        return {
            type: '',
            title: this.title,
            appVersionCode: appVersionCode,
            meta: [
                // facebook 
                {
                    name: 'og:url',
                    content: this.jumpUrl + 'nft/' + this.$route.params.id + `/${this.$route.params.account}`
                },
                {
                    name: 'og:title',
                    content: this.metaTitle
                },
                {
                    name: 'og:image',
                    content: this.detail.linkImagePath || ''
                },
                // twitter
                {
                    name: 'twitter:card',
                    content: 'summary_large_image'
                },
                {
                    name: 'twitter:url',
                    content: this.jumpUrl + 'nft/' + this.$route.params.id + `/${this.$route.params.account}`
                },
                {
                    name: 'twitter:title',
                    content: this.metaTitle
                },
                {
                    name: 'twitter:image',
                    content: this.detail.linkImagePath || ''
                }
            ]
        }
    },
    async asyncData(params) {
        let { route } = params;
        let { data } = await axios.post(`${baseURL}/denet/nft/project/getNftProjectInfo`, {
            baseInfo: {
                appVersionCode: appVersionCode,
                mid: function () {
                    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
                        var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
                        return v.toString(16);
                    });
                }()
            },
            params: {
                nftProjectId: route.params.id || ''
            }
        })
        if (data.code == 0 && data.data !== null) {
            return {
                detail: data.data,
            }
        }
    },
    created() {
        this.setCookieMid();
        this.getConfig();
    },
    mounted() {
        this.checkBrowser();
        this.setNftInfo();
        this.isLoading = false;

        var clipboard = new ClipboardJS('.btn');
        let that = this
        clipboard.on('success', function (e) {
            Toast('copy success');
            // 埋点
            that.trackingClick()
            e.clearSelection();
        });
        this.pageSource = Report.pageSource.newUserLandingPage
        // 埋点
        if (this.isMobile) {
            this.pageSource = Report.pageSource.mobileLandingPage
        }
        Report.reportLog({
            baseInfo: {
                appVersionCode: appVersionCode,
                mid: this.mid,
                pageSource: this.pageSource,
                appType,
                machineCode: this.mid
            },
            params: {
                eventData: {
                    businessType: Report.businessType.pageView,
                    postId: this.detail.postId,
                    srcContentId: this.detail.srcContentId,
                    senderId: this.detail.srcUserId,
                    redPacketType: 2,
                }
            }
        })
    },
    methods: {
        trackingClick() {
            Report.reportLog({
                baseInfo: {
                    appVersionCode: appVersionCode,
                    mid: this.mid,
                    pageSource: this.pageSource,
                    appType,
                    machineCode: this.mid
                },
                params: {
                    eventData: {
                        businessType: Report.businessType.buttonClick,
                        objectType: Report.objectType.installButton,
                        postId: this.detail.postId,
                        srcContentId: this.detail.srcContentId,
                        senderId: this.detail.srcUserId,
                        redPacketType: 2,
                    }
                }
            })
        },
        guid() {
            return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
                var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
                return v.toString(16);
            });
        },
        setCookieMid() {
            let _cookie_mid_arr = Cookies.get('mid') || []
            if (_cookie_mid_arr.length > 0) {
                this.mid = JSON.parse(_cookie_mid_arr)[0].mid
            } else {
                this.mid = this.guid()
                Cookies.set('mid', JSON.stringify([{ mid: this.mid }]), { expires: 1000 })
            }
        },
        installExtension() {
            // 埋点
            this.trackingClick()
            let { extensionsInstallUrl } = this.config;
            window.open(extensionsInstallUrl)
        },
        installChrome() {
            window.open('https://www.google.com/chrome')
        },
        async getConfig() {
            let { data } = await axios.post(`${baseURL}/denet/base/config/getFrontConfig`, {
                baseInfo: {
                    appVersionCode: appVersionCode,
                    mid: this.mid
                },
                params: {}
            })
            if (data.code == 0) {
                this.config = data.data;
            }
        },
        checkBrowser() {
            this.linkHref = window.location.href;
            this.isChrome = isBrowser() == 'chrome';
            this.isMobile = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i);
        },
        setNftInfo() {
            let nftInfo = {
                nftProjectId: this.detail.nftProjectId || '',
                twitterAccount: atob(this.$route.params.account || ''),
                createTime: Date.now(),
                jump_type: 'nft_info',
                postId: this.detail.postId || ''
            };
            Cookies.set('jump_info', JSON.stringify(nftInfo), { expires: 100 });
        },
    }
}
</script>

<style lang="scss">
html,
body,
#__nuxt,
#__layout {
    width: 100%;
    height: 100%;
    padding: 0;
    margin: 0;
}

.nft-content {
    overflow: hidden;
    width: 100%;
    height: 100%;
    background: linear-gradient(180deg, #FFFFFF 0%, #F0F7FE 94.31%);

    .loading {
        position: absolute;
        transform: translate(-50%, -50%);
        top: 50%;
        left: 50%;
        margin: auto;
        width: 40px;
        border-radius: 50%;
    }

    .logo {
        display: flex;
        align-items: center;
        height: 70px;
        margin-left: 25px;

        img {
            width: 99px;
            height: 32px;
        }
    }

    .show {
        display: flex;
        align-items: center;
        height: calc(100% - 70px);

        .center {
            display: flex;
            margin: -50px auto 0;
            width: 1000px;

            .img {
                width: 50%;
                margin-right: 6%;

                img {
                    width: 100%;
                }
            }

            .info {
                display: flex;
                flex-direction: column;
                justify-content: center;
                width: 44%;

                .tag {
                    width: 25%;
                    margin-bottom: 6px;
                }

                .title {
                    color: #3A4B56;
                    font-size: 2.2vw;
                    font-family: 'SF Pro Display';
                    font-weight: bold;
                    word-break: break-word;
                    margin-bottom: 1vw;
                }

                .buy {
                    width: 75%;
                    max-width: 263px;
                    max-height: 64px;
                    cursor: pointer;
                }
            }
        }
    }
}

.small {
    padding: 30px 20px;

    .banner {
        width: 100%;

        img {
            width: 100%;
        }
    }

    .title {
        color: #000000;
        font-weight: 600;
        font-size: 20px;
        text-align: center;
        padding: 17px 0 12px;
    }

    .desc {
        color: #8A8A8A;
        font-size: 13px;
        padding: 0 22px;
        word-break: break-all;
        text-align: center;
    }

    .copy {
        margin-top: 35px;

        button {
            width: 100%;
            border: 0;
            height: 53px;
            color: #fff;
            font-size: 18px;
            font-weight: 700;
            border-radius: 55px;
            background: #1D9BF0;
        }
    }
}
</style>