<template>
	<view class="content">
		<view class="invite-wrapper" v-if="inviteUrl">
			<uni-qrcode class="invite-qrcode" ref="qrcode" cid="invite-qr-canvas" :text="inviteUrl" :margin="10" makeOnLoad
			 @makeComplete="qrcodeComplete" />
			<view class="share-btn">
				<button type="primary" @click="shareLink">分享链接</button>
				<button type="primary" @click="shareImage">分享图片</button>
			</view>
			<view class="share-btn">
				<button type="primary" @click="toInvitedUser">我邀请的用户</button>
			</view>
			<uni-popup id="popupShare" ref="popupShare" type="share">
				<uni-popup-share title="分享到" :shareType="shareType" @select="select"></uni-popup-share>
			</uni-popup>
		</view>
	</view>
</template>

<script>
	import {
		mapState
	} from 'vuex'
	export default {
		data() {
			return {
				inviteUrl: '',
				qrcodeImagePath: '',
				qrcodePath: '',
				shareType: ''
			}
		},
		onLoad() {
			uni.showLoading({
				title: '加载中...'
			})
			uniCloud.callFunction({
				name: 'user-center',
				data: {
					action: 'getInviteCode'
				},
				success: (res) => {
					console.log(res);
					if (res.result.code === 0) {
						// 这里请修改为真实的邀请页面url
						this.inviteUrl = 'https://login.tpl.dcloud.net.cn/#/pages/invite-reg/invite-reg?invite_code=' + res.result.myInviteCode
					} else {
						uni.showModal({
							content: '获取用户邀请码失败:' + res.result.msg,
							showCancel: false
						})
					}
				},
				fail: (err) => {
					uni.showModal({
						content: '获取用户邀请码失败，请稍后再试',
						showCancel: false
					})
				},
				complete() {
					uni.hideLoading()
				}
			})
		},
		methods: {
			copyInviteUrl() {
				uni.setClipboardData({
					data: this.inviteUrl
				})
			},
			qrcodeComplete(path) {
				this.qrcodeImagePath = path
			},
			shareLink() {
				this.shareType = 'link'
				this.$refs.popupShare.open()
			},
			shareImage() {
				this.shareType = 'image'
				this.$refs.popupShare.open()
			},
			select({
				item
			}) {
				const shareTitle = '登录模板',
					shareSummary = 'DCloud邀请您试用登录模板'
				let params = {}
				switch (`${this.shareType}_${item.name}`) {
					case 'link_weixin':
						params = {
							type: 1,
							summary: this.inviteUrl,
							scene: 'WXSceneSession'
						}
						break;
					case 'link_qq':
						params = {
							type: 1,
							title: shareTitle,
							summary: shareSummary,
							href: this.inviteUrl
						}
						break;
					case 'link_more':
						uni.setClipboardData({
							data: this.inviteUrl
						})
						return
					case 'image_weixin':
						params = {
							type: 2,
							imageUrl: this.qrcodeImagePath,
							scene: 'WXSceneSession'
						}
						break;
					case 'image_qq':
						params = {
							type: 2,
							imageUrl: this.qrcodeImagePath
						}
						break;
					case 'image_more':
						uni.shareWithSystem({
							type: 'image',
							imageUrl: this.qrcodeImagePath
						})
						return
					default:
						break;
				}
				console.log(params);
				uni.share({
					provider: item.name,
					...params,
					success() {
						uni.showModal({
							content: '分享成功',
							showCancel: false
						})
					},
					fail(err) {
						uni.showModal({
							content: '分享失败：' + err.errMsg,
							showCancel: false
						})
					}
				})

			},
			toInvitedUser() {
				uni.navigateTo({
					url: '/pages/invited-user/invited-user'
				})
			}
		}
	}
</script>

<style>
	.invite-wrapper {
		display: flex;
		padding: 20px;
		flex-direction: column;
		align-items: center;
	}

	.invite-qrcode {
		border-radius: 10px;
		box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 10px 1px;
		overflow: hidden;
	}

	.share-btn {
		display: flex;
		flex-direction: row;
		padding: 20px 0px 10px 0px;
	}

	.share-btn button {
		flex: 1;
		margin: 0px 10px;
		border-radius: 40px;
	}
</style>
