From 11ef9e6e2a46580b8f24c5df73e58017d77c76ee Mon Sep 17 00:00:00 2001 From: Rishi Ghan Date: Thu, 27 Jul 2023 11:08:51 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20Tooling=20for=20resumable=20sock?= =?UTF-8?q?et.io=20sessions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/client/actions/comicinfo.actions.tsx | 1 - src/client/actions/fileops.actions.tsx | 6 ++--- src/client/components/App.tsx | 24 +++++++++++++------ .../ComicDetail/Tabs/ComicInfoXML.tsx | 4 +++- src/client/components/Dashboard/PullList.tsx | 2 +- src/client/components/PullList/PullList.tsx | 20 ++++++++-------- src/client/shared/socket.io/instance.tsx | 3 ++- 7 files changed, 36 insertions(+), 24 deletions(-) diff --git a/src/client/actions/comicinfo.actions.tsx b/src/client/actions/comicinfo.actions.tsx index 715ae34..144c8de 100644 --- a/src/client/actions/comicinfo.actions.tsx +++ b/src/client/actions/comicinfo.actions.tsx @@ -33,7 +33,6 @@ export const getWeeklyPullList = (options) => async (dispatch) => { dispatch({ type: CV_WEEKLY_PULLLIST_CALL_IN_PROGRESS, }); - await cachedAxios(`${COMICVINE_SERVICE_URI}/getWeeklyPullList`, { method: "get", params: options, diff --git a/src/client/actions/fileops.actions.tsx b/src/client/actions/fileops.actions.tsx index 4e30fa8..facb635 100644 --- a/src/client/actions/fileops.actions.tsx +++ b/src/client/actions/fileops.actions.tsx @@ -40,7 +40,7 @@ import { success } from "react-notification-system-redux"; import { isNil, map } from "lodash"; -export const getServiceStatus = (serviceName?: string) => async (dispatch) => { +export const getServiceStatus = (serviceName?: string) => async dispatch => { axios .request({ url: `${LIBRARY_SERVICE_BASE_URI}/getHealthInformation`, @@ -91,9 +91,9 @@ export const fetchComicBookMetadata = () => async (dispatch) => { // }), // ); dispatch({ - type: "EMIT_SOCKET_EVENT", + type: LS_IMPORT, meta: { remote: true }, - data: { gym: "asas" }, + data: {}, }); }; export const toggleImportQueueStatus = (options) => async (dispatch) => { diff --git a/src/client/components/App.tsx b/src/client/components/App.tsx index 0f5183a..c85cc6b 100644 --- a/src/client/components/App.tsx +++ b/src/client/components/App.tsx @@ -19,7 +19,7 @@ import { } from "../context/AirDCPPSocket"; import { SocketIOProvider } from "../context/SocketIOContext"; import socketIOConnectionInstance from "../shared/socket.io/instance"; -import { isEmpty, isUndefined } from "lodash"; +import { isEmpty, isNil, isUndefined } from "lodash"; import { AIRDCPP_DOWNLOAD_PROGRESS_TICK, LS_SINGLE_IMPORT, @@ -97,13 +97,23 @@ const AirDCPPSocketComponent = (): ReactElement => { return <>; }; export const App = (): ReactElement => { + const dispatch = useDispatch(); useEffect(() => { - // Listen for the sessionInitialized event - socketIOConnectionInstance.on("sessionInitialized", (sessionId) => { - console.log(sessionId); - // Store the session ID in Redux state - // initSession(sessionId); - }); + // Check if there is a sessionId in localStorage + const sessionId = localStorage.getItem("sessionId"); + if (!isNil(sessionId)) { + // Resume the session + dispatch({ + type: "RESUME_SESSION", + meta: { remote: true }, + data: { sessionId }, + }); + } else { + // Inititalize the session and persist the sessionId to localStorage + socketIOConnectionInstance.on("sessionInitialized", (sessionId) => { + localStorage.setItem("sessionId", sessionId); + }); + } }, []); return ( diff --git a/src/client/components/ComicDetail/Tabs/ComicInfoXML.tsx b/src/client/components/ComicDetail/Tabs/ComicInfoXML.tsx index de33552..c5165c0 100644 --- a/src/client/components/ComicDetail/Tabs/ComicInfoXML.tsx +++ b/src/client/components/ComicDetail/Tabs/ComicInfoXML.tsx @@ -48,7 +48,9 @@ export const ComicInfoXML = (data): ReactElement => {
{json.notes[0]}
-
{json.summary[0]}
+
+ {!isUndefined(json.summary) && json.summary[0]} +
); diff --git a/src/client/components/Dashboard/PullList.tsx b/src/client/components/Dashboard/PullList.tsx index a60ec47..fab4866 100644 --- a/src/client/components/Dashboard/PullList.tsx +++ b/src/client/components/Dashboard/PullList.tsx @@ -21,7 +21,7 @@ export const PullList = ({ issues }: PullListProps): ReactElement => { useEffect(() => { dispatch( getWeeklyPullList({ - startDate: "2023-5-25", + startDate: "2023-7-25", pageSize: "15", currentPage: "1", }), diff --git a/src/client/components/PullList/PullList.tsx b/src/client/components/PullList/PullList.tsx index c9ac7df..0090c67 100644 --- a/src/client/components/PullList/PullList.tsx +++ b/src/client/components/PullList/PullList.tsx @@ -15,7 +15,7 @@ export const PullList = (): ReactElement => { useEffect(() => { dispatch( getWeeklyPullList({ - startDate: "2022-11-15", + startDate: "2023-7-28", pageSize: "15", currentPage: "1", }), @@ -109,15 +109,15 @@ export const PullList = (): ReactElement => { {!isNil(pullListComics) && (
- +
)} diff --git a/src/client/shared/socket.io/instance.tsx b/src/client/shared/socket.io/instance.tsx index ba40329..deb6514 100644 --- a/src/client/shared/socket.io/instance.tsx +++ b/src/client/shared/socket.io/instance.tsx @@ -1,9 +1,10 @@ import io from "socket.io-client"; import { SOCKET_BASE_URI } from "../../constants/endpoints"; - +const sessionId = localStorage.getItem("sessionId"); const socketIOConnectionInstance = io(SOCKET_BASE_URI, { transports: ["websocket"], withCredentials: true, + query: { sessionId }, }); export default socketIOConnectionInstance;