<script>
	import { initEnv } from '@/utils/env.js';
	import config from '@/config/env.js';

	export default {
		onLaunch: function(options) {
			console.log('App Launch')

			// 0. Mock 模式：仅首次进入时清除登录状态（刷新时保留）
			if (config.mockWechatLogin) {
				const mockInitialized = uni.getStorageSync('__mock_initialized');
				if (!mockInitialized) {
					uni.removeStorageSync('token');
					uni.removeStorageSync('user_info');
					uni.removeStorageSync('temp_token');
					uni.removeStorageSync('auth_info');
					uni.setStorageSync('__mock_initialized', 'true');
					console.log('[Mock] 首次进入，清除登录状态');
				} else {
					console.log('[Mock] 刷新页面，保留登录状态');
				}
			}

			// 1. 环境检测 + 缓存 app_no/platform
			initEnv();

			// #ifdef H5
			// 2. 解析设备编号：优先从 query 参数获取，其次从路径解析
			let deviceId = '';
			const urlParams = new URLSearchParams(window.location.search);
			deviceId = urlParams.get('device_id') || '';

			// 兜底：从路径解析（如 /N1154）
			if (!deviceId) {
				const path = window.location.pathname;
				const segments = path.split('/').filter(Boolean);
				if (segments.length > 0) {
					const last = segments[segments.length - 1];
					if (/^[A-Z][A-Z0-9]+$/.test(last)) {
						deviceId = last;
					}
				}
			}

			// 3. 检查 URL 中是否有授权回调的 code（支付宝用 auth_code，微信用 code）
			const code = urlParams.get('code') || urlParams.get('auth_code');

			if (code) {
				// 有 code → 进入授权 Loading 页处理
				// state 为 "base" 或 "userinfo"，直接透传
				const state = urlParams.get('state') || '';
				let loadingUrl = '/pages/auth/loading?code=' + encodeURIComponent(code);
				if (state) {
					loadingUrl += '&state=' + state;
				}
				// 必须用 reLaunch：支付宝回调时当前页可能就是 loading 页，
				// redirectTo 到同一页面不会重新触发 onLoad，导致请求卡住
				uni.reLaunch({ url: loadingUrl });
				return;
			}

			// 4. 判断是否为根路径或设备编号路径（如 / 或 /N1154）
			const currentPath = window.location.pathname;
			const isRootOrDevice = currentPath === '/' || /^\/[A-Z][A-Z0-9]+$/.test(currentPath);

			// 5. 检查 JWT
			const token = uni.getStorageSync('token');

			if (token) {
				if (isRootOrDevice) {
					// 根路径/设备编号路径 → 跳转首页
					const homeUrl = deviceId
						? `/pages/index/index?device_id=${deviceId}`
						: '/pages/index/scan';
					uni.redirectTo({ url: homeUrl });
				} else {
					// 其他业务页面 → 留在当前页面
					console.log('[App] 已登录，保留在当前页面');
				}
			} else {
				// 无 JWT → 进入授权 Loading 页
				const loadingUrl = deviceId
					? `/pages/auth/loading?device_id=${deviceId}`
					: '/pages/auth/loading';
				uni.redirectTo({ url: loadingUrl });
			}
			// #endif

			// #ifndef H5
			// 小程序环境：直接进入扫码页
			uni.redirectTo({ url: '/pages/index/scan' });
			// #endif
		},
		onShow: function() {
			console.log('App Show')
		},
		onHide: function() {
			console.log('App Hide')
		}
	}
</script>

<style lang="scss">
	/*每个页面公共css */
	@import '@/uni_modules/uni-scss/index.scss';
	/* #ifndef APP-NVUE */
	@import '@/static/customicons.css';
	// 设置整个项目的背景色
	page {
		background-color: #f5f5f5;
	}

	/* #endif */
	.example-info {
		font-size: 14px;
		color: #333;
		padding: 10px;
	}
</style>
