diff --git a/package.json b/package.json index 1d57edf..df356e8 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "private": true, "dependencies": { "@fortawesome/fontawesome-free": "^5.15.2", - "@lingdocs/lingdocs-main": "^0.1.2", + "@lingdocs/lingdocs-main": "^0.1.3", "@lingdocs/pashto-inflector": "^1.0.5", "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.3.2", diff --git a/src/user-context.tsx b/src/user-context.tsx index ca9c395..1012032 100644 --- a/src/user-context.tsx +++ b/src/user-context.tsx @@ -1,6 +1,10 @@ import React, { createContext, useEffect } from "react" import useStickyState from "./useStickyState"; -import { AT, getUser } from "@lingdocs/lingdocs-main"; +import { + AT, + getUser, + userObjIsEqual, +} from "@lingdocs/lingdocs-main"; import { CronJob } from "cron"; const UserContext = createContext< @@ -21,7 +25,11 @@ function UserProvider({ children }: any) { function pullUser() { getUser().then((user) => { - setValue(user === "offline" ? undefined : user); + if (user === "offline") return; + // don't update if there's nothing new - to avoid re-renders erasing game input etc + if (!userObjIsEqual(user, value)) { + setValue(user); + } }).catch(console.error); } diff --git a/yarn.lock b/yarn.lock index 10be111..33acbd7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1566,10 +1566,10 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" -"@lingdocs/lingdocs-main@^0.1.2": - version "0.1.2" - resolved "https://npm.lingdocs.com/@lingdocs%2flingdocs-main/-/lingdocs-main-0.1.2.tgz#3b56cd272e696c335de4dad1ccff11805970e312" - integrity sha512-8F3bAahYGZv7qJjVwDxs0IK3k92CuW0aJGJvINipSLFRdd+u5BxvxdiGgYnfocPhHO+rQsOKVskTK1+v5boctA== +"@lingdocs/lingdocs-main@^0.1.3": + version "0.1.3" + resolved "https://npm.lingdocs.com/@lingdocs%2flingdocs-main/-/lingdocs-main-0.1.3.tgz#631b468eb235aa852395e390925ac118847a4b1c" + integrity sha512-AnNDTxqr779POzGbsv/lfGcEFKX+6Q71TUzLY4t/dA8MbsTEp66WGD04gIXSdw7JjojnWA0w9ui/O2nQI6nj5g== dependencies: nano "^9.0.5" passport-github2 "^0.1.12"