hku-class/miniprogram/utils/page-helpers.js
2026-05-12 23:10:05 +08:00

49 lines
1.5 KiB
JavaScript

const { getModule, isModuleEnabled } = require("./modules");
function getActiveClassId() {
const app = getApp();
const user = app.globalData.user || wx.getStorageSync("auth_user");
return app.globalData.activeClassId || user?.active_membership?.class_id || user?.memberships?.[0]?.class_id || null;
}
function getEnabledModules() {
const app = getApp();
const user = app.globalData.user || wx.getStorageSync("auth_user");
return app.globalData.enabledModules || user?.enabled_modules || null;
}
function getActiveClassName() {
const app = getApp();
const user = app.globalData.user || wx.getStorageSync("auth_user");
const classId = getActiveClassId();
const savedClass = wx.getStorageSync("active_class") || null;
if (savedClass?.id === classId && savedClass?.name) return savedClass.name;
const membership = user?.memberships?.find((item) => item.class_id === classId);
return membership?.class_name || user?.active_membership?.class_name || "HKU ICB";
}
function ensureModuleOpen(moduleKey) {
const enabledModules = getEnabledModules();
if (isModuleEnabled(moduleKey, enabledModules)) return true;
const module = getModule(moduleKey);
wx.redirectTo({
url: `/pages/module-unavailable/index?title=${encodeURIComponent(module?.title || "功能")}`
});
return false;
}
function showError(error, fallback = "加载失败") {
wx.showToast({
title: error?.message || fallback,
icon: "none"
});
}
module.exports = {
ensureModuleOpen,
getActiveClassId,
getActiveClassName,
getEnabledModules,
showError
};