diff --git a/packages/console-app/src/components/AppLink.js b/packages/console-app/src/components/AppLink.js
index 4ea92be..3fd2705 100644
--- a/packages/console-app/src/components/AppLink.js
+++ b/packages/console-app/src/components/AppLink.js
@@ -7,7 +7,7 @@ import Link from '@material-ui/core/Link';
import { getServiceUrl } from '../util/config';
-const getAppUrl = (config, { name, version, text }) => {
+const getAppUrl = (config, { name, version }) => {
const base = getServiceUrl(config, 'app.server');
const pathComponents = [base];
diff --git a/packages/console-app/src/containers/Main.js b/packages/console-app/src/containers/Main.js
index d98ee58..688d7d1 100644
--- a/packages/console-app/src/containers/Main.js
+++ b/packages/console-app/src/containers/Main.js
@@ -24,7 +24,7 @@ import Bots from './panels/bots/Bots';
import Config from './panels/Config';
import IPFS from './panels/ipfs/IPFS';
import Metadata from './panels/Metadata';
-import Signaling from './panels/Signaling';
+import Signaling from './panels/signal/Signaling';
import Status from './panels/Status';
import WNS from './panels/wns/WNS';
diff --git a/packages/console-app/src/containers/panels/Signaling.js b/packages/console-app/src/containers/panels/Signaling.js
deleted file mode 100644
index 94dd924..0000000
--- a/packages/console-app/src/containers/panels/Signaling.js
+++ /dev/null
@@ -1,20 +0,0 @@
-//
-// Copyright 2020 DxOS.org
-//
-
-import React from 'react';
-import { makeStyles } from '@material-ui/core';
-
-const useStyles = makeStyles(theme => ({
- root: {}
-}));
-
-const Signaling = () => {
- const classes = useStyles();
-
- return (
-
- );
-};
-
-export default Signaling;
diff --git a/packages/console-app/src/containers/panels/ipfs/IPFS.js b/packages/console-app/src/containers/panels/ipfs/IPFS.js
index 827c410..8334560 100644
--- a/packages/console-app/src/containers/panels/ipfs/IPFS.js
+++ b/packages/console-app/src/containers/panels/ipfs/IPFS.js
@@ -2,11 +2,13 @@
// Copyright 2020 DxOS.org
//
-import React from 'react';
+import React, { useState } from 'react';
import get from 'lodash.get';
import { useQuery } from '@apollo/react-hooks';
import { makeStyles } from '@material-ui/core';
+import Tab from '@material-ui/core/Tab';
+import Tabs from '@material-ui/core/Tabs';
import TableBody from '@material-ui/core/TableBody';
import TableHead from '@material-ui/core/TableHead';
import TableRow from '@material-ui/core/TableRow';
@@ -68,8 +70,13 @@ const useStyles = makeStyles((theme) => ({
}
}));
+const TAB_STATUS = 'status';
+const TAB_LOG = 'log';
+
const IPFS = () => {
const classes = useStyles();
+ const [tab, setTab] = useState(TAB_STATUS);
+
const ipfsResponse = useQueryStatusReducer(useQuery(IPFS_STATUS));
const wnsResponse = useQueryStatusReducer(useQuery(WNS_RECORDS, {
variables: { attributes: { type: RECORD_TYPE, service: SERVICE_TYPE } }
@@ -115,7 +122,12 @@ const IPFS = () => {
return (
+
+ setTab(value)}>
+
+
+
+
}
>
WNS-registered IPFS Servers
diff --git a/packages/console-app/src/containers/panels/signal/SignalLog.js b/packages/console-app/src/containers/panels/signal/SignalLog.js
new file mode 100644
index 0000000..77a84ea
--- /dev/null
+++ b/packages/console-app/src/containers/panels/signal/SignalLog.js
@@ -0,0 +1,26 @@
+//
+// Copyright 2020 DxOS.org
+//
+
+import React, { useContext } from 'react';
+import { useQuery } from '@apollo/react-hooks';
+
+import SIGNAL_LOG from '../../../gql/signal_log.graphql';
+
+import { ConsoleContext, useQueryStatusReducer } from '../../../hooks';
+
+import Log from '../../../components/Log';
+
+const SignalLog = () => {
+ const { config } = useContext(ConsoleContext);
+ const data = useQueryStatusReducer(useQuery(SIGNAL_LOG, { pollInterval: config.api.intervalLog }));
+ if (!data) {
+ return null;
+ }
+
+ return (
+
+ );
+};
+
+export default SignalLog;
diff --git a/packages/console-app/src/containers/panels/signal/SignalStatus.js b/packages/console-app/src/containers/panels/signal/SignalStatus.js
new file mode 100644
index 0000000..23f7146
--- /dev/null
+++ b/packages/console-app/src/containers/panels/signal/SignalStatus.js
@@ -0,0 +1,26 @@
+//
+// Copyright 2020 DxOS.org
+//
+
+import React, { useContext } from 'react';
+import { useQuery } from '@apollo/react-hooks';
+
+import SIGNAL_STATUS from '../../../gql/signal_status.graphql';
+
+import { ConsoleContext, useQueryStatusReducer } from '../../../hooks';
+
+import Json from '../../../components/Json';
+
+const SignalStatus = () => {
+ const { config } = useContext(ConsoleContext);
+ const data = useQueryStatusReducer(useQuery(SIGNAL_STATUS, { pollInterval: config.api.intervalQuery }));
+ if (!data) {
+ return null;
+ }
+
+ return (
+
+ );
+};
+
+export default SignalStatus;
diff --git a/packages/console-app/src/containers/panels/signal/Signaling.js b/packages/console-app/src/containers/panels/signal/Signaling.js
new file mode 100644
index 0000000..bfe9fa4
--- /dev/null
+++ b/packages/console-app/src/containers/panels/signal/Signaling.js
@@ -0,0 +1,74 @@
+//
+// Copyright 2020 DxOS.org
+//
+
+import React, { useState } from 'react';
+import { makeStyles } from '@material-ui/core';
+import Paper from '@material-ui/core/Paper';
+import Tab from '@material-ui/core/Tab';
+import Tabs from '@material-ui/core/Tabs';
+import TabContext from '@material-ui/lab/TabContext';
+
+import Panel from '../../../components/Panel';
+import Toolbar from '../../../components/Toolbar';
+
+import SignalLog from './SignalLog';
+import SignalStatus from './SignalStatus';
+
+const TAB_STATUS = 'status';
+const TAB_LOG = 'log';
+
+const useStyles = makeStyles(() => ({
+ expand: {
+ flex: 1
+ },
+
+ panel: {
+ display: 'flex',
+ overflow: 'hidden',
+ flex: 1
+ },
+
+ paper: {
+ display: 'flex',
+ overflow: 'hidden',
+ flex: 1
+ }
+}));
+
+const Signal = () => {
+ const classes = useStyles();
+ const [tab, setTab] = useState(TAB_STATUS);
+ const [type, setType] = useState();
+
+ return (
+
+ setTab(value)}>
+
+
+
+
+ }
+ >
+
+ {tab === TAB_STATUS && (
+
+ )}
+
+ {tab === TAB_LOG && (
+
+
+
+ )}
+
+
+ );
+};
+
+export default Signal;
diff --git a/packages/console-app/src/containers/panels/wns/WNSRecords.js b/packages/console-app/src/containers/panels/wns/WNSRecords.js
index a62b832..9e59bd4 100644
--- a/packages/console-app/src/containers/panels/wns/WNSRecords.js
+++ b/packages/console-app/src/containers/panels/wns/WNSRecords.js
@@ -84,7 +84,7 @@ const WNSRecords = ({ type }) => {
Type
Identifier
- Query
+ GraphQL
Name
Version
Created
diff --git a/packages/console-app/src/gql/signal_log.graphql b/packages/console-app/src/gql/signal_log.graphql
new file mode 100644
index 0000000..9e8194d
--- /dev/null
+++ b/packages/console-app/src/gql/signal_log.graphql
@@ -0,0 +1,10 @@
+#
+# Copyright 2020 DxOS.org
+#
+
+query {
+ signal_log @client {
+ timestamp
+ log
+ }
+}
diff --git a/packages/console-app/src/gql/signal_status.graphql b/packages/console-app/src/gql/signal_status.graphql
new file mode 100644
index 0000000..2a76b39
--- /dev/null
+++ b/packages/console-app/src/gql/signal_status.graphql
@@ -0,0 +1,10 @@
+#
+# Copyright 2020 DxOS.org
+#
+
+query {
+ signal_status @client {
+ timestamp
+ json
+ }
+}
diff --git a/packages/console-app/src/resolvers.js b/packages/console-app/src/resolvers.js
index 1a646a2..019c0f4 100644
--- a/packages/console-app/src/resolvers.js
+++ b/packages/console-app/src/resolvers.js
@@ -80,7 +80,32 @@ export const createResolvers = config => {
timestamp: timestamp(),
log: [...cachedLog].reverse()
};
- }
+ },
+
+ signal_status: async () => {
+ log('Signal status...');
+
+ const url = getServiceUrl(config, 'signal.api', { path: 'status' });
+ const res = await fetch(url);
+
+ return {
+ __typename: 'JSONResult',
+ timestamp: timestamp(),
+
+ // NOTE: Hack since this should be a string according to the schema.
+ json: res.json()
+ };
+ },
+
+ signal_log: async () => {
+ log('Signal log...');
+
+ return {
+ __typename: 'JSONLog',
+ timestamp: timestamp(),
+ log: []
+ };
+ },
}
};
};