const { request } = require('../../utils/request')

Page({
  data: {
    loading: false,
    user: null,
    form: {
      nickname: '',
      company: '',
      title: '',
      phone: '',
      password: ''
    }
  },

  onShow() {
    this.loadProfile()
  },

  async loadProfile() {
    const app = getApp()
    const user = app.globalData.user || wx.getStorageSync('user')
    this.setData({ user })
    const profile = await request({ url: '/user/profile' })
    this.setData({
      form: {
        nickname: profile.nickname || '',
        company: profile.company || '',
        title: profile.title || '',
        phone: profile.phone || '',
        password: ''
      }
    })
  },

  goto(e) {
    const path = e.currentTarget.dataset.path
    if (!path) return
    wx.navigateTo({ url: path })
  },

  onInput(e) {
    const field = e.currentTarget.dataset.field
    this.setData({ [`form.${field}`]: (e.detail.value || '').trim() })
  },

  async save() {
    if (this.data.loading) return
    this.setData({ loading: true })

    const payload = { ...this.data.form }
    if (!payload.password) {
      delete payload.password
    }

    try {
      const user = await request({
        url: '/user/profile',
        method: 'PUT',
        data: payload
      })
      const app = getApp()
      app.globalData.user = user
      wx.setStorageSync('user', user)
      wx.showToast({ title: '保存成功', icon: 'success' })
      this.setData({ 'form.password': '' })
    } finally {
      this.setData({ loading: false })
    }
  },

  logout() {
    wx.showModal({
      title: '退出登录',
      content: '确定要退出登录吗？',
      success: (res) => {
        if (res.confirm) {
          getApp().clearAuth()
          wx.reLaunch({ url: '/pages/login/index' })
        }
      }
    })
  }
})
