// PK Mini 模块专用 Storage 工具
// 使用 pk_mini_ 前缀避免与主项目冲突

const PREFIX = 'pk_mini_'

export function setStorage(key, value) {
  localStorage.setItem(PREFIX + key, JSON.stringify(value))
}

export function getStorage(key) {
  const value = localStorage.getItem(PREFIX + key)
  if (value) {
    try {
      return JSON.parse(value)
    } catch (e) {
      return value
    }
  }
  return null
}

export function getPromiseStorage(key) {
  return new Promise((resolve, reject) => {
    const value = getStorage(key)
    if (value) {
      resolve(value)
    } else {
      reject(new Error('Key not found: ' + key))
    }
  })
}

export function clearStorage(key) {
  localStorage.removeItem(PREFIX + key)
}

export function getPromiseSessionStorage(key) {
  return new Promise((resolve, reject) => {
    const value = sessionStorage.getItem(PREFIX + key)
    if (value) {
      try {
        resolve(JSON.parse(value))
      } catch (e) {
        resolve(value)
      }
    } else {
      reject(new Error('Key not found: ' + key))
    }
  })
}

export function setSessionStorage(key, value) {
  sessionStorage.setItem(PREFIX + key, JSON.stringify(value))
}

// 获取主项目的用户数据（用于获取 token 和用户信息）
// 主项目使用 'user' 键存储用户信息
export function getMainUserData() {
  // 优先从 'user' 获取（主项目当前使用的键）
  let userData = localStorage.getItem('user')
  if (userData) {
    try {
      return JSON.parse(userData)
    } catch (e) {
      // 解析失败，继续尝试其他键
    }
  }

  // 兼容：尝试从 'user_data' 获取（旧键名）
  userData = localStorage.getItem('user_data')
  if (userData) {
    try {
      return JSON.parse(userData)
    } catch (e) {
      return null
    }
  }
  return null
}
