const NET = require('./request')
const API = require('../config/api')

export function Services(shopId) {
	let corpId = null; let
		serviceURL = null

	const getServiceUrl = async () => {
		uni.showLoading({
			title: '加载中...'
		})
		const shopIds = uni.getStorageSync('service_shopids') || []
		const corpIds = uni.getStorageSync('service_corpIds') || []
		const urls = uni.getStorageSync('service_urls') || []
		try {
			const res = await NET.request(API.CustomerService, {}, 'get')
			if (res.code === '' && res.data.corpId && res.data.url) {
				shopIds.push(shopId)
				corpIds.push(res.data.corpId)
				urls.push(res.data.url)
				uni.setStorageSync('service_shopids', shopIds)
				uni.setStorageSync('service_corpIds', corpIds)
				uni.setStorageSync('service_urls', urls)
				corpId = res.data.corpId
				serviceURL = res.data.url
			}
		} finally {
			uni.hideLoading()
		}
	}

	const flyToService = () => {
		if (!serviceURL || !corpId) {
			return uni.showToast({
				icon: 'none',
				title: '暂无客服~'
			})
		}
		// #ifdef MP-WEIXIN
		wx.openCustomerServiceChat({
			extInfo: {
				url: serviceURL
			},
			corpId
		})
		// #endif
		// #ifdef APP-PLUS
		try {
			let wechatServices = null
			plus.share.getServices((res) => {
				wechatServices = res.find((wechatItem) => wechatItem.id === 'weixin')
				if (wechatServices) {
					wechatServices.openCustomerServiceChat({
						corpid: corpId,
						url: serviceURL
					}, (success) => {
					}, (err) => {
					})
				} else {
					plus.nativeUI.alert('当前环境不支持微信操作!')
				}
			}, (err) => {
				console.error(err)
				uni.showToast({ title: '获取服务失败，不支持该操作。' + JSON.stringify(err), icon: 'none' })
			})
		} catch (err) {
			console.error(err)
			uni.showToast({ title: '调用失败，不支持该操作。' + JSON.stringify(err), icon: 'none' })
		}
		// #endif
		// #ifdef H5
		// window.open(serviceURL) safari浏览器不支持window.open
		window.location.href = serviceURL
		// #endif
	}

	return getServiceUrl().then((res) => ({
		flyToService
	}))
}
