Skip to content

Commit

Permalink
Add initial state slice for UI display
Browse files Browse the repository at this point in the history
  • Loading branch information
markerikson committed Nov 15, 2019
1 parent df3c9b7 commit daeff01
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 1 deletion.
6 changes: 5 additions & 1 deletion src/app/rootReducer.ts
@@ -1,6 +1,10 @@
import { combineReducers } from '@reduxjs/toolkit'

const rootReducer = combineReducers({})
import issuesDisplayReducer from 'features/issuesDisplay/issuesDisplaySlice'

const rootReducer = combineReducers({
issuesDisplay: issuesDisplayReducer
})

export type RootState = ReturnType<typeof rootReducer>

Expand Down
57 changes: 57 additions & 0 deletions src/features/issuesDisplay/issuesDisplaySlice.ts
@@ -0,0 +1,57 @@
import { createSlice, PayloadAction } from '@reduxjs/toolkit'

interface CurrentDisplay {
displayType: 'issues' | 'comments'
issueId: number | null
}

interface CurrentDisplayPayload {
displayType: 'issues' | 'comments'
issueId?: number
}

interface CurrentRepo {
org: string
repo: string
}

type CurrentDisplayState = {
page: number
} & CurrentDisplay &
CurrentRepo

let initialState: CurrentDisplayState = {
org: 'rails',
repo: 'rails',
page: 1,
displayType: 'issues',
issueId: null
}

const issuesDisplaySlice = createSlice({
name: 'issuesDisplay',
initialState,
reducers: {
displayRepo(state, action: PayloadAction<CurrentRepo>) {
const { org, repo } = action.payload
state.org = org
state.repo = repo
},
setCurrentPage(state, action: PayloadAction<number>) {
state.page = action.payload
},
setCurrentDisplayType(state, action: PayloadAction<CurrentDisplayPayload>) {
const { displayType, issueId = null } = action.payload
state.displayType = displayType
state.issueId = issueId
}
}
})

export const {
displayRepo,
setCurrentDisplayType,
setCurrentPage
} = issuesDisplaySlice.actions

export default issuesDisplaySlice.reducer

0 comments on commit daeff01

Please sign in to comment.