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