feat: default state
This commit is contained in:
parent
ceb4de1179
commit
11e3c32eb9
|
@ -1,5 +1,14 @@
|
||||||
|
import fs from 'fs';
|
||||||
|
import {join} from 'path';
|
||||||
|
import {promisify} from 'util';
|
||||||
|
|
||||||
import {decorateWithLatus, gatherWithLatus} from '@latus/core';
|
import {decorateWithLatus, gatherWithLatus} from '@latus/core';
|
||||||
|
|
||||||
|
import {treeToPaths} from '../tree-utils';
|
||||||
|
|
||||||
|
const readFile = promisify(fs.readFile).bind(fs);
|
||||||
|
const stat = promisify(fs.stat).bind(fs);
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
hooks: {
|
hooks: {
|
||||||
'@latus/db/server/models': gatherWithLatus(
|
'@latus/db/server/models': gatherWithLatus(
|
||||||
|
@ -8,5 +17,42 @@ export default {
|
||||||
'@latus/db/server/models.decorate': decorateWithLatus(
|
'@latus/db/server/models.decorate': decorateWithLatus(
|
||||||
require.context('../models/decorators', false, /\.js$/),
|
require.context('../models/decorators', false, /\.js$/),
|
||||||
),
|
),
|
||||||
|
'@latus/redux/defaultState': async (req) => {
|
||||||
|
const projects = req
|
||||||
|
? await req.user.projects()
|
||||||
|
: {};
|
||||||
|
const resources = await Object.entries(projects)
|
||||||
|
.reduce(async (r, [uuid, structure]) => ({
|
||||||
|
...(await r),
|
||||||
|
...(
|
||||||
|
await (await Promise.all(treeToPaths(structure)
|
||||||
|
.map(async (path) => {
|
||||||
|
try {
|
||||||
|
return [
|
||||||
|
path,
|
||||||
|
(await stat(join(process.cwd(), 'projects', uuid, path))).isFile(),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
return [path, false];
|
||||||
|
}
|
||||||
|
})))
|
||||||
|
.filter(([, stat]) => stat)
|
||||||
|
.map(([path]) => path)
|
||||||
|
.reduce(async (r, path) => ({
|
||||||
|
...(await r),
|
||||||
|
[join(uuid, path)]: (
|
||||||
|
await readFile(join(process.cwd(), 'projects', uuid, path))
|
||||||
|
).toString('base64'),
|
||||||
|
}), {})
|
||||||
|
),
|
||||||
|
}), {});
|
||||||
|
return {
|
||||||
|
projects: {
|
||||||
|
projects,
|
||||||
|
resources,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user