1nwf / Produx-v2

Detected the use of variables before they are defined JS-0357
Anti-pattern
Major
16 occurrences in this check
 39    onMessage: ({ data }) => {
 40      const msg = JSON.parse(data);
 41      if (msg.type === "chat") {
 42        setMsgs([...msgs, msg]); 43        return;
 44      } else if (msg.type === "usersList") {
 45        dispath(setOnlineUsers(msg.users));
 39    onMessage: ({ data }) => {
 40      const msg = JSON.parse(data);
 41      if (msg.type === "chat") {
 42        setMsgs([...msgs, msg]); 43        return;
 44      } else if (msg.type === "usersList") {
 45        dispath(setOnlineUsers(msg.users));
'setSysMsg' was used before it was defined
 45        dispath(setOnlineUsers(msg.users));
 46        return;
 47      }
 48      setSysMsg(msg); 49    },
 50    onOpen: () => {
 51      const token = localStorage.getItem("token");
'setImages' was used before it was defined
 14  const dispatch = useAppDispatch();
 15  const [createProduct, { error, isLoading }] = useCreateProductMutation();
 16  const closeHandler = () => {
 17    setImages([]); 18    dispatch(setShowStep2(false));
 19  };
 20  const fileRef = useRef() as MutableRefObject<HTMLInputElement>;
'setSubmit' was used before it was defined
 36    const productIcon = product.images ? product.images : [];
 37    const productImages = [...productIcon, ...images];
 38    dispatch(setProductData({ ...product, images: productImages }));
 39    setSubmit(true); 40    const formData = new FormData();
 41    formData.set("name", product.name);
 42    formData.set("description", product.description);
'setSubmit' was used before it was defined
 46      formData.append(`image${i + 1}`, productImages[i]);
 47    }
 48    await createProduct(formData);
 49    setSubmit(false); 50    dispatch(setShowStep2(false));
 51    setTimeout(
 52      () =>
'fileRef' was used before it was defined
 50    setSave(false);
 51  };
 52  const handleNewPfp = (e: ChangeEvent<HTMLInputElement>) => {
 53    if (fileRef.current.files) { 54      let preview = URL.createObjectURL(fileRef.current.files[0]);
 55      setPfp(fileRef.current.files[0]);
 56      const newUserData = { ...userInfo, pfp: preview } as User;
'fileRef' was used before it was defined
 51  };
 52  const handleNewPfp = (e: ChangeEvent<HTMLInputElement>) => {
 53    if (fileRef.current.files) {
 54      let preview = URL.createObjectURL(fileRef.current.files[0]); 55      setPfp(fileRef.current.files[0]);
 56      const newUserData = { ...userInfo, pfp: preview } as User;
 57      setUserInfo(newUserData);
'setShowDelModal' was used before it was defined
 67  });
 68  const handleDelete = (name: string, id: number) => {
 69    setDelProduct({ name, id });
 70    setShowDelModal(true); 71  };
 72  const fileRef = useRef() as MutableRefObject<HTMLInputElement>;
 73  const [showDelModal, setShowDelModal] = useState(false);
'ConfirmDelete' was used before it was defined
198        </div>
199      </div>
200      <br />
201      <ConfirmDelete202        productName={DelProduct.name}
203        productID={DelProduct.id}
204        isShown={showDelModal}
'fileRef' was used before it was defined
 52  const handleNewPfp = (e: ChangeEvent<HTMLInputElement>) => {
 53    if (fileRef.current.files) {
 54      let preview = URL.createObjectURL(fileRef.current.files[0]);
 55      setPfp(fileRef.current.files[0]); 56      const newUserData = { ...userInfo, pfp: preview } as User;
 57      setUserInfo(newUserData);
 58
'setPosts' was used before it was defined
 41    }, [lastId])
 42    useEffect(() => {
 43        if (data) {
 44            setPosts([...posts, ...data.posts]) 45        }
 46    }, [data])
 47    useEffect(() => {
'setPosts' was used before it was defined
 45        }
 46    }, [data])
 47    useEffect(() => {
 48        setPosts([]) 49        getPosts({
 50            productId: productId,
 51            channel: (channel as string).toLowerCase(),
'posts' was used before it was defined
 41    }, [lastId])
 42    useEffect(() => {
 43        if (data) {
 44            setPosts([...posts, ...data.posts]) 45        }
 46    }, [data])
 47    useEffect(() => {
'EmptyLayout' was used before it was defined
 8import { useGetUserInfoQuery } from '../src/state/reducers/api'
 9import { HTML5Backend } from 'react-dnd-html5-backend'
10function MyApp({ Component, pageProps }: AppProps) {
11    const Layout = Component.Layout || EmptyLayout12    return (
13        <Provider store={store}>
14            <DndProvider backend={HTML5Backend}>
'DefaultLayout' was used before it was defined
12    return (
13        <Provider store={store}>
14            <DndProvider backend={HTML5Backend}>
15                <DefaultLayout>16                    <Layout>
17                        <Component {...pageProps} />
18                    </Layout>