<script>
	export default {
		globalData: {
			NativeEvent: true,
			recentNativeEvent: "", // 初始化一个全局变量
			recentNativeData: 0 // 初始化一个全局变量
		},
		onLaunch: function(options) {
			uni.setStorageSync('AppUser', {})
			uni.setStorageSync('userInfo', {})
			// console.log=()=>{}
			// === wgt 包启动诊断日志 ===
			console.log('=== App Launch 开始 ===')
			console.log('启动参数:', JSON.stringify(options))
			console.log('环境:', process.env.NODE_ENV)

			uni.setStorageSync('onNativeEventReceive', "no")
			// 清除上次遗留的跳转指令，防止正常启动时自动跳转
			uni.removeStorageSync('jumpTarget_url');
			const startTime = Date.now()

			// 1. 获取并存储系统信息（只获取一次）
			const systemInfo = uni.getSystemInfoSync()
			uni.setStorageSync('systemInfo', {
				platform: systemInfo.platform,
				system: systemInfo.system,
				osName: systemInfo.osName,
				osVersion: systemInfo.osVersion,
				statusBarHeight: systemInfo.statusBarHeight,
				windowWidth: systemInfo.windowWidth,
				windowHeight: systemInfo.windowHeight,
				isIOS: systemInfo.platform === 'ios',
				isAndroid: systemInfo.platform === 'android'
			})

			// 2. 立即设置宿主消息监听（避免错过消息）
			this.setupNativeEventListener()

			// 3. 同步初始化配置（必须完成）
			this.initConfig(options)

			// 启动完成
			console.log(`=== App 启动完成，耗时: ${Date.now() - startTime}ms ===`)

			// 初始化埋点，进入支付宝模拟器首页
			this.$apiUserEvent('all', {
				type: 'event',
				key: 'index',
				value: "进入支付宝模拟器首页",
			})
		},

		onShow: function() {
			console.log('App Show')
			// 监听已在 onLaunch 中设置，这里不再重复
		},

		onHide: function() {
			console.log('App Hide')
		},
		onExit: function() {
			// 关闭数据库
			// #ifdef APP
			// plus.sqlite.closeDatabase({ name: 'zyds' })
			uni.sendNativeEvent('unimp_stop_alipay', "stop", ret => {
				// console.log('宿主App回传的数据：' + ret);
			});
			// #endif
			console.log('App onExit')
		},

		methods: {
			/**
			 * 设置宿主消息监听（在 onLaunch 中调用）
			 */
			setupNativeEventListener() {
				if (this.globalData.NativeEvent) {
					this.globalData.NativeEvent = false
					console.log('开始监听宿主消息')

					if (typeof uni.onNativeEventReceive === 'function') {
						uni.onNativeEventReceive((event, data) => {
							if (event) {
								console.log('接收到宿主消息:', event, data)

								if (event == "token") {
									let header = uni.getStorageSync('header') || {}
									header["x-token"] = data
									uni.setStorageSync('header', header)
									console.log('已更新 token')

									//获取宿主用户信息
									try {
										this.$getUserInfo()
									} catch (error) {
										console.error('获取用户信息失败:', error)
									}
								} else if (event == "jump") {
									if (data) {
										console.log('接收到跳转指令，已缓存目标地址:', data);
										uni.setStorageSync('jumpTarget_url', data);
										// 强制重定向到首页，触发onShow获取用户信息后再跳转
										uni.reLaunch({
											url: '/pages/index/index'
										});
									}
								} else if (event == 'wx_pay_result' || event == 'ios_pay_result') {
									this.globalData.recentNativeEvent = event
									this.globalData.recentNativeData = data
								}
							}
						})
					} else {
						console.log('uni.onNativeEventReceive 不可用，跳过监听')
					}
				}
			},

			/**
			 * 初始化应用配置
			 */
			initConfig(options) {
				console.log('=== 配置初始化 ===')

				// 检查是否有外部传入的配置数据
				const hasExtraData = options?.referrerInfo?.extraData &&
					JSON.stringify(options.referrerInfo.extraData) !== '{}'

				console.log('宿主是否传递配置:', hasExtraData)

				if (hasExtraData) {
					console.log('→ 使用宿主 extraData')
					this.initFromExtraData(options.referrerInfo.extraData)
				} else {
					console.log('→ 宿主未传递配置，使用默认配置')
					// ⚠️ 关键修改：不再强制退出，使用默认配置
					this.initDevelopmentConfig()
				}
			},

			/**
			 * 从外部数据初始化配置
			 */
			initFromExtraData(extraData) {
				// 批量设置 Storage，减少 I/O 次数
				let storageData={}
				if(uni.getStorageSync('isTest')){
					storageData = {
						host: extraData.host,
						header: {
							"x-token": extraData['x-token'],
							"x-version": extraData['x-version'],
							"x-platform": extraData['x-platform'],
							"x-device-id": extraData['x-device-id'],
							"x-mobile-brand": extraData['x-mobile-brand'],
							"x-mobile-model": extraData['x-mobile-model'],
							"x-channel": extraData['x-channel'],
							"x-package": extraData['x-package'],
							"x-click-id": extraData['x-click-id'],
							// #ifdef APP-PLUS
							"header": {
								"version": this.$version,
							}
							// #endif
						},
						encrypt: extraData['encrypt'],
						decrypt: extraData['decrypt']
					}
				}else{
					if (extraData['safeBottom']) {
						this.$store.state["safeBottomAz"]=Number(extraData['safeBottom'])||0
					}
					storageData = {
						host: extraData.host,
						header: {
							// #ifdef APP-PLUS
							"header": {
								"version": this.$version,
							}
							// #endif
						}
					}
				}
				
				// 批量写入
				Object.keys(storageData).forEach(key => {
					uni.setStorageSync(key, storageData[key])
				})
				if (extraData['isCombo']) {
					uni.setStorageSync('isCombo', extraData['isCombo'])
				}
				if (extraData['paytype']) {
					uni.setStorageSync('isCombo', extraData['paytype'] == 'combo' ? 'ok' : '')
				}
			},

			/**
			 * 初始化开发环境配置（也作为默认配置）
			 */
			initDevelopmentConfig() {
				console.log('初始化默认配置')

				// 批量设置开发环境配置
				const devConfig = {
					host: "https://flaunt.batiao8.com/",
					header: {
						"x-token": "55e2481e-cbd2-4d2d-82d3-b47e191fcfc0"
					},
					decrypt: "e4rOtnF8tJjtHO7ecZeJHN1rapED5ImB",
					encrypt: "xn08hYoizXhZ1zHP8DVqfCm2yHxPmhil"
				}

				Object.keys(devConfig).forEach(key => {
					uni.setStorageSync(key, devConfig[key])
				})

				console.log('默认配置初始化完成')
			}
		}
	}
</script>

<style>
	/* #ifndef APP-NVUE */
	@import "./common/color.css";
	/* #endif */
</style>