import process from 'node:process'
import { defineManifestConfig } from '@uni-helper/vite-plugin-uni-manifest'
import { loadEnv } from 'vite'

// 获取项目名称， 不需要自动生成可将该变量与函数删除
const projectName = getProjectName()
const manifestEnv = loadEnv(process.env.NODE_ENV ?? 'development', process.cwd(), '')
const weixinAppId = manifestEnv.UNI_MP_WEIXIN_APPID || 'touristappid'

export default defineManifestConfig({
  'name': '光明文旅地图',
  'appid': '',
  'description': '深圳市光明区全域文旅地图、POI 数字化展示、本地行程规划与到点打卡 POC',
  'versionName': '0.3.0',
  'versionCode': '30',
  'transformPx': false,
  'uniStatistics': {
    enable: false,
  },
  /* 5+App特有相关 */
  'app-plus': {
    usingComponents: true,
    nvueStyleCompiler: 'uni-app',
    compilerVersion: 3,
    splashscreen: {
      alwaysShowBeforeRender: true,
      waiting: true,
      autoclose: true,
      delay: 0,
    },
    /* 模块配置 */
    modules: {},
    /* 应用发布信息 */
    distribute: {
      /* android打包配置 */
      android: {
        permissions: [
          '<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>',
          '<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>',
          '<uses-permission android:name="android.permission.VIBRATE"/>',
          '<uses-permission android:name="android.permission.READ_LOGS"/>',
          '<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>',
          '<uses-feature android:name="android.hardware.camera.autofocus"/>',
          '<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>',
          '<uses-permission android:name="android.permission.CAMERA"/>',
          '<uses-permission android:name="android.permission.GET_ACCOUNTS"/>',
          '<uses-permission android:name="android.permission.READ_PHONE_STATE"/>',
          '<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>',
          '<uses-permission android:name="android.permission.WAKE_LOCK"/>',
          '<uses-permission android:name="android.permission.FLASHLIGHT"/>',
          '<uses-feature android:name="android.hardware.camera"/>',
          '<uses-permission android:name="android.permission.WRITE_SETTINGS"/>',
        ],
      },
      /* ios打包配置 */
      ios: {},
      /* SDK配置 */
      sdkConfigs: {},
      /* 图标配置 */
      icons: {
        android: {},
        ios: {},
      },
    },
  },
  /* 快应用特有相关 */
  'quickapp': {},
  /* 小程序特有相关 */
  'mp-weixin': {
    // Configure locally with UNI_MP_WEIXIN_APPID; do not commit project credentials.
    appid: weixinAppId,
    lazyCodeLoading: 'requiredComponents',
    permission: {
      'scope.userLocation': {
        desc: '用于地图定位、行程优化和到点打卡判断',
      },
    },
    requiredPrivateInfos: ['getLocation', 'startLocationUpdate', 'onLocationChange'],
    setting: {
      urlCheck: true,
    },
    usingComponents: true,
    projectname: projectName,
  },
  'mp-alipay': {
    usingComponents: true,
  },
  'mp-baidu': {
    usingComponents: true,
  },
  'mp-toutiao': {
    usingComponents: true,
  },
  'vueVersion': '3',
})

/**
 * 自动生成项目名称
 * 当前模拟 return 项目名称，可根据业务需求自行修改函数逻辑
 */
function getProjectName(name?: string) {
  // 项目名称前缀，可根据业务需求自行修改环境与前缀
  const prefix = {
    development: 'dev',
    production: 'prod',
  }
  // 项目名称
  const projectname = name ?? '光明文旅地图'
  const mode = process.env.NODE_ENV === 'production' ? 'production' : 'development'
  return `【${prefix[mode]}】${projectname}`
}
