refactor: hooks

This commit is contained in:
cha0s 2022-08-10 14:33:03 -05:00
parent ba33810599
commit 43f9c7c3dd
4 changed files with 98 additions and 114 deletions

View File

@ -1,29 +1,21 @@
import {Hooks} from '@flecks/core'; export const hooks = {
'@flecks/server.up': async (flecks) => {
// const { // if ('production' === NODE_ENV) {
// NODE_ENV, // return;
// } = process.env; // }
const {Project, User} = flecks.get('$flecks/db.models');
export default { if (!await User.findOne({where: {email: 'persea@cha0s.io'}})) {
[Hooks]: { const user = await User.create({
'@flecks/server.up': async (flecks) => { email: 'persea@cha0s.io',
// if ('production' === NODE_ENV) { isAdmin: true,
// return; });
// } await user.addHashedPassword('foobar');
const {Project, User} = flecks.get('$flecks/db.models'); await user.addProject(
if (!await User.findOne({where: {email: 'persea@cha0s.io'}})) { await Project.create({
const user = await User.create({ uuid: 'c41ddaac-89c2-46a4-b3e5-1d634a1a7c36',
email: 'persea@cha0s.io', }),
isAdmin: true, );
}); await user.save();
await user.addHashedPassword('foobar'); }
await user.addProject(
await Project.create({
uuid: 'c41ddaac-89c2-46a4-b3e5-1d634a1a7c36',
}),
);
await user.save();
}
},
}, },
}; };

View File

@ -1,6 +1,5 @@
import {join} from 'path'; import {join} from 'path';
import {Hooks} from '@flecks/core';
import isElectron from 'is-electron'; import isElectron from 'is-electron';
const { const {
@ -8,29 +7,27 @@ const {
NODE_ENV, NODE_ENV,
} = process.env; } = process.env;
export default { export const hooks = {
[Hooks]: { '@flecks/core.starting': (flecks) => {
'@flecks/core.starting': (flecks) => { const {browserWindowOptions} = flecks.get('@flecks/electron/server');
const {browserWindowOptions} = flecks.get('@flecks/electron/server'); browserWindowOptions.icon = join(FLECKS_CORE_ROOT, 'icon.png');
browserWindowOptions.icon = join(FLECKS_CORE_ROOT, 'icon.png'); },
}, '@flecks/electron/server.window': async (win) => {
'@flecks/electron/server.window': async (win) => { // win.removeMenu();
// win.removeMenu(); if ('production' !== NODE_ENV) {
if ('production' !== NODE_ENV) { win.openDevTools();
win.openDevTools(); }
} win.maximize();
win.maximize(); win.once('ready-to-show', () => {
win.once('ready-to-show', () => { win.show();
win.show(); });
}); },
}, '@flecks/web/server.request.route': (flecks) => async (req, res, next) => {
'@flecks/web/server.request.route': (flecks) => async (req, res, next) => { if (isElectron() && 0 === req.user.id) {
if (isElectron() && 0 === req.user.id) { const {User} = flecks.get('$flecks/db.models');
const {User} = flecks.get('$flecks/db.models'); req.logIn(await User.findByPk(1), next);
req.logIn(await User.findByPk(1), next); return;
return; }
} next();
next();
},
}, },
}; };

View File

@ -4,7 +4,6 @@ import {
replaceResource, replaceResource,
undo, undo,
} from '@avocado/resource/persea'; } from '@avocado/resource/persea';
import {Hooks} from '@flecks/core';
import Persea from './components/persea'; import Persea from './components/persea';
import organization from './sidebar/organization'; import organization from './sidebar/organization';
@ -17,37 +16,35 @@ import {
export * from './state'; export * from './state';
export default { export const hooks = {
[Hooks]: { '@flecks/react.roots': () => Persea,
'@flecks/react.roots': () => Persea, '@flecks/redux.effects': (flecks) => {
'@flecks/redux.effects': (flecks) => { const withSocket = (fn) => (...args) => fn(...args.concat(flecks.get('$flecks/socket.socket')));
const withSocket = (fn) => (...args) => fn(...args.concat(flecks.get('$flecks/socket.socket'))); return Object.fromEntries(
return Object.fromEntries( [
[ patchJsonResource,
patchJsonResource, redo,
redo, replaceResource,
replaceResource, undo,
undo, ]
] .map((action) => [
.map((action) => [ action,
action, withSocket((store, action, socket) => {
withSocket((store, action, socket) => { if (action.meta?.isRemote) {
if (action.meta?.isRemote) { return;
return; }
} socket.send(['Action', action]);
socket.send(['Action', action]); }),
}), ]),
]), );
);
},
'@flecks/redux.slices': () => ({
project,
projects,
resource,
}),
'@persea/core.sidebar': () => ({
projects: projectsSidebar,
organization,
}),
}, },
'@flecks/redux.slices': () => ({
project,
projects,
resource,
}),
'@persea/core.sidebar': () => ({
projects: projectsSidebar,
organization,
}),
}; };

View File

@ -1,39 +1,37 @@
import {join} from 'path'; import {join} from 'path';
import {Flecks, Hooks} from '@flecks/core'; import {Flecks} from '@flecks/core';
import express from 'express'; import express from 'express';
import startFlush from './start-flush'; import startFlush from './start-flush';
const resources = express.static(join(process.cwd(), 'projects')); const resources = express.static(join(process.cwd(), 'projects'));
export default { export const hooks = {
[Hooks]: { '@flecks/core.starting': (flecks) => {
'@flecks/core.starting': (flecks) => { flecks.set('$persea/core.patches', []);
flecks.set('$persea/core.patches', []); flecks.set('$persea/core.replacements', []);
flecks.set('$persea/core.replacements', []); startFlush(flecks);
startFlush(flecks);
},
'@flecks/core.webpack': (target, config) => {
if ('web' === target) {
// eslint-disable-next-line no-param-reassign
config.devServer.writeToDisk = true;
}
},
'@flecks/db/server.models': Flecks.provide(require.context('./models', false, /\.js$/)),
'@flecks/db/server.models.decorate': (
Flecks.decorate(require.context('./models/decorators', false, /\.js$/))
),
'@flecks/web/server.request.socket': () => (req, res, next) => {
if (req.url.startsWith('/projects')) {
req.url = req.url.slice(9);
resources(req, res, next);
return;
}
next();
},
'@flecks/socket.packets.decorate': (
Flecks.decorate(require.context('./packets/decorators', false, /\.js$/))
),
}, },
'@flecks/core.webpack': (target, config) => {
if ('web' === target) {
// eslint-disable-next-line no-param-reassign
config.devServer.writeToDisk = true;
}
},
'@flecks/db/server.models': Flecks.provide(require.context('./models', false, /\.js$/)),
'@flecks/db/server.models.decorate': (
Flecks.decorate(require.context('./models/decorators', false, /\.js$/))
),
'@flecks/web/server.request.socket': () => (req, res, next) => {
if (req.url.startsWith('/projects')) {
req.url = req.url.slice(9);
resources(req, res, next);
return;
}
next();
},
'@flecks/socket.packets.decorate': (
Flecks.decorate(require.context('./packets/decorators', false, /\.js$/))
),
}; };