big api change (demon.require)
parent
67612a8f1d
commit
a694bb1f60
@ -0,0 +1,83 @@
|
|||||||
|
// @flow
|
||||||
|
/*import { make, join } from '@modules/styles';
|
||||||
|
import SettingsAPI from '@modules/apis/Settings';
|
||||||
|
import Manager, { modules } from '@modules/manager';
|
||||||
|
|
||||||
|
const styles = make('pluginCard');
|
||||||
|
const Settings = SettingsAPI.create('modules');
|
||||||
|
|
||||||
|
const { Filters } = Webpack;
|
||||||
|
|
||||||
|
const [
|
||||||
|
SwitchItem,
|
||||||
|
{ Heading },
|
||||||
|
SettingsIcon,
|
||||||
|
] = Webpack.bulk(
|
||||||
|
Filters.byDisplayName('SwitchItem'),
|
||||||
|
Filters.byProps('Heading'),
|
||||||
|
Filters.byDisplayName('Gear'),
|
||||||
|
);*/
|
||||||
|
|
||||||
|
import common from "../../../common";
|
||||||
|
import webpack from "../../../webpack";
|
||||||
|
const React = common.React;
|
||||||
|
|
||||||
|
const SwitchItem = webpack.findByDisplayName("SwitchItem");
|
||||||
|
const { Heading } = webpack.findByProps("Heading");
|
||||||
|
const SettingsIcon = webpack.findByDisplayName("Gear");
|
||||||
|
|
||||||
|
function useDidUpdateEffect(effect, deps?) {
|
||||||
|
const didMountRef = React.useRef(false);
|
||||||
|
|
||||||
|
React.useEffect(() => {
|
||||||
|
if (didMountRef.current) return effect();
|
||||||
|
|
||||||
|
// else set didMount to true
|
||||||
|
didMountRef.current = true;
|
||||||
|
}, deps);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default (module: {
|
||||||
|
file: string,
|
||||||
|
name: string,
|
||||||
|
version: string,
|
||||||
|
description: string,
|
||||||
|
setPage: React.Dispatch<React.SetStateAction<string>>
|
||||||
|
}) => {
|
||||||
|
return (
|
||||||
|
<div className={styles.container}>
|
||||||
|
<div className={styles.headerContainer}>
|
||||||
|
<div className={styles.textContainer}>
|
||||||
|
<Heading
|
||||||
|
level={2}
|
||||||
|
lineClamp={1}
|
||||||
|
className={styles.text}
|
||||||
|
variant="heading-lg/medium"
|
||||||
|
>
|
||||||
|
{module.name}
|
||||||
|
</Heading>
|
||||||
|
<div className={styles.version}>{module.version}</div>
|
||||||
|
</div>
|
||||||
|
<SwitchItem
|
||||||
|
hideBorder
|
||||||
|
value={enabled}
|
||||||
|
onChange={setEnabled}
|
||||||
|
className={styles.switch}
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
className={join(
|
||||||
|
styles.settings,
|
||||||
|
!enabled || !settings ? styles.settingsDisabled : false
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
<SettingsIcon
|
||||||
|
onClick={() =>
|
||||||
|
enabled && settings && setPage(module.file)
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className={styles.description}>{module.description}</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
@ -1,7 +1,32 @@
|
|||||||
|
// @flow
|
||||||
import init from "./init.js";
|
import init from "./init.js";
|
||||||
|
import settingsInj from "./api/settings/settingsInj";
|
||||||
|
|
||||||
if (window.demon) {
|
const obj = {};
|
||||||
delete window.demon; // this is a very good idea
|
|
||||||
|
init(obj);
|
||||||
|
|
||||||
|
window.demon = {};
|
||||||
|
|
||||||
|
function isAllowed(mod: String): boolean {
|
||||||
|
//TODO: permissions checking
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
init(window);
|
window.demon.require = (mod: String): Object => {
|
||||||
|
if (!isAllowed(mod)) {
|
||||||
|
throw new Error("Not allowed!"); //TODO: make this not irrepairably error out
|
||||||
|
}
|
||||||
|
const mods = mod.split("/");
|
||||||
|
let res = obj.demon;
|
||||||
|
mods.forEach((m) => {
|
||||||
|
if (m in res) {
|
||||||
|
res = res[m];
|
||||||
|
} else {
|
||||||
|
throw new Error("Module does not exist!");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return res;
|
||||||
|
};
|
||||||
|
|
||||||
|
settingsInj.init();
|
||||||
|
Loading…
Reference in new issue