From 31fb1cdbdf223120a1e36a24828f0a7eaa4ecef0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=B1=E9=A2=A8=E8=B0=B7=E3=82=AA=E3=83=BC=E3=82=B7?= =?UTF-8?q?=E3=83=A3=E3=83=B3?= Date: Mon, 18 Dec 2023 02:01:40 +0900 Subject: [PATCH] feat: rewrite constructs info reducer to typescript --- views/redux/actions.ts | 23 ++++++++++++++++- views/redux/info/basic.ts | 4 +-- views/redux/info/constructions.es | 23 ----------------- views/redux/info/constructions.ts | 41 +++++++++++++++++++++++++++++++ 4 files changed, 65 insertions(+), 26 deletions(-) delete mode 100644 views/redux/info/constructions.es create mode 100644 views/redux/info/constructions.ts diff --git a/views/redux/actions.ts b/views/redux/actions.ts index 9753e6ea9..12a91dcb5 100644 --- a/views/redux/actions.ts +++ b/views/redux/actions.ts @@ -19,6 +19,12 @@ import { APIReqPracticeBattleResultRequest, APIReqPracticeBattleResultResponse, APIReqSortieBattleresultResponse, + APIReqKousyouGetshipResponse, + APIReqKousyouGetshipRequest, + APIGetMemberKdockResponse, + APIGetMemberKdockRequest, + APIReqKousyouCreateshipSpeedchangeResponse, + APIReqKousyouCreateshipSpeedchangeRequest, } from 'kcsapi' import { APIDistance, APIPlaneInfo } from 'kcsapi/api_req_air_corps/set_plane/response' @@ -81,7 +87,7 @@ export const createAPIPortPortResponseAction = createAction< GameResponsePayload >('@@Response/kcsapi/api_port/port') -export const createAPIGetMemberReqireInfoAction = createAction< +export const createAPIGetMemberRequireInfoAction = createAction< GameResponsePayload >('@@Response/kcsapi/api_get_member/require_info') @@ -97,6 +103,21 @@ export const createAPIReqSortieBattleResultResponseAction = createAction< GameResponsePayload >('@@Response/kcsapi/api_req_sortie/battleresult') +export const createAPIReqKousyouGetShipResponseAction = createAction< + GameResponsePayload +>('@@Response/kcsapi/api_req_kousyou/getship') + +export const createAPIGetMemberKdockResponseAction = createAction< + GameResponsePayload +>('@@Response/kcsapi/api_get_member/kdock') + +export const createAPIReqKousyouCreateShipSpeedChangeResponseAction = createAction< + GameResponsePayload< + APIReqKousyouCreateshipSpeedchangeResponse, + APIReqKousyouCreateshipSpeedchangeRequest + > +>('@@Response/kcsapi/api_req_kousyou/createship_speedchange') + export interface APIReqAirCorpsChangeDeploymentBaseRequest { api_area_id: string api_base_id: string diff --git a/views/redux/info/basic.ts b/views/redux/info/basic.ts index 8e49bcede..b0c5cb1b0 100644 --- a/views/redux/info/basic.ts +++ b/views/redux/info/basic.ts @@ -1,7 +1,7 @@ import { createSlice } from '@reduxjs/toolkit' import { compareUpdate } from 'views/utils/tools' import { - createAPIGetMemberReqireInfoAction, + createAPIGetMemberRequireInfoAction, createAPIPortPortResponseAction, createAPIReqMissionResultResponseAction, createAPIReqPracticeResultResponseAction, @@ -20,7 +20,7 @@ const basicSlice = createSlice({ .addCase(createAPIPortPortResponseAction, (state, { payload }) => { return compareUpdate(state, payload.body.api_basic) }) - .addCase(createAPIGetMemberReqireInfoAction, (state, { payload }) => { + .addCase(createAPIGetMemberRequireInfoAction, (state, { payload }) => { return compareUpdate(state, { api_member_id: `${payload.body.api_basic.api_member_id}`, }) diff --git a/views/redux/info/constructions.es b/views/redux/info/constructions.es deleted file mode 100644 index a52b9ec21..000000000 --- a/views/redux/info/constructions.es +++ /dev/null @@ -1,23 +0,0 @@ -const completeConstruction = { - api_complete_time: 0, - api_complete_time_str: '0', - api_state: 3, -} - -export function reducer(state = [], { type, body, postBody }) { - switch (type) { - case '@@Response/kcsapi/api_get_member/require_info': - case '@@Response/kcsapi/api_req_kousyou/getship': - return body.api_kdock - case '@@Response/kcsapi/api_get_member/kdock': - return body - case '@@Response/kcsapi/api_req_kousyou/createship_speedchange': { - const { api_kdock_id } = postBody - const dockId = parseInt(api_kdock_id, 10) - const newState = state.slice() - newState[dockId - 1] = Object.assign({}, newState[dockId - 1], completeConstruction) - return newState - } - } - return state -} diff --git a/views/redux/info/constructions.ts b/views/redux/info/constructions.ts new file mode 100644 index 000000000..dbae7e0a6 --- /dev/null +++ b/views/redux/info/constructions.ts @@ -0,0 +1,41 @@ +import { APIKdock } from 'kcsapi/api_get_member/require_info/response' +import { + createAPIGetMemberKdockResponseAction, + createAPIGetMemberRequireInfoAction, + createAPIReqKousyouCreateShipSpeedChangeResponseAction, + createAPIReqKousyouGetShipResponseAction, +} from '../actions' +import { createSlice } from '@reduxjs/toolkit' + +const completeConstruction = { + api_complete_time: 0, + api_complete_time_str: '0', + api_state: 3, +} + +const constructionsSlice = createSlice({ + name: 'constructions', + initialState: [] as APIKdock[], + reducers: {}, + extraReducers: (builder) => { + builder + .addCase(createAPIGetMemberRequireInfoAction, (state, { payload }) => { + return payload.body.api_kdock + }) + .addCase(createAPIReqKousyouGetShipResponseAction, (state, { payload }) => { + return payload.body.api_kdock + }) + .addCase(createAPIGetMemberKdockResponseAction, (state, { payload }) => { + return payload.body + }) + .addCase(createAPIReqKousyouCreateShipSpeedChangeResponseAction, (state, { payload }) => { + const { api_kdock_id } = payload.postBody + const dockId = parseInt(api_kdock_id, 10) + const newState = state.slice() + newState[dockId - 1] = Object.assign({}, newState[dockId - 1], completeConstruction) + return newState + }) + }, +}) + +export const reducer = constructionsSlice.reducer