From 3353978243d892036a80c06c0e816a7e32ea99c0 Mon Sep 17 00:00:00 2001 From: Sidney Alcantara Date: Thu, 22 Sep 2022 13:38:29 +1000 Subject: [PATCH] upgrade jotai to latest --- package.json | 2 +- src/atoms/utils.ts | 3 +-- src/components/ConfirmDialog.tsx | 3 +-- src/hooks/useBeforeUnload.ts | 6 ++++-- src/hooks/useFirestoreCollectionWithAtom.ts | 3 +-- src/hooks/useFirestoreDocWithAtom.ts | 3 +-- src/hooks/useKeyPressWithAtom.ts | 5 ++--- src/layouts/RequireAuth.tsx | 12 +++++++++--- yarn.lock | 8 ++++---- 9 files changed, 24 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index f6e3055d..721396ac 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "file-saver": "^2.0.5", "firebase": "^9.6.11", "firebaseui": "^6.0.1", - "jotai": "^1.7.2", + "jotai": "^1.8.4", "json-stable-stringify-without-jsonify": "^1.0.1", "json2csv": "^5.0.7", "jszip": "^3.10.0", diff --git a/src/atoms/utils.ts b/src/atoms/utils.ts index 7903ca86..2c1458ab 100644 --- a/src/atoms/utils.ts +++ b/src/atoms/utils.ts @@ -1,8 +1,7 @@ -import { Scope } from "jotai/core/atom"; import { useAtomsDebugValue } from "jotai/devtools"; export function DebugAtoms( - options: { scope: Scope } & Parameters[0] + options: NonNullable[0]> ) { useAtomsDebugValue(options); return null; diff --git a/src/components/ConfirmDialog.tsx b/src/components/ConfirmDialog.tsx index 5819b169..ef2549f8 100644 --- a/src/components/ConfirmDialog.tsx +++ b/src/components/ConfirmDialog.tsx @@ -1,6 +1,5 @@ import { useState } from "react"; import { useAtom } from "jotai"; -import { Scope } from "jotai/core/atom"; import { Dialog, @@ -16,7 +15,7 @@ import { FadeTransitionMui } from "@src/components/Modal/FadeTransition"; import { projectScope, confirmDialogAtom } from "@src/atoms/projectScope"; export interface IConfirmDialogProps { - scope?: Scope; + scope?: Parameters[1]; } /** diff --git a/src/hooks/useBeforeUnload.ts b/src/hooks/useBeforeUnload.ts index 9a42ba66..98438a5f 100644 --- a/src/hooks/useBeforeUnload.ts +++ b/src/hooks/useBeforeUnload.ts @@ -1,6 +1,5 @@ import { useEffect } from "react"; import { useAtom, Atom } from "jotai"; -import { Scope } from "jotai/core/atom"; function beforeUnloadHandler(event: BeforeUnloadEvent) { event.preventDefault(); @@ -14,7 +13,10 @@ function beforeUnloadHandler(event: BeforeUnloadEvent) { * @param atom - The atom’s value to listen to * @param scope - The atom scope */ -export default function useBeforeUnload(atom: Atom, scope: Scope) { +export default function useBeforeUnload( + atom: Atom, + scope: NonNullable[1]> +) { const [atomValue] = useAtom(atom, scope); const atomValueFalsy = !atomValue; diff --git a/src/hooks/useFirestoreCollectionWithAtom.ts b/src/hooks/useFirestoreCollectionWithAtom.ts index 23bc2ce5..43f7165a 100644 --- a/src/hooks/useFirestoreCollectionWithAtom.ts +++ b/src/hooks/useFirestoreCollectionWithAtom.ts @@ -1,7 +1,6 @@ import { useState, useEffect } from "react"; import useMemoValue from "use-memo-value"; import { useAtom, PrimitiveAtom, useSetAtom, SetStateAction } from "jotai"; -import { Scope } from "jotai/core/atom"; import { set } from "lodash-es"; import { Firestore, @@ -77,7 +76,7 @@ interface IUseFirestoreCollectionWithAtomOptions { */ export function useFirestoreCollectionWithAtom( dataAtom: PrimitiveAtom, - dataScope: Scope | undefined, + dataScope: Parameters[1] | undefined, path: string | undefined, options?: IUseFirestoreCollectionWithAtomOptions ) { diff --git a/src/hooks/useFirestoreDocWithAtom.ts b/src/hooks/useFirestoreDocWithAtom.ts index e7691155..007061ac 100644 --- a/src/hooks/useFirestoreDocWithAtom.ts +++ b/src/hooks/useFirestoreDocWithAtom.ts @@ -1,7 +1,6 @@ import { useEffect } from "react"; import useMemoValue from "use-memo-value"; import { useAtom, PrimitiveAtom, useSetAtom } from "jotai"; -import { Scope } from "jotai/core/atom"; import { set } from "lodash-es"; import { Firestore, @@ -45,7 +44,7 @@ interface IUseFirestoreDocWithAtomOptions { */ export function useFirestoreDocWithAtom( dataAtom: PrimitiveAtom, - dataScope: Scope | undefined, + dataScope: Parameters[1] | undefined, path: string | undefined, options?: IUseFirestoreDocWithAtomOptions ) { diff --git a/src/hooks/useKeyPressWithAtom.ts b/src/hooks/useKeyPressWithAtom.ts index 78d23286..e51b1dd0 100644 --- a/src/hooks/useKeyPressWithAtom.ts +++ b/src/hooks/useKeyPressWithAtom.ts @@ -1,6 +1,5 @@ import { useEffect } from "react"; import { useSetAtom } from "jotai"; -import { PrimitiveAtom, Scope } from "jotai/core/atom"; /** * A hook that listens to when the target key is pressed @@ -11,8 +10,8 @@ import { PrimitiveAtom, Scope } from "jotai/core/atom"; */ export default function useKeyPressWithAtom( targetKey: string, - atom: PrimitiveAtom, - scope: Scope + atom: Parameters[0], + scope: Parameters[1] ) { const setAtom = useSetAtom(atom, scope); diff --git a/src/layouts/RequireAuth.tsx b/src/layouts/RequireAuth.tsx index f568b23a..bd5d7b09 100644 --- a/src/layouts/RequireAuth.tsx +++ b/src/layouts/RequireAuth.tsx @@ -1,4 +1,4 @@ -import { useAtom } from "jotai"; +import { useAtom, Atom } from "jotai"; import { useLocation, Navigate } from "react-router-dom"; import Loading from "@src/components/Loading"; @@ -8,10 +8,16 @@ import { ROUTES } from "@src/constants/routes"; export interface IRequireAuthProps { children: React.ReactElement; + atom?: Atom; + scope?: Parameters[1]; } -export default function RequireAuth({ children }: IRequireAuthProps) { - const [currentUser] = useAtom(currentUserAtom, projectScope); +export default function RequireAuth({ + children, + atom = currentUserAtom, + scope = projectScope, +}: IRequireAuthProps) { + const [currentUser] = useAtom(atom, scope); const location = useLocation(); if (currentUser === undefined) diff --git a/yarn.lock b/yarn.lock index 3dbe40a8..3e2592d4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8745,10 +8745,10 @@ jju@~1.4.0: resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" integrity sha1-o6vicYryQaKykE+EpiWXDzia4yo= -jotai@^1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/jotai/-/jotai-1.7.2.tgz#80587cf10f51a614c2028688e12d2abc6ac0b00c" - integrity sha512-ksvpW1Wu+/HwW1iDYq23PpXLu2df5Vv+eWw70jRAx7IEY4c+qRsORULnqPFurSy/X8LSoPcRhVDJx/cyf8jjMg== +jotai@^1.8.4: + version "1.8.4" + resolved "https://registry.yarnpkg.com/jotai/-/jotai-1.8.4.tgz#e188bff3cc790c758d25646f6f5daf9854c98eef" + integrity sha512-bkHDHNxm7bU4+bJL4z96fTlJYN34UDRTu3ghEajJrDepayON9YEaxPrXr7xhLnIRntoFC6eDYYhMNA/ilbj2RQ== js-base64@^2.4.3: version "2.6.4"