abhi-plugin-gatsby-preview
Version:
A Gatsby plugin shows status of cloud preview
64 lines (56 loc) • 1.56 kB
JavaScript
;
const React = require("react");
const io = require("socket.io-client");
function PreviewProvider({
children
}) {
const [showStatusBar, setShowStatus] = React.useState(false);
const [message, setMessage] = React.useState("");
React.useEffect(() => {
const socket = io();
socket.on("connect", () => {
console.log("Connected to Gatsby Preview");
});
socket.on("status", data => {
console.log(`Received data for status msg`, data, typeof data);
let jsonData;
try {
jsonData = JSON.parse(data);
} catch (e) {
console.error(e);
}
console.log(jsonData);
const event = jsonData && jsonData.event;
if (event) {
setShowStatus(true);
}
if (event === "SUCCESS") {
setMessage("You Gatsby Preview is reloading...");
setTimeout(() => {
window.location.reload();
}, 1000);
} else {
setMessage("You Gatsby Preview is building, the page will reload when complete...");
}
});
return () => {
return socket.close();
};
});
return /*#__PURE__*/React.createElement(React.Fragment, null, showStatusBar && /*#__PURE__*/React.createElement("div", {
style: {
position: `fixed`,
width: `100%`,
top: 0,
left: 0,
backgroundColor: `purple`,
color: `white`,
textAlign: `center`
}
}, message), children);
}
exports.wrapRootElement = ({
element
}) => {
return /*#__PURE__*/React.createElement(PreviewProvider, null, element);
};