import { request, upload } from '../../utils/api' const app = getApp() Page({ data: { user: null as CoffeeChatUser | null, editing: false, nickname: '' }, onShow() { app.ensureLogin().then((user) => this.setData({ user, nickname: user.nickname })).catch(() => undefined) }, edit() { this.setData({ editing: true }) }, input(event: WechatMiniprogram.CustomEvent<{ value: string }>) { this.setData({ nickname: event.detail.value }) }, cancel() { this.setData({ editing: false }) }, async save() { if (!this.data.user) return; try { const user = await request('/api/auth/me', { method: 'PATCH', data: { nickname: this.data.nickname, avatarUrl: this.data.user.avatarUrl || '' } }); wx.setStorageSync('user', user); app.globalData.user = user; this.setData({ user, editing: false }); wx.showToast({ title: '已保存' }) } catch (error) { wx.showToast({ title: error instanceof Error ? error.message : '保存失败', icon: 'none' }) } }, chooseAvatar(event: WechatMiniprogram.CustomEvent<{ avatarUrl: string }>) { const avatarUrl = event.detail.avatarUrl; this.setData({ 'user.avatarUrl': avatarUrl }); upload(avatarUrl).then((file) => this.setData({ 'user.avatarUrl': file.url })).catch(() => wx.showToast({ title: '头像上传失败', icon: 'none' })) } })