diff --git a/src/App.js b/src/App.js index 858e2cc40e873fe94f1060503a7fd1afcc2df069..1d8a8772cc39735138412c4d7607246899ccdc59 100644 --- a/src/App.js +++ b/src/App.js @@ -2,6 +2,7 @@ import React, { useEffect, useState } from "react"; import { useStorageItem } from "@capacitor-community/react-hooks/storage"; import Panel from "./Panel"; import AuthContext from "./AuthContext"; +import { ResponseError } from "./errors"; import { url } from "./util"; function App() { @@ -60,7 +61,7 @@ function renewToken(oldToken, setToken) { }) .then((response) => { if (!response.ok) { - throw new Error(response.status.toString() + " " + response.statusText); + throw new ResponseError(response); } return response.json(); }) @@ -69,7 +70,11 @@ function renewToken(oldToken, setToken) { setToken(token); }) .catch((error) => { - console.log("Error renewing token: " + error.message); + if (error instanceof ResponseError && error.response.status === 401) { + setToken(null); + } else { + console.log("Error renewing token: " + error.message); + } }); } diff --git a/src/Sender.js b/src/Sender.js index 2a12a901c9c5003374be74b8a4a2df2b78b98995..ae8a140f18208ac01832bdabfb4abbe8bfa7f90c 100644 --- a/src/Sender.js +++ b/src/Sender.js @@ -1,15 +1,9 @@ import React from "react"; import { Row, Form, Spinner, Alert } from "react-bootstrap"; import AuthContext from "./AuthContext"; +import { ResponseError } from "./errors"; import { url } from "./util"; -class ResponseError extends Error { - constructor(response) { - super(response.status.toString() + " " + response.statusText); - this.response = response; - } -} - class Sender extends React.Component { static contextType = AuthContext; diff --git a/src/errors.js b/src/errors.js new file mode 100644 index 0000000000000000000000000000000000000000..5069286c1d532b4b94c84e104a533e02388c1644 --- /dev/null +++ b/src/errors.js @@ -0,0 +1,8 @@ +class ResponseError extends Error { + constructor(response) { + super(response.status.toString() + " " + response.statusText); + this.response = response; + } +} + +export { ResponseError };