Build/Refactor: lint pre-commit hook and reformat repo to spec (#314)

* build/refactor: move lint/prettier packages to project root, install husky, add pre-commit hook

* refactor: reformat files

* build: put full eslintrc back with all rules
This commit is contained in:
Dan Orlando 2023-05-18 11:09:31 -07:00 committed by GitHub
parent 8d75b25104
commit 7fdc862042
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
157 changed files with 4836 additions and 2403 deletions

View file

@ -1,8 +1,8 @@
import React, { useState } from 'react';
export type ApiError = {
error: any,
setError: (error: any) => void
error: any;
setError: (error: any) => void;
};
const ApiErrorBoundaryContext = React.createContext<ApiError | undefined>(undefined);
@ -11,8 +11,8 @@ export const ApiErrorBoundaryProvider = ({
value,
children
}: {
value?: ApiError,
children: React.ReactNode
value?: ApiError;
children: React.ReactNode;
}) => {
const [error, setError] = useState(false);
return (

View file

@ -1,4 +1,12 @@
import { useState, useCallback, useEffect, useMemo, ReactNode, createContext, useContext } from 'react';
import {
useState,
useCallback,
useEffect,
useMemo,
ReactNode,
createContext,
useContext
} from 'react';
import {
TUser,
TLoginResponse,
@ -12,28 +20,28 @@ import {
import { useNavigate, useLocation } from 'react-router-dom';
export type TAuthContext = {
user: TUser | undefined,
token: string | undefined,
isAuthenticated: boolean,
isLoading: boolean,
error: string | undefined,
login: (data: TLoginUser) => void,
logout: () => void
user: TUser | undefined;
token: string | undefined;
isAuthenticated: boolean;
isLoading: boolean;
error: string | undefined;
login: (data: TLoginUser) => void;
logout: () => void;
};
export type TUserContext = {
user?: TUser | undefined,
token: string | undefined,
isAuthenticated: boolean,
redirect?: string
user?: TUser | undefined;
token: string | undefined;
isAuthenticated: boolean;
redirect?: string;
};
const AuthContext = createContext <TAuthContext | undefined>(undefined);
const AuthContext = createContext<TAuthContext | undefined>(undefined);
const AuthContextProvider = ({ children }: { children: ReactNode }) => {
const [user, setUser] = useState<TUser | undefined>(undefined);
const [token, setToken] = useState <string | undefined>(undefined);
const [error, setError] = useState <string | undefined>(undefined);
const [token, setToken] = useState<string | undefined>(undefined);
const [error, setError] = useState<string | undefined>(undefined);
const [isLoading, setIsLoading] = useState<boolean>(false);
const [isAuthenticated, setIsAuthenticated] = useState<boolean>(false);
@ -48,7 +56,7 @@ const AuthContextProvider = ({ children }: { children: ReactNode }) => {
const setUserContext = (userContext: TUserContext) => {
const { token, isAuthenticated, user, redirect } = userContext;
if(user) {
if (user) {
setUser(user);
}
setToken(token);
@ -59,7 +67,7 @@ const AuthContextProvider = ({ children }: { children: ReactNode }) => {
}
};
const getCookieValue = key => {
const getCookieValue = (key) => {
let keyValue = document.cookie.match('(^|;) ?' + key + '=([^;]*)(;|$)');
return keyValue ? keyValue[2] : null;
};
@ -70,23 +78,28 @@ const AuthContextProvider = ({ children }: { children: ReactNode }) => {
const { user, token } = data;
setUserContext({ token, isAuthenticated: true, user, redirect: '/chat/new' });
},
onError: error => {
onError: (error) => {
setError(error.message);
},
}
});
};
const logout = () => {
document.cookie.split(';').forEach(c => {
document.cookie.split(';').forEach((c) => {
document.cookie = c
.replace(/^ +/, '')
.replace(/=.*/, '=;expires=' + new Date().toUTCString() + ';path=/');
});
logoutUser.mutate(undefined, {
onSuccess: () => {
setUserContext({ token: undefined, isAuthenticated: false, user: undefined, redirect: '/login' });
setUserContext({
token: undefined,
isAuthenticated: false,
user: undefined,
redirect: '/login'
});
},
onError: error => {
onError: (error) => {
setError(error.message);
}
});
@ -95,8 +108,7 @@ const AuthContextProvider = ({ children }: { children: ReactNode }) => {
useEffect(() => {
if (userQuery.data) {
setUser(userQuery.data);
}
else if (userQuery.isError) {
} else if (userQuery.isError) {
setError(userQuery.error.message);
navigate('/login');
}
@ -107,9 +119,8 @@ const AuthContextProvider = ({ children }: { children: ReactNode }) => {
const tokenFromCookie = getCookieValue('token');
if (tokenFromCookie) {
// debugger;
setUserContext({ token: tokenFromCookie, isAuthenticated: true, user: userQuery.data })
}
else {
setUserContext({ token: tokenFromCookie, isAuthenticated: true, user: userQuery.data });
} else {
navigate('/login');
}
}

View file

@ -42,5 +42,5 @@ export const ThemeProvider = ({ initialTheme, children }) => {
rawSetTheme(theme);
}, [theme]);
return <ThemeContext.Provider value={{ theme, setTheme }}>{children}</ThemeContext.Provider>
return <ThemeContext.Provider value={{ theme, setTheme }}>{children}</ThemeContext.Provider>;
};

View file

@ -3,20 +3,17 @@ import { useState, useEffect } from 'react';
function useDebounce(value, delay) {
const [debouncedValue, setDebouncedValue] = useState(value);
useEffect(
() => {
const handler = setTimeout(() => {
setDebouncedValue(value);
}, delay);
useEffect(() => {
const handler = setTimeout(() => {
setDebouncedValue(value);
}, delay);
return () => {
clearTimeout(handler);
};
},
[value, delay]
);
return () => {
clearTimeout(handler);
};
}, [value, delay]);
return debouncedValue;
}
export default useDebounce;
export default useDebounce;