mirror of
https://github.com/ansible/awx.git
synced 2026-05-20 07:17:40 -02:30
update useWsTemplates to use useWebsocket hook
This commit is contained in:
@@ -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) {
|
export default function useWsTemplates(initialTemplates) {
|
||||||
const [templates, setTemplates] = useState(initialTemplates);
|
const [templates, setTemplates] = useState(initialTemplates);
|
||||||
|
const lastMessage = useWebsocket({
|
||||||
const [lastMessage, setLastMessage] = useState(null);
|
jobs: ['status_changed'],
|
||||||
const ws = useRef(null);
|
control: ['limit_reached_1'],
|
||||||
|
});
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setTemplates(initialTemplates);
|
setTemplates(initialTemplates);
|
||||||
@@ -30,50 +32,6 @@ export default function useWsTemplates(initialTemplates) {
|
|||||||
[lastMessage] // eslint-disable-line react-hooks/exhaustive-deps
|
[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;
|
return templates;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user