From ddd382462a8535d00bf4ca348bfc9f78b6f31e8a Mon Sep 17 00:00:00 2001
From: meskio <meskio@sindominio.net>
Date: Thu, 24 Dec 2020 13:10:08 +0100
Subject: [PATCH] Ask for login if can't renew token

---
 src/App.js    | 9 +++++++--
 src/Sender.js | 8 +-------
 src/errors.js | 8 ++++++++
 3 files changed, 16 insertions(+), 9 deletions(-)
 create mode 100644 src/errors.js

diff --git a/src/App.js b/src/App.js
index 858e2cc..1d8a877 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 2a12a90..ae8a140 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 0000000..5069286
--- /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 };
-- 
GitLab