From 590d3f39e0e9db7907cef4f3a0732fad42c60aaf Mon Sep 17 00:00:00 2001 From: Pavel Strunkin Date: Sun, 5 Jul 2020 23:43:02 +0200 Subject: [PATCH] build update event handle added --- src/contexts/build.context.tsx | 21 +++++++++++++++++++++ src/contexts/socket.context.tsx | 6 +++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/contexts/build.context.tsx b/src/contexts/build.context.tsx index 06d6f51b..0f2aede6 100644 --- a/src/contexts/build.context.tsx +++ b/src/contexts/build.context.tsx @@ -27,11 +27,17 @@ interface IAddAction { payload: Build; } +interface IUpdateAction { + type: "update"; + payload: Build; +} + type IAction = | IRequestAction | IGetAction | IDeleteAction | IAddAction + | IUpdateAction | ISelectAction; type Dispatch = (action: IAction) => void; @@ -82,6 +88,16 @@ function buildReducer(state: State, action: IAction): State { ...state, buildList: [action.payload, ...state.buildList], }; + case "update": + return { + ...state, + buildList: state.buildList.map((p) => { + if (p.id === action.payload.id) { + return action.payload + } + return p; + }), + }; default: return state; } @@ -149,6 +165,10 @@ async function addBuild(dispatch: Dispatch, build: Build) { dispatch({ type: "add", payload: build }); } +async function updateBuild(dispatch: Dispatch, build: Build) { + dispatch({ type: "update", payload: build }); +} + export { BuildProvider, useBuildState, @@ -157,4 +177,5 @@ export { deleteBuild, selectBuild, addBuild, + updateBuild, }; diff --git a/src/contexts/socket.context.tsx b/src/contexts/socket.context.tsx index d32c54a7..2514d67a 100644 --- a/src/contexts/socket.context.tsx +++ b/src/contexts/socket.context.tsx @@ -1,6 +1,6 @@ import * as React from "react"; import socketIOClient from "socket.io-client"; -import { useBuildState, useBuildDispatch, addBuild } from "./build.context"; +import { useBuildState, useBuildDispatch, addBuild, updateBuild } from "./build.context"; import { Build, TestRun } from "../types"; import { useTestRunDispatch, addTestRun } from "./testRun.context"; @@ -57,6 +57,10 @@ function SocketProvider({ children }: SocketProviderProps) { addBuild(buildDispatch, build); }); + state.socket.on("build_updated", function (build: Build) { + updateBuild(buildDispatch, build); + }); + state.socket.on(`testRun_created`, function (testRun: TestRun) { if (testRun.buildId === selectedBuildId) { addTestRun(testRunDispatch, testRun);