Skip to content

Commit

Permalink
feat: rewrite basic info reducer to typescript
Browse files Browse the repository at this point in the history
  • Loading branch information
KochiyaOcean committed Dec 17, 2023
1 parent ce35231 commit 7d4e9c0
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 20 deletions.
25 changes: 25 additions & 0 deletions views/redux/actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,13 @@ import {
APIReqMapNextResponse,
APIPortPortRequest,
APIPortPortResponse,
APIGetMemberRequireInfoResponse,
APIGetMemberRequireInfoRequest,
APIReqMissionResultRequest,
APIReqMissionResultResponse,
APIReqPracticeBattleResultRequest,
APIReqPracticeBattleResultResponse,
APIReqSortieBattleresultResponse,
} from 'kcsapi'

import { APIDistance, APIPlaneInfo } from 'kcsapi/api_req_air_corps/set_plane/response'
Expand Down Expand Up @@ -42,8 +49,10 @@ interface ConfigAction {
value: object
}

// Config
export const createConfigAction = createAction<ConfigAction>('@@Config')

// API
export const createAPIGetMemberMapinfoResponseAction = createAction<
GameResponsePayload<APIGetMemberMapinfoResponse, APIGetMemberMapinfoRequest>
>('@@Response/kcsapi/api_get_member/mapinfo')
Expand Down Expand Up @@ -72,6 +81,22 @@ export const createAPIPortPortResponseAction = createAction<
GameResponsePayload<APIPortPortResponse, APIPortPortRequest>
>('@@Response/kcsapi/api_port/port')

export const createAPIGetMemberReqireInfoAction = createAction<
GameResponsePayload<APIGetMemberRequireInfoResponse, APIGetMemberRequireInfoRequest>
>('@@Response/kcsapi/api_get_member/require_info')

export const createAPIReqMissionResultResponseAction = createAction<
GameResponsePayload<APIReqMissionResultResponse, APIReqMissionResultRequest>
>('@@Response/kcsapi/api_req_mission/result')

export const createAPIReqPracticeResultResponseAction = createAction<
GameResponsePayload<APIReqPracticeBattleResultResponse, APIReqPracticeBattleResultRequest>
>('@@Response/kcsapi/api_req_practice/battle_result')

export const createAPIReqSortieBattleResultResponseAction = createAction<
GameResponsePayload<APIReqSortieBattleresultResponse, undefined>
>('@@Response/kcsapi/api_req_sortie/battleresult')

export interface APIReqAirCorpsChangeDeploymentBaseRequest {
api_area_id: string
api_base_id: string
Expand Down
20 changes: 0 additions & 20 deletions views/redux/info/basic.es

This file was deleted.

48 changes: 48 additions & 0 deletions views/redux/info/basic.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import { createSlice } from '@reduxjs/toolkit'
import { compareUpdate } from 'views/utils/tools'
import {
createAPIGetMemberReqireInfoAction,
createAPIPortPortResponseAction,
createAPIReqMissionResultResponseAction,
createAPIReqPracticeResultResponseAction,
createAPIReqSortieBattleResultResponseAction,
} from '../actions'
import { APIBasic as PortAPIBasic } from 'kcsapi/api_port/port/response'

type BasicState = Partial<PortAPIBasic>

const basicSlice = createSlice({
name: 'basic',
initialState: {} as BasicState,
reducers: {},
extraReducers: (builder) => {
builder
.addCase(createAPIPortPortResponseAction, (state, { payload }) => {
return compareUpdate(state, payload.body.api_basic)
})
.addCase(createAPIGetMemberReqireInfoAction, (state, { payload }) => {
return compareUpdate(state, {
api_member_id: `${payload.body.api_basic.api_member_id}`,
})
})
.addCase(createAPIReqMissionResultResponseAction, (state, { payload }) => {
return compareUpdate(state, {
api_level: payload.body.api_member_lv,
})
})
.addCase(createAPIReqPracticeResultResponseAction, (state, { payload }) => {
return compareUpdate(state, {
api_experience: payload.body.api_member_exp,
api_level: payload.body.api_member_lv,
})
})
.addCase(createAPIReqSortieBattleResultResponseAction, (state, { payload }) => {
return compareUpdate(state, {
api_experience: payload.body.api_member_exp,
api_level: payload.body.api_member_lv,
})
})
},
})

export const reducer = basicSlice.reducer

0 comments on commit 7d4e9c0

Please sign in to comment.