From d9cd5f78cc0ed623b1a4c9ddd04d159e7e56421a Mon Sep 17 00:00:00 2001 From: Mitchell McCaffrey Date: Tue, 27 Oct 2020 10:26:55 +1100 Subject: [PATCH] Added manual sentry error reporting --- src/helpers/logging.js | 8 ++++++++ src/helpers/map.js | 4 +++- src/network/Connection.js | 3 ++- src/network/Session.js | 6 ++++-- src/routes/Donate.js | 7 +++++-- src/routes/Game.js | 1 - 6 files changed, 22 insertions(+), 7 deletions(-) create mode 100644 src/helpers/logging.js diff --git a/src/helpers/logging.js b/src/helpers/logging.js new file mode 100644 index 0000000..a80ff82 --- /dev/null +++ b/src/helpers/logging.js @@ -0,0 +1,8 @@ +import { captureException } from "@sentry/react"; + +export function logError(error) { + console.error(error); + if (process.env.NODE_ENV === "production") { + captureException(error); + } +} diff --git a/src/helpers/map.js b/src/helpers/map.js index b59601b..3ded592 100644 --- a/src/helpers/map.js +++ b/src/helpers/map.js @@ -1,5 +1,7 @@ import GridSizeModel from "../ml/gridSize/GridSizeModel"; +import { logError } from "./logging"; + export function getMapDefaultInset(width, height, gridX, gridY) { // Max the width const gridScale = width / gridX; @@ -140,7 +142,7 @@ export async function getGridSize(image) { try { prediction = await gridSizeML(image, candidates); } catch (error) { - console.error(error); + logError(error); } if (!prediction) { diff --git a/src/network/Connection.js b/src/network/Connection.js index 40c490d..88eade3 100644 --- a/src/network/Connection.js +++ b/src/network/Connection.js @@ -3,6 +3,7 @@ import { encode, decode } from "@msgpack/msgpack"; import shortid from "shortid"; import blobToBuffer from "../helpers/blobToBuffer"; +import { logError } from "../helpers/logging"; // Limit buffer size to 16kb to avoid issues with chrome packet size // http://viblast.com/blog/2015/2/5/webrtc-data-channel-message-size/ @@ -78,7 +79,7 @@ class Connection extends SimplePeer { } } } catch (error) { - console.error(error); + logError(error); } } diff --git a/src/network/Session.js b/src/network/Session.js index f410afd..0978a4f 100644 --- a/src/network/Session.js +++ b/src/network/Session.js @@ -4,6 +4,7 @@ import { EventEmitter } from "events"; import Connection from "./Connection"; import { omit } from "../helpers/shared"; +import { logError } from "../helpers/logging"; /** * @typedef {object} SessionPeer @@ -112,8 +113,8 @@ class Session extends EventEmitter { const data = await response.json(); this._iceServers = data.iceServers; this.socket.emit("join party", partyId, password); - } catch (e) { - console.error("Unable to join party:", e.message); + } catch (error) { + logError(error); this.emit("disconnected"); } } @@ -190,6 +191,7 @@ class Session extends EventEmitter { this.peers[id] = peer; } catch (error) { + logError(error); this.emit("error", { error }); } } diff --git a/src/routes/Donate.js b/src/routes/Donate.js index 2a8f8d9..35f2441 100644 --- a/src/routes/Donate.js +++ b/src/routes/Donate.js @@ -15,6 +15,8 @@ import Footer from "../components/Footer"; import Banner from "../components/Banner"; import LoadingOverlay from "../components/LoadingOverlay"; +import { logError } from "../helpers/logging"; + const prices = [ { price: "$5.00", name: "Small", value: 5 }, { price: "$15.00", name: "Medium", value: 15 }, @@ -36,8 +38,9 @@ function Donate() { setStripe(stripe); setLoading(false); }) - .catch((err) => { - setError(err.message); + .catch((error) => { + logError(error); + setError(error.message); setLoading(false); }); }); diff --git a/src/routes/Game.js b/src/routes/Game.js index f82b7b8..83953a6 100644 --- a/src/routes/Game.js +++ b/src/routes/Game.js @@ -49,7 +49,6 @@ function Game() { const [peerError, setPeerError] = useState(null); useEffect(() => { function handlePeerError({ error }) { - console.error(error.code); if (error.code === "ERR_WEBRTC_SUPPORT") { setPeerError("WebRTC not supported."); } else if (error.code === "ERR_CREATE_OFFER") {