hku-class/miniprogram/pages/mine/index.js
2026-05-12 23:10:05 +08:00

59 lines
1.8 KiB
JavaScript

const { clearSession, refreshMe, requireLogin } = require("../../utils/auth");
const { get } = require("../../utils/api");
const { showError } = require("../../utils/page-helpers");
Page({
data: { user: null, classes: [], activeClassId: null, activeClassName: "" },
async onShow() {
if (!requireLogin()) return;
try {
const user = await refreshMe();
const classRes = await get("/api/classes/");
const app = getApp();
const activeClassId = app.globalData.activeClassId;
const activeMembership = user.memberships?.find((item) => item.class_id === activeClassId) || user.active_membership;
this.setData({
user,
activeClassName: activeMembership?.class_name || "",
classes: (classRes.items || []).map((item) => ({
...item,
is_active: item.id === activeClassId
})),
activeClassId
});
} catch (error) {
showError(error);
}
},
openProfile() {
wx.navigateTo({ url: "/pages/profile-edit/index" });
},
logout() {
clearSession();
wx.removeStorageSync("active_class");
wx.navigateTo({ url: "/pages/bind/index" });
},
switchClass(event) {
const classId = Number(event.currentTarget.dataset.id);
const classItem = this.data.classes.find((item) => item.id === classId);
if (!classItem) return;
wx.setStorageSync("active_class", classItem);
const app = getApp();
app.globalData.activeClassId = classItem.id;
app.globalData.enabledModules = classItem.enabled_modules || null;
this.setData({
activeClassId: classItem.id,
activeClassName: classItem.name,
classes: this.data.classes.map((item) => ({
...item,
is_active: item.id === classItem.id
}))
});
wx.showToast({ title: "已切换班级", icon: "success" });
}
});