bigbluebutton-Github/bigbluebutton-html5/imports/ui/components/shortcut-help/service.jsx

39 lines
1.2 KiB
React
Raw Normal View History

import React from 'react';
import getFromUserSettings from '/imports/ui/services/users-settings';
const withShortcutHelper = (WrappedComponent, param) => (props) => {
const BASE_SHORTCUTS = window.meetingClientSettings.public.app.shortcuts;
const ENABLED_SHORTCUTS = getFromUserSettings('bbb_shortcuts', null);
let shortcuts = Object.values(BASE_SHORTCUTS);
if (ENABLED_SHORTCUTS) {
shortcuts = Object.values(BASE_SHORTCUTS).map((el) => {
const obj = { ...el };
2020-02-20 02:44:26 +08:00
obj.descId = obj.descId.toLowerCase();
return obj;
2020-02-20 02:44:26 +08:00
}).filter(el => ENABLED_SHORTCUTS.includes(el.descId.toLowerCase()));
}
if (param !== undefined) {
if (!Array.isArray(param)) {
shortcuts = shortcuts
2020-02-20 02:44:26 +08:00
.filter(el => el.descId.toLowerCase() === param.toLowerCase())
.map(el => el.accesskey)
.pop();
} else {
shortcuts = shortcuts
.filter(el => param.map(p => p.toLowerCase()).includes(el.descId.toLowerCase()))
.reduce((acc, current) => {
acc[current.descId.toLowerCase()] = current.accesskey;
return acc;
}, {});
}
}
return (
<WrappedComponent {...props} shortcuts={shortcuts} />
);
};
export default withShortcutHelper;