diff --git a/client/components/app.jsx b/client/components/app.jsx
index c66786e..b0f1c9f 100644
--- a/client/components/app.jsx
+++ b/client/components/app.jsx
@@ -1,6 +1,7 @@
//react
-import React from 'react';
+import React, { useContext } from 'react';
import { BrowserRouter, Switch } from 'react-router-dom';
+import { TokenContext } from './utilities/token-provider';
//library components
import LazyRoute from './lazy-route';
@@ -15,6 +16,8 @@ import Footer from './panels/footer';
import PopupChat from './panels/popup-chat';
const App = props => {
+ const authTokens = useContext(TokenContext);
+
//default render
return (
@@ -33,7 +36,7 @@ const App = props => {
import('./pages/not-found')} />
-
+ { authTokens.accessToken ? : <>> }
);
diff --git a/client/components/panels/popup-chat.jsx b/client/components/panels/popup-chat.jsx
index 4c57d5c..c7547b1 100644
--- a/client/components/panels/popup-chat.jsx
+++ b/client/components/panels/popup-chat.jsx
@@ -1,38 +1,38 @@
-import React, { useState, useRef } from 'react';
-//import { io } from 'socket.io-client';
+import React, { useState, useEffect, useRef, useContext } from 'react';
+import { TokenContext } from '../utilities/token-provider';
+import { io } from 'socket.io-client';
import '../../styles/popup-chat.css';
-//const socket = io(`${process.env.CHAT_URI}/chat`);
+const socket = io(`${process.env.CHAT_URI}/chat`);
const PopupChat = props => {
const [open, setOpen] = useState(false);
- const [chatlog, setChatlog] = useState([
- { username: 'foo', text: 'bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar '},
- { username: 'foo', text: 'bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar '},
- { username: 'foo', text: 'bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar '},
- { username: 'foo', text: 'bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar '},
- { username: 'foo', text: 'bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar '},
- { username: 'foo', text: 'bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar '},
- { username: 'foo', text: 'bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar '},
- { username: 'foo', text: 'bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar '},
- { username: 'foo', text: 'bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar '},
- { username: 'foo', text: 'bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar '},
- { username: 'foo', text: 'bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar '},
- { username: 'foo', text: 'bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar '},
- { username: 'foo', text: 'bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar '},
- { username: 'foo', text: 'bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar '},
- { username: 'foo', text: 'bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar '},
- { username: 'foo', text: 'bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar '},
- { username: 'foo', text: 'bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar '}
- ]);
+ const [chatlog, setChatlog] = useState([]);
const inputRef = useRef();
+ const sendRef = useRef();
+ const endRef = useRef();
+
+ const authTokens = useContext(TokenContext);
+
+ const pushChatlog = line => setChatlog(prevChatlog => [...prevChatlog, line]);
+
+ useEffect(() => {
+ socket.on('message', message => pushChatlog(message));
+ socket.on('disconnect', reason => pushChatlog({ emphasis: true, text: 'Lost connection' }));
+ }, []);
+
+ useEffect(() => {
+ if (open) {
+ endRef.current.scrollIntoView();
+ }
+ }, [chatlog, open]);
if (!open) {
return (