Skip to content

Commit 49de1d0

Browse files
committed
Fixes for console socket disconnecting with HMR enabled
1 parent 2b68e5a commit 49de1d0

File tree

5 files changed

+61
-24
lines changed

5 files changed

+61
-24
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"axios": "^0.18.0",
99
"classnames": "^2.2.6",
1010
"date-fns": "^1.29.0",
11-
"easy-peasy": "^2.5.0",
11+
"easy-peasy": "^3.0.2",
1212
"events": "^3.0.0",
1313
"formik": "^1.5.7",
1414
"jquery": "^3.3.1",

resources/scripts/components/server/Console.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ export default () => {
7979
className={'rounded-t p-2 bg-black overflow-scroll w-full'}
8080
style={{
8181
minHeight: '16rem',
82-
maxHeight: '64rem',
82+
maxHeight: '32rem',
8383
}}
8484
>
8585
<div id={'terminal'} ref={ref}/>
Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,42 @@
11
import React from 'react';
22
import Console from '@/components/server/Console';
33
import { ServerContext } from '@/state/server';
4+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
5+
import { faServer } from '@fortawesome/free-solid-svg-icons/faServer';
6+
import { faCircle } from '@fortawesome/free-solid-svg-icons/faCircle';
7+
import classNames from 'classnames';
48

59
export default () => {
10+
const server = ServerContext.useStoreState(state => state.server.data!);
611
const status = ServerContext.useStoreState(state => state.status.value);
712

813
return (
914
<div className={'my-10 flex'}>
15+
<div className={'flex-1 ml-4'}>
16+
<div className={'rounded shadow-md bg-neutral-700'}>
17+
<div className={'bg-neutral-900 rounded-t p-3 border-b border-black'}>
18+
<p className={'text-sm uppercase'}>
19+
<FontAwesomeIcon icon={faServer} className={'mr-1 text-neutral-300'}/> {server.name}
20+
</p>
21+
</div>
22+
<div className={'p-3'}>
23+
<p className={'text-xs uppercase'}>
24+
<FontAwesomeIcon
25+
icon={faCircle}
26+
className={classNames('mr-1', {
27+
'text-red-500': status === 'offline',
28+
'text-yellow-500': ['running', 'offline'].indexOf(status) < 0,
29+
'text-green-500': status === 'running',
30+
})}
31+
/>
32+
&nbsp;{status}
33+
</p>
34+
</div>
35+
</div>
36+
</div>
1037
<div className={'mx-4 w-3/4 mr-4'}>
1138
<Console/>
1239
</div>
13-
<div className={'flex-1 ml-4'}>
14-
<p>Current status: {status}</p>
15-
</div>
1640
</div>
1741
);
1842
};

resources/scripts/components/server/WebsocketHandler.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { ServerContext } from '@/state/server';
44

55
export default () => {
66
const server = ServerContext.useStoreState(state => state.server.data);
7-
const instance = ServerContext.useStoreState(state => state.socket.instance);
7+
const { instance, connected } = ServerContext.useStoreState(state => state.socket);
88
const setServerStatus = ServerContext.useStoreActions(actions => actions.status.setServerStatus);
99
const { setInstance, setConnectionState } = ServerContext.useStoreActions(actions => actions.socket);
1010

@@ -32,5 +32,15 @@ export default () => {
3232
};
3333
}, [ server ]);
3434

35+
// Prevent issues with HMR in development environments. This might need to also
36+
// exist outside of dev? Will need to see how things go.
37+
if (process.env.NODE_ENV === 'development') {
38+
useEffect(() => {
39+
if (!connected && instance) {
40+
instance.connect();
41+
}
42+
}, [ connected ]);
43+
}
44+
3545
return null;
3646
};

yarn.lock

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3015,17 +3015,17 @@ duplexify@^3.4.2, duplexify@^3.6.0:
30153015
readable-stream "^2.0.0"
30163016
stream-shift "^1.0.0"
30173017

3018-
easy-peasy@^2.5.0:
3019-
version "2.5.0"
3020-
resolved "https://registry.yarnpkg.com/easy-peasy/-/easy-peasy-2.5.0.tgz#5366ff59c71c980cc31ec230dc8855f72b8d2875"
3018+
easy-peasy@^3.0.2:
3019+
version "3.0.2"
3020+
resolved "https://registry.yarnpkg.com/easy-peasy/-/easy-peasy-3.0.2.tgz#1bd9cd589cb6fd930528243b950e13d4f41958a5"
30213021
dependencies:
3022-
immer "^3.1.3"
3022+
immer-peasy "3.1.3"
30233023
memoizerific "^1.11.3"
3024-
redux "^4.0.1"
3024+
prop-types "^15.6.2"
3025+
redux "^4.0.4"
30253026
redux-thunk "^2.3.0"
30263027
shallowequal "^1.1.0"
3027-
type-zoo "^3.3.0"
3028-
typelevel-ts "^0.3.5"
3028+
ts-toolbelt "^3.8.0"
30293029

30303030
ee-first@1.1.1:
30313031
version "1.1.1"
@@ -4206,9 +4206,9 @@ ignore@^5.1.1:
42064206
version "5.1.2"
42074207
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.2.tgz#e28e584d43ad7e92f96995019cc43b9e1ac49558"
42084208

4209-
immer@^3.1.3:
4209+
immer-peasy@3.1.3:
42104210
version "3.1.3"
4211-
resolved "https://registry.yarnpkg.com/immer/-/immer-3.1.3.tgz#59bc742b2aab6e2c676445edb653e588a23c70fc"
4211+
resolved "https://registry.yarnpkg.com/immer-peasy/-/immer-peasy-3.1.3.tgz#d0ea8d388f47ec6b15ab2ca19ffb9f0bf4310110"
42124212

42134213
import-cwd@^2.0.0:
42144214
version "2.1.0"
@@ -6912,13 +6912,20 @@ redux-thunk@^2.3.0:
69126912
version "2.3.0"
69136913
resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622"
69146914

6915-
redux@^4.0.0, redux@^4.0.1:
6915+
redux@^4.0.0:
69166916
version "4.0.1"
69176917
resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.1.tgz#436cae6cc40fbe4727689d7c8fae44808f1bfef5"
69186918
dependencies:
69196919
loose-envify "^1.4.0"
69206920
symbol-observable "^1.2.0"
69216921

6922+
redux@^4.0.4:
6923+
version "4.0.4"
6924+
resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.4.tgz#4ee1aeb164b63d6a1bcc57ae4aa0b6e6fa7a3796"
6925+
dependencies:
6926+
loose-envify "^1.4.0"
6927+
symbol-observable "^1.2.0"
6928+
69226929
regenerate-unicode-properties@^8.1.0:
69236930
version "8.1.0"
69246931
resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e"
@@ -7969,6 +7976,10 @@ ts-loader@^5.3.3:
79697976
micromatch "^3.1.4"
79707977
semver "^5.0.1"
79717978

7979+
ts-toolbelt@^3.8.0:
7980+
version "3.14.0"
7981+
resolved "https://registry.yarnpkg.com/ts-toolbelt/-/ts-toolbelt-3.14.0.tgz#f4c4984cf4e988915a0175fd6a8ded00bd1d23b0"
7982+
79727983
tslib@^1.8.1:
79737984
version "1.9.3"
79747985
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
@@ -8004,18 +8015,10 @@ type-is@~1.6.17, type-is@~1.6.18:
80048015
media-typer "0.3.0"
80058016
mime-types "~2.1.24"
80068017

8007-
type-zoo@^3.3.0:
8008-
version "3.3.0"
8009-
resolved "https://registry.yarnpkg.com/type-zoo/-/type-zoo-3.3.0.tgz#d5b59393b09a48ac30380c50e2369e828817e9b3"
8010-
80118018
typedarray@^0.0.6:
80128019
version "0.0.6"
80138020
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
80148021

8015-
typelevel-ts@^0.3.5:
8016-
version "0.3.5"
8017-
resolved "https://registry.yarnpkg.com/typelevel-ts/-/typelevel-ts-0.3.5.tgz#9f242c193fa6c5489d2342c642ab8912a065af9d"
8018-
80198022
typescript@^3.6.3:
80208023
version "3.6.3"
80218024
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.6.3.tgz#fea942fabb20f7e1ca7164ff626f1a9f3f70b4da"

0 commit comments

Comments
 (0)