/**
 * @class
 * unotify
 */
class unotify{
	//在一个周期内获取cid
	static async getCid(successCallback, errorCallback){
		var cid = null;
		try{
			//利用promise,直到执行完代码再获取cid
			cid = await this.getCidPeriotic(3);
			//获取后，在缓存中存储cid
			if(typeof successCallback == 'function'){
				iot.storage.setMap('clientId', cid, (res) => {
					console.log("已成功保存cid"+cid);
					successCallback(cid);
			    }, () => {
			    });
			}
		}
		catch (err){
			console.log(err);
			if(typeof errorCallback == 'function'){
				errorCallback(a);
			}
		}
	}
	//周期性获取cid,周期可调整
	static getCidPeriotic(times){
		var self = this;
		return new Promise(function(resolve, reject){
			var i = 0;
			var cid = null;
			var handle = null;
			i++;
			cid = self.getCidOnce(i);
			console.log("第"+i+"次"+"获取的cid为"+cid);
			if(cid != null && cid != 'null' || i >= times){
				window.clearInterval(handle);
				resolve(cid);
			}else{
				handle = setInterval(function(){
					i++;
					cid = self.getCidOnce(i);
					console.log("第"+i+"次"+"获取的cid为"+cid);
					if(cid != null && cid != 'null' || i >= times){
						window.clearInterval(handle);
						resolve(cid);
					}
				},1000);
			}
		});
	}
	//单次获取cid
	static getCidOnce(i){
		var clientInfo = plus.push.getClientInfo();
		if(clientInfo && clientInfo.hasOwnProperty('clientid') && clientInfo.clientid){
//			if(i == 6){
				return(clientInfo.clientid);
//			}else{
//				return(null);
//			}
		}else{
			return(null);
		}
	}
	//长期不断循环获取cid,并更新cid
//	static async getCid(successCallback, errorCallback){
//		var cid = null;
//		var oldCid = null;
//		try{
//			cid = await this.getCidPeriotic(9);
//			if(cid != null && cid != oldCid){
//						successCallback('cid updateSuccess');
//						iot.business.api.send('user/updateCid',{
//							data: {
//								clienId: cid
//							},
//							success: (response) => {
//								if(typeof successCallback == 'function'){
//									uccessCallback('cid updateSuccess');
//								}
//							},
//							error: (error) => {
//								console.log(error);
//								errorCallback(error);
//							}
//						}, true, false);
//			}else{
//				successCallback('cid not updated');
//			}
//		}
//		catch (err){
//			console.log(err);
//			if(typeof errorCallback == 'function'){
//				errorCallback(err);
//			}
//		}
//	}
}
export default unotify;