update useWsTemplates to use useWebsocket hook

This commit is contained in:
Keith Grant
2020-07-13 13:32:13 -07:00
parent b76783791a
commit 350c585499

View File

@@ -1,10 +1,12 @@
import { useState, useEffect, useRef } from 'react';
import { useState, useEffect } from 'react';
import useWebsocket from '../../../util/useWebsocket';
export default function useWsTemplates(initialTemplates) {
const [templates, setTemplates] = useState(initialTemplates);
const [lastMessage, setLastMessage] = useState(null);
const ws = useRef(null);
const lastMessage = useWebsocket({
jobs: ['status_changed'],
control: ['limit_reached_1'],
});
useEffect(() => {
setTemplates(initialTemplates);
@@ -30,50 +32,6 @@ export default function useWsTemplates(initialTemplates) {
[lastMessage] // eslint-disable-line react-hooks/exhaustive-deps
);
useEffect(() => {
ws.current = new WebSocket(`wss://${window.location.host}/websocket/`);
const connect = () => {
const xrftoken = `; ${document.cookie}`
.split('; csrftoken=')
.pop()
.split(';')
.shift();
ws.current.send(
JSON.stringify({
xrftoken,
groups: {
jobs: ['status_changed'],
control: ['limit_reached_1'],
},
})
);
};
ws.current.onopen = connect;
ws.current.onmessage = e => {
setLastMessage(JSON.parse(e.data));
};
ws.current.onclose = e => {
// eslint-disable-next-line no-console
console.debug('Socket closed. Reconnecting...', e);
setTimeout(() => {
connect();
}, 1000);
};
ws.current.onerror = err => {
// eslint-disable-next-line no-console
console.debug('Socket error: ', err, 'Disconnecting...');
ws.current.close();
};
return () => {
ws.current.close();
};
}, []);
return templates;
}