Skip to content
Snippets Groups Projects
Commit d9ff5900 authored by Minseo Lee's avatar Minseo Lee
Browse files

fix: user socket does not work

parent 0f69563c
No related branches found
No related tags found
No related merge requests found
...@@ -61,6 +61,7 @@ module.exports = { ...@@ -61,6 +61,7 @@ module.exports = {
], ],
"@typescript-eslint/ban-types": "off", "@typescript-eslint/ban-types": "off",
"@typescript-eslint/no-non-null-assertion": "off", "@typescript-eslint/no-non-null-assertion": "off",
"@typescript-eslint/no-explicit-any": "off",
// plugins // plugins
"import/order": ["error", { "import/order": ["error", {
......
import { useContext, useEffect, useRef, useState } from 'react'; import { useEffect, useRef, useState } from 'react';
import '../common/css/common.css'; import '../common/css/common.css';
import '../common/css/reset.css'; import '../common/css/reset.css';
import { Routes, Route, useNavigate } from "react-router-dom"; import { Routes, Route, useNavigate } from "react-router-dom";
import Connector from "../common/instances/Connector"; import Connector from "../common/instances/Connector";
import Socket from "../common/instances/Socket";
import BottomSheet from "../components/bottom-sheet/BottomSheet"; import BottomSheet from "../components/bottom-sheet/BottomSheet";
import Header from "../components/header/Header"; import Header from "../components/header/Header";
import Toast from "../components/toast/Toast"; import Toast from "../components/toast/Toast";
import { BSProvider } from "../contexts/bottom-sheet"; import { BSProvider } from "../contexts/bottom-sheet";
import { CartProvider } from "../contexts/cart"; import { CartProvider } from "../contexts/cart";
import { ToastContext, ToastProvider } from "../contexts/toast"; import { ToastProvider } from "../contexts/toast";
import AdminPage from "../pages/admin-page/AdminPage"; import AdminPage from "../pages/admin-page/AdminPage";
import CartPage from "../pages/cart-page/CartPage"; import CartPage from "../pages/cart-page/CartPage";
import HistoryPage from "../pages/history-page/HistoryPage"; import HistoryPage from "../pages/history-page/HistoryPage";
...@@ -26,20 +25,15 @@ import S from './App.module.css'; ...@@ -26,20 +25,15 @@ import S from './App.module.css';
import APP_ROUTE from "./config/route"; import APP_ROUTE from "./config/route";
import Wrapper from "./modules/wrapper/Wrapper"; import Wrapper from "./modules/wrapper/Wrapper";
import type { CartItemPostModel } from "../pages/cart-page/config/type";
import type { MutableRefObject } from 'react'; import type { MutableRefObject } from 'react';
function App() { function App() {
const { setToastItem } = useContext(ToastContext);
const [headerName, setHeaderName] = useState(''); const [headerName, setHeaderName] = useState('');
const [login, setLogin] = useState(true); const [login, setLogin] = useState(true);
const connector: MutableRefObject<Connector|null> = useRef(null); const connector: MutableRefObject<Connector|null> = useRef(null);
const socket: MutableRefObject<Socket|null> = useRef(null);
const navigator = useNavigate(); const navigator = useNavigate();
...@@ -52,27 +46,16 @@ function App() { ...@@ -52,27 +46,16 @@ function App() {
navigator(APP_ROUTE.LOGIN); navigator(APP_ROUTE.LOGIN);
return; return;
} }
socket.current = new Socket();
socket.current?.onOrder((d: CartItemPostModel) => {
setToastItem({
id: '', title: d.shopId, description: d.waitingCount.toString(), goto: ''
});
});
return () => socket.current?.disconnect();
}, [login]); }, [login]);
return ( return (
<BSProvider> <BSProvider>
<ToastProvider> <ToastProvider>
<CartProvider> <CartProvider>
<Toast /> <Toast />
<div className={"App"}> <div className={"App"}>
<Wrapper> <Wrapper connector={connector}>
{login && {login &&
<> <>
<Header headerName={headerName} connector={connector} /> <Header headerName={headerName} connector={connector} />
......
import { useContext } from "react"; import { useContext, useEffect, useRef } from "react";
import Socket from "../../../common/instances/Socket";
import { BSContext } from "../../../contexts/bottom-sheet"; import { BSContext } from "../../../contexts/bottom-sheet";
import { ToastContext } from "../../../contexts/toast";
import S from './Wrapper.module.css'; import S from './Wrapper.module.css';
import type { FC, ReactNode } from "react"; import type { GFCWithProp } from "../../../common/types/fc";
import type { CartItemPostModel } from "../../../pages/cart-page/config/type";
import type { ReactNode , MutableRefObject } from "react";
interface Props { children: ReactNode; } interface Props { children: ReactNode; }
// NEEDED TO USE CONTEXTS // NEEDED TO USE CONTEXTS
const Wrapper: FC<Props> = ({ children }) => { const Wrapper: GFCWithProp<Props> = ({ connector, children }) => {
const { bSElement } = useContext(BSContext); const { bSElement } = useContext(BSContext);
const { setToastItem } = useContext(ToastContext);
const socket: MutableRefObject<Socket|null> = useRef(null);
useEffect(() => {
if (connector.current?.getIsAdmin()) return;
if (!socket.current) socket.current = new Socket();
socket.current!.onOrder((d: CartItemPostModel) => {
setToastItem({
id: '', title: d.shopId, description: d.waitingCount.toString(), goto: ''
});
});
return () => {
socket.current?.disconnect();
socket.current = null;
};
}, [connector]);
return ( return (
<div className={ <div className={
......
...@@ -13,13 +13,13 @@ const ToastContext = createContext<ToastContextType>({ ...@@ -13,13 +13,13 @@ const ToastContext = createContext<ToastContextType>({
setToastItem: (d) => { return d; }, setToastItem: (d) => { return d; },
}); });
interface pProps { children: ReactNode; } interface Props { children: ReactNode; }
const ToastProvider: FC<pProps> = ({ children }) => { const ToastProvider: FC<Props> = ({ children }) => {
const [item, setItem] = useState<ToastContextType['toastItem']>(null); const [item, setItem] = useState<ToastContextType['toastItem']>(null);
useEffect(() => { useEffect(() => {
// console.log('GLOBAL ToastProvider: ', item); console.log('GLOBAL ToastProvider: ', item);
}, [item]); }, [item]);
......
...@@ -58,7 +58,10 @@ const AdminPage: GFC = ({ connector }) => { ...@@ -58,7 +58,10 @@ const AdminPage: GFC = ({ connector }) => {
}); });
}); });
return () => adminSocket!.disconnect(); return () => {
adminSocket!.disconnect();
adminSocket = null;
};
}, [connector]); }, [connector]);
return ( return (
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment