Skip to content

Commit 6d79ad2

Browse files
Attempt 2?
80% sure this isn't how to use react-helmet.... but it works....
1 parent 4a27e56 commit 6d79ad2

File tree

10 files changed

+59
-1
lines changed

10 files changed

+59
-1
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
"react-dom": "npm:@hot-loader/react-dom",
2727
"react-fast-compare": "^3.2.0",
2828
"react-google-recaptcha": "^2.0.1",
29+
"react-helmet": "^6.1.0",
2930
"react-hot-loader": "^4.12.21",
3031
"react-i18next": "^11.2.1",
3132
"react-redux": "^7.1.0",
@@ -61,6 +62,7 @@
6162
"@types/query-string": "^6.3.0",
6263
"@types/react": "^16.9.41",
6364
"@types/react-dom": "^16.9.8",
65+
"@types/react-helmet": "^6.0.0",
6466
"@types/react-redux": "^7.1.1",
6567
"@types/react-router": "^5.1.3",
6668
"@types/react-router-dom": "^5.1.3",

resources/scripts/components/server/ServerConsole.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React, { lazy, useEffect, useState } from 'react';
2+
import { Helmet } from 'react-helmet';
23
import { ServerContext } from '@/state/server';
34
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
45
import { faCircle, faHdd, faMemory, faMicrochip, faServer } from '@fortawesome/free-solid-svg-icons';
@@ -61,6 +62,9 @@ export default () => {
6162

6263
return (
6364
<PageContentBlock css={tw`flex`}>
65+
<Helmet>
66+
<title> {server.name} | Console </title>
67+
</Helmet>
6468
<div css={tw`w-1/4`}>
6569
<TitledGreyBox title={server.name} icon={faServer}>
6670
<p css={tw`text-xs uppercase`}>

resources/scripts/components/server/backups/BackupContainer.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React, { useEffect, useState } from 'react';
2+
import { Helmet } from 'react-helmet';
23
import Spinner from '@/components/elements/Spinner';
34
import getServerBackups from '@/api/server/backups/getServerBackups';
45
import useServer from '@/plugins/useServer';
@@ -18,6 +19,7 @@ export default () => {
1819
const [ loading, setLoading ] = useState(true);
1920

2021
const backups = ServerContext.useStoreState(state => state.backups.data);
22+
const server = ServerContext.useStoreState(state => state.server.data!);
2123
const setBackups = ServerContext.useStoreActions(actions => actions.backups.setBackups);
2224

2325
useEffect(() => {
@@ -37,6 +39,9 @@ export default () => {
3739

3840
return (
3941
<PageContentBlock>
42+
<Helmet>
43+
<title> {server.name} | Backups</title>
44+
</Helmet>
4045
<FlashMessageRender byKey={'backups'} css={tw`mb-4`}/>
4146
{!backups.length ?
4247
<p css={tw`text-center text-sm text-neutral-400`}>

resources/scripts/components/server/databases/DatabasesContainer.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React, { useEffect, useState } from 'react';
2+
import { Helmet } from 'react-helmet';
23
import getServerDatabases from '@/api/server/getServerDatabases';
34
import { ServerContext } from '@/state/server';
45
import { httpErrorToHuman } from '@/api/http';
@@ -19,6 +20,7 @@ export default () => {
1920
const [ loading, setLoading ] = useState(true);
2021

2122
const databases = ServerContext.useStoreState(state => state.databases.data);
23+
const servername = ServerContext.useStoreState(state => state.server.data.name);
2224
const setDatabases = ServerContext.useStoreActions(state => state.databases.setDatabases);
2325

2426
useEffect(() => {
@@ -36,6 +38,9 @@ export default () => {
3638

3739
return (
3840
<PageContentBlock>
41+
<Helmet>
42+
<title> {servername} | Databases </title>
43+
</Helmet>
3944
<FlashMessageRender byKey={'databases'} css={tw`mb-4`}/>
4045
{(!databases.length && loading) ?
4146
<Spinner size={'large'} centered/>

resources/scripts/components/server/files/FileManagerContainer.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React, { useEffect } from 'react';
2+
import { Helmet } from 'react-helmet';
23
import { httpErrorToHuman } from '@/api/http';
34
import { CSSTransition } from 'react-transition-group';
45
import Spinner from '@/components/elements/Spinner';
@@ -26,6 +27,8 @@ export default () => {
2627
const { id } = useServer();
2728
const { hash } = useLocation();
2829
const { data: files, error, mutate } = useFileManagerSwr();
30+
31+
const servername = ServerContext.useStoreState(state => state.server.data.name);
2932
const setDirectory = ServerContext.useStoreActions(actions => actions.files.setDirectory);
3033
const setSelectedFiles = ServerContext.useStoreActions(actions => actions.files.setSelectedFiles);
3134

@@ -42,6 +45,9 @@ export default () => {
4245

4346
return (
4447
<PageContentBlock showFlashKey={'files'}>
48+
<Helmet>
49+
<title> {servername} | File Manager </title>
50+
</Helmet>
4551
<FileManagerBreadcrumbs/>
4652
{
4753
!files ?

resources/scripts/components/server/network/NetworkContainer.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import React, { useEffect, useState } from 'react';
2+
import { Helmet } from 'react-helmet';
3+
import { ServerContext } from '@/state/server';
24
import tw from 'twin.macro';
35
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
46
import { faNetworkWired } from '@fortawesome/free-solid-svg-icons';
@@ -28,6 +30,8 @@ const NetworkContainer = () => {
2830
const [ loading, setLoading ] = useState<false | number>(false);
2931
const { data, error, mutate } = useSWR<Allocation[]>(uuid, key => getServerAllocations(key), { initialData: allocations });
3032

33+
const servername = ServerContext.useStoreState(state => state.server.data.name);
34+
3135
const setPrimaryAllocation = (id: number) => {
3236
clearFlashes('server:network');
3337

@@ -61,6 +65,9 @@ const NetworkContainer = () => {
6165

6266
return (
6367
<PageContentBlock showFlashKey={'server:network'}>
68+
<Helmet>
69+
<title> {servername} | Network </title>
70+
</Helmet>
6471
{!data ?
6572
<Spinner size={'large'} centered/>
6673
:

resources/scripts/components/server/schedules/ScheduleContainer.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React, { useEffect, useState } from 'react';
2+
import { Helmet } from 'react-helmet';
23
import getServerSchedules from '@/api/server/schedules/getServerSchedules';
34
import { ServerContext } from '@/state/server';
45
import Spinner from '@/components/elements/Spinner';
@@ -22,6 +23,7 @@ export default ({ match, history }: RouteComponentProps) => {
2223
const [ visible, setVisible ] = useState(false);
2324

2425
const schedules = ServerContext.useStoreState(state => state.schedules.data);
26+
const servername = ServerContext.useStoreState(state => state.server.data.name);
2527
const setSchedules = ServerContext.useStoreActions(actions => actions.schedules.setSchedules);
2628

2729
useEffect(() => {
@@ -37,6 +39,9 @@ export default ({ match, history }: RouteComponentProps) => {
3739

3840
return (
3941
<PageContentBlock>
42+
<Helmet>
43+
<title> {servername} | Schedules </title>
44+
</Helmet>
4045
<FlashMessageRender byKey={'schedules'} css={tw`mb-4`}/>
4146
{(!schedules.length && loading) ?
4247
<Spinner size={'large'} centered/>

resources/scripts/components/server/settings/SettingsContainer.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react';
2+
import { Helmet } from 'react-helmet';
23
import TitledGreyBox from '@/components/elements/TitledGreyBox';
34
import { ServerContext } from '@/state/server';
45
import { useStoreState } from 'easy-peasy';
@@ -20,6 +21,9 @@ export default () => {
2021

2122
return (
2223
<PageContentBlock>
24+
<Helmet>
25+
<title> {server.name} | Settings </title>
26+
</Helmet>
2327
<FlashMessageRender byKey={'settings'} css={tw`mb-4`}/>
2428
<div css={tw`md:flex`}>
2529
<div css={tw`w-full md:flex-1 md:mr-10`}>

resources/scripts/components/server/users/UsersContainer.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React, { useEffect, useState } from 'react';
2+
import { Helmet } from 'react-helmet';
23
import { ServerContext } from '@/state/server';
34
import { Actions, useStoreActions, useStoreState } from 'easy-peasy';
45
import { ApplicationStore } from '@/state';
@@ -17,6 +18,7 @@ export default () => {
1718

1819
const uuid = ServerContext.useStoreState(state => state.server.data!.uuid);
1920
const subusers = ServerContext.useStoreState(state => state.subusers.data);
21+
const servername = ServerContext.useStoreState(state => state.server.data.name);
2022
const setSubusers = ServerContext.useStoreActions(actions => actions.subusers.setSubusers);
2123

2224
const permissions = useStoreState((state: ApplicationStore) => state.permissions.data);
@@ -49,6 +51,9 @@ export default () => {
4951

5052
return (
5153
<PageContentBlock>
54+
<Helmet>
55+
<title> {servername} | Subusers </title>
56+
</Helmet>
5257
<FlashMessageRender byKey={'users'} css={tw`mb-4`}/>
5358
{!subusers.length ?
5459
<p css={tw`text-center text-sm text-neutral-400`}>

yarn.lock

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5564,7 +5564,7 @@ react-fast-compare@^2.0.1:
55645564
version "2.0.4"
55655565
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9"
55665566

5567-
react-fast-compare@^3.2.0:
5567+
react-fast-compare@^3.1.1, react-fast-compare@^3.2.0:
55685568
version "3.2.0"
55695569
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb"
55705570
integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==
@@ -5576,6 +5576,16 @@ react-google-recaptcha@^2.0.1:
55765576
prop-types "^15.5.0"
55775577
react-async-script "^1.1.1"
55785578

5579+
react-helmet@^6.1.0:
5580+
version "6.1.0"
5581+
resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726"
5582+
integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==
5583+
dependencies:
5584+
object-assign "^4.1.1"
5585+
prop-types "^15.7.2"
5586+
react-fast-compare "^3.1.1"
5587+
react-side-effect "^2.1.0"
5588+
55795589
react-hot-loader@^4.12.21:
55805590
version "4.12.21"
55815591
resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.12.21.tgz#332e830801fb33024b5a147d6b13417f491eb975"
@@ -5643,6 +5653,11 @@ react-router@5.1.2:
56435653
tiny-invariant "^1.0.2"
56445654
tiny-warning "^1.0.0"
56455655

5656+
react-side-effect@^2.1.0:
5657+
version "2.1.0"
5658+
resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.0.tgz#1ce4a8b4445168c487ed24dab886421f74d380d3"
5659+
integrity sha512-IgmcegOSi5SNX+2Snh1vqmF0Vg/CbkycU9XZbOHJlZ6kMzTmi3yc254oB1WCkgA7OQtIAoLmcSFuHTc/tlcqXg==
5660+
56465661
react-transition-group@^4.4.1:
56475662
version "4.4.1"
56485663
resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.1.tgz#63868f9325a38ea5ee9535d828327f85773345c9"

0 commit comments

Comments
 (0)