feat: electron goodies

This commit is contained in:
cha0s 2022-04-04 07:16:26 -05:00
parent e350d52186
commit 204444f8c8
7 changed files with 66 additions and 11 deletions

View File

@ -90,11 +90,12 @@
- 'react-window'
port: 32360
request.route:
- '@flecks/user/session/server'
- '@flecks/user/server'
- '@flecks/user/session'
- '@flecks/user'
- '@persea/core/electron'
- '...'
request.socket:
- '@persea/core/server'
- '@persea/core'
- '...'
stream.html:
- '@flecks/react'
@ -137,3 +138,4 @@
'@flecks/user/session': {}
'@persea/bootstrap': {}
'@persea/core': {}
'@persea/core/electron': {}

View File

@ -3,6 +3,7 @@
<head>
<base href="/" />
<meta charset="utf-8">
<link rel="icon" type="image/png" href="/icon.png" />
<meta name="viewport" content="width=device-width, user-scalable=no" />
<title>Persea</title>
<style>

21
build/web.neutrinorc.js Normal file
View File

@ -0,0 +1,21 @@
/* eslint-disable import/no-extraneous-dependencies */
const copy = require('@neutrinojs/copy');
module.exports = async (flecks) => {
// eslint-disable-next-line global-require
const config = await require('@flecks/web/server/build/web.neutrinorc')(flecks);
config.use.push(
copy({
copyUnmodified: true,
patterns: [
{
from: 'icon.png',
to: 'web/assets/icon.png',
},
],
}),
);
return config;
};

BIN
icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@ -17,6 +17,8 @@
"files": [
"assets",
"build",
"electron/server.js",
"electron/server.js.map",
"index.css",
"index.css.map",
"index.js",
@ -41,6 +43,7 @@
"express": "^4.17.1",
"fast-json-patch": "^3.0.0-1",
"glob": "^7.1.6",
"is-electron": "^2.2.1",
"natsort": "^2.0.2",
"react-hex-editor": "^0.3.0",
"react-modal": "^3.12.1",

View File

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

View File

@ -24,14 +24,6 @@ export default {
'@flecks/db/server.models.decorate': (
Flecks.decorate(require.context('./models/decorators', false, /\.js$/))
),
'@flecks/electron/server.window': async (win) => {
win.removeMenu();
win.openDevTools();
win.maximize();
win.once('ready-to-show', () => {
win.show();
});
},
'@flecks/web/server.request.socket': () => (req, res, next) => {
if (req.url.startsWith('/projects')) {
req.url = req.url.slice(9);