<template>
	<div class="border">
		<div class="ercode">
			<canvas id="canvas"></canvas>
		</div>
		<div class="info">
			<div class="font">{{ tokenRechargeAddress }}</div>
			<div class="copy copy-btn" @click="copy" :data-clipboard-text="tokenRechargeAddress">Copy</div>
		</div>
	</div>
</template>

<script>
let QRCode = require('qrcode');
let ClipboardJS = require('clipboard');
import Api from '../http/api';
import { postRequest } from '../http/index';
import { Toast } from 'vant';

export default {
	name: 'qrCode',
	props: ['tokenChain', 'rechargeAddress'],
	data() {
		return {
			tokenRechargeAddress: '',
		};
	},
	mounted() {
		this.getTokenAddress();
	},
	methods: {
		getTokenAddress() {
			if (this.rechargeAddress !== '') {
				// 有过查询
				this.tokenRechargeAddress = this.rechargeAddress;
				this.createQRCode(this.rechargeAddress);
				this.copyToken();
			} else {
				// 没查询过
				postRequest(Api.getTokenRechargeAddress, {
					params: {
						tokenChain: this.tokenChain,
					},
				}).then((res) => {
					let { code, data } = res;
					if (code === 0) {
						this.tokenRechargeAddress = data.rechargeAddress;
						this.createQRCode(data.rechargeAddress);
						this.copyToken();
					}
				});
			}
		},
		createQRCode(str) {
			var canvas = document.getElementById('canvas');
			QRCode.toCanvas(
				canvas,
				str,
				{
					width: 110,
					height: 110,
					scale: 1,
					color: {
						dark: '#000', // 二维码前景颜色
						light: '#fff', // 二维码背景颜色
					},
				},
				function (error) {
					if (error) console.error(error);
					console.log('success!');
				}
			);
		},
		copyToken() {
			var clipboard = new ClipboardJS('.copy-btn');
			clipboard.on('success', function (e) {
				Toast(`copy success`);
				e.clearSelection();
			});

			clipboard.on('error', function () {
				Toast(`copy error`);
			});
		},
		copy() {
			this.$emit('copy');
		},
	},
};
</script>

<style lang="scss" scoped>
.border {
	display: flex;
	justify-content: space-between;
	padding: 12px;
	border-radius: 8px;
	border: 1px solid #ececec;
	.ercode {
		overflow: hidden;
		width: 110px;
		height: 110px;
		canvas {
			width: 100%;
			height: 100%;
			transform: scale(1.24);
		}
	}
	.info {
		display: flex;
		flex-direction: column;
		justify-content: center;
		flex: 1;
		margin-left: 15px;
		word-break: break-all;
		.font {
			font-size: 14px;
			line-height: 22px;
			font-weight: 400;
		}
		.copy {
			display: flex;
			align-items: center;
			justify-content: center;
			color: #1d9bf0;
			font-size: 16px;
			font-weight: 600;
			width: 100%;
			height: 35px;
			margin-top: 13px;
			border-radius: 35px;
			border: 1px solid #1d9bf0;
		}
	}
}
</style>