<template>
	<App/>
</template>
<script>
	import i18n from '@/common/i18n/index.js'
	
	export default {
		onLaunch: function() {
			console.log('App Launch')
			// 延迟检查安全验证，确保plus对象已初始化
			setTimeout(() => {
				this.checkAppSecurity()
			}, 1000)
		},
		onShow: function() {
			console.log('App Show')
			// 每次应用显示时检查安全验证，延迟执行确保plus对象可用
			setTimeout(() => {
				this.checkAppSecurity()
			}, 500)
		},
		// 添加一个全局方法用于测试
		onReady: function() {
			// 将验证方法挂载到全局，方便测试
			// #ifdef APP-PLUS
			if (typeof plus !== 'undefined') {
				plus.webview.currentWebview().evalJS(`
					if (typeof window.testAuth === 'undefined') {
						window.testAuth = function() {
							console.log('手动触发验证测试');
							// 这里可以手动触发验证逻辑
						};
					}
				`)
			}
			// #endif
		},
		onHide: function() {
			console.log('App Hide')
		},
		methods: {
			// 检查应用安全设置
			checkAppSecurity() {
				try {
					const securityEnabled = uni.getStorageSync('appSecurityEnabled')
					console.log('安全设置状态:', securityEnabled)
					if (securityEnabled) {
						// 延迟一点时间确保页面完全加载
						setTimeout(() => {
							this.performBiometricAuth()
						}, 100)
					} else {
					}
					
					// 添加调试信息到页面
					this.showDebugInfo(securityEnabled)
				} catch (e) {
					console.error('检查安全设置失败:', e)
				}
			},

			// 显示调试信息
			showDebugInfo(securityEnabled) {
				// console.log('当前时间:', new Date().toLocaleString())
				// console.log('应用状态:', 'onShow')
				console.log('========================')
				
				if (securityEnabled) {
					setTimeout(() => {
						// uni.showToast({
						// 	icon: 'none',
						// 	duration: 2000
						// })
					}, 500)
				}
			},
			
			// 执行生物识别验证
			performBiometricAuth() {
				console.log('开始执行生物识别验证')
				
				// 先尝试使用原生生物识别，如果失败则使用模拟验证
				let useNativeAuth = false
				
				// #ifdef APP-PLUS
				// 检查plus对象是否可用
				if (typeof plus !== 'undefined' && plus.fingerprint) {
					console.log('检测到plus.fingerprint，尝试使用原生验证')
					useNativeAuth = true
					
					// 检查是否支持生物识别
					plus.fingerprint.isKeyguardSecure((secureResult) => {
						console.log('生物识别支持检查结果:', secureResult)
						if (secureResult) {
							console.log('设备支持生物识别，开始原生验证')
							// 执行生物识别验证
							plus.fingerprint.authenticate((result) => {
								console.log('生物识别验证成功:', result)
							// 验证成功，继续正常流程
							uni.showToast({
								title: i18n.t('verifySuccess'),
								icon: 'success'
							})
							}, (error) => {
								console.log('生物识别验证失败:', error)
								// 验证失败，显示错误信息
								uni.showModal({
									title: i18n.t('biometricAuthFailed'),
									content: i18n.t('biometricAuthCancel'),
									showCancel: false,
									confirmText: i18n.t('modalConfirm'),
									success: (res) => {
										if (res.confirm) {
											// 用户确认后关闭应用
											// #ifdef APP-PLUS
											plus.runtime.quit()
											// #endif
										}
									}
								})
							}, {
								message: i18n.t('biometricPrompt')
							})
						} else {
							console.log('设备不支持生物识别，使用模拟验证')
							this.showMockAuth()
						}
					}, (error) => {
						console.log('检查生物识别支持时出错:', error)
						// 检查失败时也显示模拟验证
						this.showMockAuth()
					})
				} else {
					console.log('plus对象或plus.fingerprint不可用，使用模拟验证')
					useNativeAuth = false
				}
				// #endif
				
				// 如果不是APP环境或原生验证不可用，使用模拟验证
				if (!useNativeAuth) {
					console.log('使用模拟验证')
					// 延迟一点时间确保界面完全加载
					setTimeout(() => {
						this.showMockAuth()
					}, 200)
				}
			},
			
			// 显示模拟验证（用于基座或不支持生物识别的情况）
			showMockAuth() {
				console.log('显示模拟验证界面')
				uni.showModal({
					title: i18n.t('identityVerification'),
					content: i18n.t('pleaseEnterPasswordOrBiometric'),
					editable: true,
					placeholderText: i18n.t('pleaseEnterPassword'),
					confirmText: i18n.t('verify'),
					cancelText: i18n.t('cancel'),
					success: (res) => {
						if (res.confirm) {
							if (res.content && res.content.length > 0) {
								console.log('模拟验证成功')
								uni.showToast({
									title: i18n.t('verifySuccess'),
									icon: 'success'
								})
							} else {
								uni.showToast({
									title: i18n.t('pleaseEnterPassword'),
									icon: 'none'
								})
								// 重新显示验证
								setTimeout(() => {
									this.showMockAuth()
								}, 1000)
							}
						} else {
							console.log('用户取消验证')
							// 用户取消验证，可以选择关闭应用或允许继续
							uni.showModal({
								title: i18n.t('authFailed'),
								content: i18n.t('authFailedContent'),
								showCancel: false,
								confirmText: i18n.t('confirm'),
								success: (result) => {
									// #ifdef APP-PLUS
									if (typeof plus !== 'undefined') {
										plus.runtime.quit()
									}
									// #endif
								}
							})
						}
					}
				})
			}
		}
	}
</script>

<style>
	/*每个页面公共css */
</style>
