Skip to content

Commit ef40c1f

Browse files
committed
TCA-590 - update resource-provider & user-completed-certifications providers to use SWR
1 parent 886cdb0 commit ef40c1f

File tree

14 files changed

+50
-122
lines changed

14 files changed

+50
-122
lines changed

src-ts/tools/learn/course-certificate/certificate-view/CertificateView.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import {
1818
useGetCertification,
1919
useGetCourses,
2020
UserCompletedCertificationsProviderData,
21-
useUserCompletedCertifications,
21+
useGetUserCompletedCertifications,
2222
} from '../../learn-lib'
2323
import { getCoursePath, getUserCertificateSsr } from '../../learn.routes'
2424

@@ -72,7 +72,7 @@ const CertificateView: FC<CertificateViewProps> = (props: CertificateViewProps)
7272
const {
7373
certifications: [completedCertificate],
7474
ready: completedCertificateReady,
75-
}: UserCompletedCertificationsProviderData = useUserCompletedCertifications(
75+
}: UserCompletedCertificationsProviderData = useGetUserCompletedCertifications(
7676
props.profile.userId,
7777
props.provider,
7878
props.certification

src-ts/tools/learn/course-details/CourseDetailsPage.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import {
2020
useLearnBreadcrumb,
2121
UserCertificationProgressProviderData,
2222
UserCertificationProgressStatus,
23-
useResourceProvider,
23+
useGetResourceProvider,
2424
useGetUserCertificationProgress
2525
} from '../learn-lib'
2626
import { getCoursePath } from '../learn.routes'
@@ -36,7 +36,7 @@ const CourseDetailsPage: FC<{}> = () => {
3636

3737
const {
3838
provider: resourceProvider,
39-
}: ResourceProviderData = useResourceProvider(routeParams.provider)
39+
}: ResourceProviderData = useGetResourceProvider(routeParams.provider)
4040

4141
const {
4242
course,
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
export * from './resource-provider-functions'
21
export * from './resource-provider-data.model'
32
export * from './resource-provider.provider'
3+
export * from './resource-provider.model'

src-ts/tools/learn/learn-lib/data-providers/resource-provider-provider/resource-provider-functions/index.ts

Lines changed: 0 additions & 2 deletions
This file was deleted.

src-ts/tools/learn/learn-lib/data-providers/resource-provider-provider/resource-provider-functions/resource-provider.store.ts

Lines changed: 0 additions & 9 deletions
This file was deleted.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { LearnModelBase } from '../../../functions'
1+
import { LearnModelBase } from '../../functions'
22

33
export interface ResourceProvider extends LearnModelBase {
44
attributionStatement: string
Lines changed: 12 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,19 @@
1-
import { Dispatch, SetStateAction, useEffect, useState } from 'react'
1+
import { find } from 'lodash'
2+
import useSWR, { SWRResponse } from 'swr'
3+
import { learnUrlGet } from '../../functions'
24

35
import { ResourceProviderData } from './resource-provider-data.model'
4-
import { getResourceProvidersAsync } from './resource-provider-functions/resource-provider.store'
6+
import { ResourceProvider } from './resource-provider.model'
57

6-
export function useResourceProvider(providerName?: string): ResourceProviderData {
7-
const [state, setState]: [ResourceProviderData, Dispatch<SetStateAction<ResourceProviderData>>] = useState<ResourceProviderData>({
8-
loading: false,
9-
ready: false,
10-
})
8+
export function useGetResourceProvider(providerName?: string): ResourceProviderData {
119

12-
useEffect(() => {
13-
if (!providerName) {
14-
setState((prevState) => ({
15-
...prevState,
16-
loading: false,
17-
provider: undefined,
18-
ready: false,
19-
}))
20-
return
21-
}
10+
const url: string = learnUrlGet('providers')
2211

23-
setState((prevState) => ({
24-
...prevState,
25-
loading: true,
26-
}))
12+
const {data, error}: SWRResponse<ReadonlyArray<ResourceProvider>> = useSWR(url)
2713

28-
getResourceProvidersAsync().then((providers) => {
29-
setState((prevState) => ({
30-
...prevState,
31-
loading: false,
32-
provider: providers?.find(p => p.name === providerName),
33-
ready: true,
34-
}))
35-
})
36-
}, [providerName])
37-
38-
return state
14+
return {
15+
provider: find(data, {name: providerName}),
16+
loading: !data && !error,
17+
ready: !!data || !!error,
18+
}
3919
}

src-ts/tools/learn/learn-lib/data-providers/user-certifications-provider/user-certification-progress.provider.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@ import { learnUrlGet } from '../../functions'
55
import { UserCertificationProgressProviderData } from './user-certification-progress-provider-data.model'
66
import { LearnUserCertificationProgress } from './user-certifications-functions'
77

8-
export function useGetUserCertificationProgress(userId?: number, provider?: string, certification?: string):
8+
export function useGetUserCertificationProgress(
9+
userId?: number,
10+
provider?: string,
11+
certification?: string
12+
):
913
UserCertificationProgressProviderData {
1014

1115
const params: string = [
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
export * from './user-completed-certifications-functions'
21
export * from './user-completed-certifications-provider-data.model'
32
export * from './user-completed-certifications.provider'
3+
export * from './user-completed-certification.model'
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { LearnCertificateTrackType } from '../../all-certifications-provider'
2-
import { LearnModelBase } from '../../../functions'
3-
import { UserCertificationProgressStatus } from '../../user-certifications-provider'
1+
import { LearnCertificateTrackType } from '../all-certifications-provider'
2+
import { LearnModelBase } from '../../functions'
3+
import { UserCertificationProgressStatus } from '../user-certifications-provider'
44

55
export interface LearnUserCompletedCertification extends LearnModelBase {
66
certification: string,

0 commit comments

Comments
 (0)