diff --git a/packages/core/models/user.js b/packages/core/models/user.js index c1263dd3a..39b2b824d 100644 --- a/packages/core/models/user.js +++ b/packages/core/models/user.js @@ -1,4 +1,5 @@ import { HOST, HEADERS } from "../utils/constants"; +import noInternet from "no-internet"; export default class User { /** @@ -14,6 +15,7 @@ export default class User { var user = await this.get(); if (!user) return; user = await authRequest.call(this, "users", undefined, true, true); + if (!user) return; delete user.lastSynced; await this.set(user); } @@ -55,6 +57,7 @@ export default class User { password, grant_type: "password", }); + if (!response) return; const key = await this._context.deriveKey(password, response.payload.salt); let user = userFromResponse(response, key); await this._context.write("user", user); @@ -73,6 +76,7 @@ export default class User { refresh_token: user.refreshToken, grant_type: "refresh_token", }); + if (!response) return; user = { ...user, @@ -94,6 +98,7 @@ export default class User { password, email, }); + if (!response) return; const key = await this._context.deriveKey(password, response.payload.salt); let user = userFromResponse(response, key); await this._context.write("user", user); @@ -113,6 +118,11 @@ function userFromResponse(response, key) { } async function authRequest(endpoint, data, auth = false, get = false) { + const offline = await noInternet({ + url: HOST, + }); + if (offline) return; + var headers = {}; if (auth) { const token = await this.token(); diff --git a/packages/core/package.json b/packages/core/package.json index 79f615927..780d85773 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -22,6 +22,7 @@ "dependencies": { "fast-sort": "^2.0.1", "fuzzysearch": "^1.0.3", + "no-internet": "^1.5.2", "qclone": "^1.0.4", "transfun": "^1.0.2" } diff --git a/packages/core/yarn.lock b/packages/core/yarn.lock index 463f492e8..017302d23 100644 --- a/packages/core/yarn.lock +++ b/packages/core/yarn.lock @@ -3690,6 +3690,13 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +no-internet@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/no-internet/-/no-internet-1.5.2.tgz#a51e8c314fd4d005c8239eda7e6c4aad7c0cadfb" + integrity sha512-4GnJQsc/BCwcOG+8acwAsm9bYVdgh0V5ORQTAnB+7u9hoKdR4WqSqw6Bhjo3DO/tvhad4wbrw4l07/CG6C+wDg== + dependencies: + set-interval "^2.0.1" + node-fetch@2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" @@ -4365,6 +4372,11 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= +set-interval@^2.0.1: + version "2.0.4" + resolved "https://registry.yarnpkg.com/set-interval/-/set-interval-2.0.4.tgz#419266c0a2b05d5fd5bde6e7896b57a27d060a5a" + integrity sha512-Srlnjq2O84WQxv2DkTyf7S0nRebiNE+uD5nd2Iy4ISOtiZbxglSfup88vegIAYRpCn/ITS1rYmjCPuAhn/hdmg== + set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"