Skip to content

Commit

Permalink
Update IssuesListPage to fetch issues data via Redux
Browse files Browse the repository at this point in the history
  • Loading branch information
markerikson committed Sep 6, 2019
1 parent b2e5919 commit 8dbdc07
Showing 1 changed file with 15 additions and 34 deletions.
49 changes: 15 additions & 34 deletions src/features/issuesList/IssuesListPage.tsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
import React, { useState, useEffect } from 'react'
import React, { useEffect } from 'react'
import { useSelector, useDispatch } from 'react-redux'

import { getIssues, IssuesResult } from 'api/githubAPI'

import { fetchIssuesCount } from 'features/repoSearch/repoDetailsSlice'
import { RootState } from 'app/rootReducer'

import { IssuesPageHeader } from './IssuesPageHeader'
import { IssuesList } from './IssuesList'
import { IssuePagination, OnPageChangeCallback } from './IssuePagination'
import { fetchIssues } from './issuesSlice'

interface ILProps {
org: string
Expand All @@ -27,43 +26,25 @@ export const IssuesListPage = ({
}: ILProps) => {
const dispatch = useDispatch()

const [issuesResult, setIssues] = useState<IssuesResult>({
pageLinks: null,
pageCount: 1,
issues: []
})
const [isLoading, setIsLoading] = useState<boolean>(false)
const [issuesError, setIssuesError] = useState<Error | null>(null)
const {
currentPageIssues,
isLoading,
error: issuesError,
issuesByNumber,
pageCount
} = useSelector((state: RootState) => state.issues)

const openIssueCount = useSelector(
(state: RootState) => state.repoDetails.openIssuesCount
)

const { issues, pageCount } = issuesResult
const issues = currentPageIssues.map(
issueNumber => issuesByNumber[issueNumber]
)

useEffect(() => {
async function fetchEverything() {
async function fetchIssues() {
const issuesResult = await getIssues(org, repo, page)
setIssues(issuesResult)
}

try {
await Promise.all([
fetchIssues(),
dispatch(fetchIssuesCount(org, repo))
])
setIssuesError(null)
} catch (err) {
console.error(err)
setIssuesError(err)
} finally {
setIsLoading(false)
}
}

setIsLoading(true)

fetchEverything()
dispatch(fetchIssues(org, repo, page))
dispatch(fetchIssuesCount(org, repo))
}, [org, repo, page, dispatch])

if (issuesError) {
Expand Down

0 comments on commit 8dbdc07

Please sign in to comment.