/**
 * 在这个js中，集中处理来自OA的传入参数
 *
 */

/**
 * web页面调用WPS的方法入口
 *  * info参数结构
 * info:[
 *      {
 *       '方法名':'方法参数',需要执行的方法
 *     },
 *     ...
 *   ]
 * @param {*} info
 */
function dispatcher(info) {
	var funcs = info.funcs

	if (info.dotime && funcs.length)
		loginfo('接受到请求，请求时间' + GetCNTimeString(new Date(info.dotime)))

	// if (funcs.length > 0) wps.Application.Visible = true
	//执行web页面传递的方法
	setTimeout(function () {
		for (var index = 0; index < funcs.length; index++) {
			var func = funcs[index]
			for (var key in func) {
				var params = func[key]

				initAuthParams(params)
				if (!IsSilentMode()) wps.Application.Visible = true

				toggleBeforeOAfterLoading('处理中', true, true)
				loginfo('系统操作:' + key)
				switch (key) {
					case 'OpenDoc':
					case 'QingGao':
					case 'UpdateRegion':
					case 'PrintDocument':
					case 'DOCConvertToPDF':
					case 'DOCConvertToOFD':
					case 'SaveFileToLocal':
						OpenFile(params)
						break
					case 'TaoDa': {
						var tmp = params.fileName
						params.fileName = params.ModelUrl
						params.ModelUrl = tmp
					}
					case 'GaiZhang':
						let fileName = GetFileNameByParams(params)
						if (params.action == 'taoda' && !!params.oldDocName)
							fileName = params.oldDocName
						//下载红头文件盖章文件
						DownloadFile(params.ModelUrl, '模板', true)
							.then((filepath) => {
								wps.PluginStorage.setItem('ModelUrl', filepath)
								wps.PluginStorage.setItem(
									'ContentFieldName',
									params.ContentFieldName
								)
								OpenFile(params)
							})
							.catch((code) => {
								OAWebNotice(fileName)
								ShowMessage(`下载文件[模板]失败！错误代码:H${code}`, 'error', 5)
							})
						break
					case 'ExitWPS':
						ExitWPS(params)
						break
					default:
						break
				}
			}
		}
	}, 100)

	//兼容处理心跳
	Heart && Heart.OASystemOnLine() //Date.now() + 10e3);
	return { message: 'ok', app: wps.WpsApplication().Name }
}
/**
 * 获取活动文档的状态
 */
function GetDocStatus() {
	let l_doc = wps.WpsApplication().ActiveDocument
	if (l_doc && pCheckIfOADoc()) {
		//此方法还可根据需要进行扩展
		return {
			message: 'GetDocStatus',
			docstatus: {
				words: l_doc.Words.Count,
				saved: l_doc.Saved,
				pages: l_doc.ActiveWindow.Panes.Item(1).Pages.Count,
			},
		}
	}
}

/**
 * 关闭WPS活动文档并退出WPS进程
 */
function ExitWPS() {
	let l_doc = wps.WpsApplication().ActiveDocument
	if (l_doc && pCheckIfOADoc()) {
		//此方法还可根据需要进行扩展
		l_doc.Close()
	}
	if (
		// TODO 为替换showConfirm 因为未使用此函数
		wps.confirm(
			'要关闭WPS软件，请确认文档都已保存。\n点击确定后关闭WPS，点击取消继续编辑。'
		)
	) {
		wps.WpsApplication().Quit()
	}
}
