hku-class/miniprogram/utils/modules.js
2026-05-13 00:36:39 +08:00

39 lines
1.4 KiB
JavaScript

const MODULES = {
announcements: { key: "announcements", title: "公告", desc: "查看班级重要通知", group: "class", icon: "告" },
schedule: { key: "schedule", title: "排期", desc: "课程、活动与截止日", group: "class", icon: "日" },
directory: { key: "directory", title: "成员名录", desc: "查找同学与班委", group: "class", icon: "友" },
fund: { key: "fund", title: "班费", desc: "查看公开收支账本", group: "class", icon: "账" },
timeline: { key: "timeline", title: "班级动态", desc: "分享近况与评论互动", group: "interact", icon: "动" },
votes: { key: "votes", title: "投票", desc: "参与班级决策", group: "interact", icon: "选" }
};
const MINI_PROGRAM_MODULE_KEYS = Object.keys(MODULES);
function enabledSet(enabledModules) {
const source = Array.isArray(enabledModules) ? enabledModules : MINI_PROGRAM_MODULE_KEYS;
return new Set(source.filter((key) => MINI_PROGRAM_MODULE_KEYS.includes(key)));
}
function isModuleEnabled(key, enabledModules) {
return enabledSet(enabledModules).has(key);
}
function visibleModules(group, enabledModules) {
const enabled = enabledSet(enabledModules);
return MINI_PROGRAM_MODULE_KEYS
.map((key) => MODULES[key])
.filter((item) => item.group === group && enabled.has(item.key));
}
function getModule(key) {
return MODULES[key] || null;
}
module.exports = {
MODULES,
MINI_PROGRAM_MODULE_KEYS,
getModule,
isModuleEnabled,
visibleModules
};