Update dependencies

This commit is contained in:
Matthew Ellison
2026-08-15 15:37:24 -04:00
parent 7265eaad18
commit cbd681e63b
26 changed files with 3230 additions and 4498 deletions

View File

@@ -1,4 +1,4 @@
import { createContext, useCallback, useContext, useMemo, useRef } from "react";
import { createContext, use, useCallback, useMemo, useRef } from "react";
import { defaultTokenData, fetchToken, parseToken, type TokenData } from "./TokenUtils";
export interface TokenState {
@@ -20,11 +20,11 @@ export default function TokenProvider({
children: React.ReactNode;
}>){
const tokenRef = useRef<TokenData>(defaultTokenData);
const refreshPromise = useRef<Promise<string | null | undefined>>(null);
const refreshPromiseRef = useRef<Promise<string | null | undefined>>(null);
const getToken = useCallback(async () => {
if(refreshPromise.current){
return refreshPromise.current;
if(refreshPromiseRef.current){
return refreshPromiseRef.current;
}
const { accessToken, expires } = tokenRef.current;
@@ -32,7 +32,7 @@ export default function TokenProvider({
const isExpired = Date.now() > (expires - 5000); //Give a 5 second buffer
if(!accessToken || isExpired){
refreshPromise.current = (async () => {
refreshPromiseRef.current = (async () => {
try {
const rawToken = (await fetchToken(apiUrl)).token;
const parsedToken = parseToken(rawToken);
@@ -44,10 +44,10 @@ export default function TokenProvider({
throw error;
}
finally {
refreshPromise.current = null;
refreshPromiseRef.current = null;
}
})();
return refreshPromise.current;
return refreshPromiseRef.current;
}
return accessToken;
@@ -58,16 +58,16 @@ export default function TokenProvider({
}), [getToken]);
return (
<TokenContext.Provider value={value}>
<TokenContext value={value}>
{children}
</TokenContext.Provider>
</TokenContext>
);
}
// eslint-disable-next-line react-refresh/only-export-components
export function useToken(){
const context = useContext(TokenContext);
const context = use(TokenContext);
if(!context){
throw new Error("useToken must be called inside a TokenProvider");