Skip to content

Commit 25ab120

Browse files
committed
MP-172 - prevent data flicker
1 parent 0b67972 commit 25ab120

File tree

4 files changed

+18
-22
lines changed

4 files changed

+18
-22
lines changed

src/apps/profiles/src/member-profile/education-and-certifications/EducationAndCertifications.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { useSearchParams } from 'react-router-dom'
44
import {
55
MemberTraitsAPI,
66
useMemberTraits,
7-
UserCompletedCertificationsData,
7+
UserCompletedCertificationsResponse,
88
UserProfile,
99
UserTrait,
1010
UserTraitIds,
@@ -29,17 +29,19 @@ const EducationAndCertifications: FC<EducationAndCertificationsProps> = (props:
2929
const [queryParams]: [URLSearchParams, any] = useSearchParams()
3030
const editMode: string | null = queryParams.get(EDIT_MODE_QUERY_PARAM)
3131

32-
const { data: memberTCA }: { data: UserCompletedCertificationsData | undefined }
32+
const { data: memberTCA, loading: tcaDataLoading }: UserCompletedCertificationsResponse
3333
= useUserCompletedCertifications(props.profile?.userId)
3434

3535
const canEdit: boolean = props.authProfile?.handle === props.profile.handle
3636

3737
const [isEditMode, setIsEditMode]: [boolean, Dispatch<SetStateAction<boolean>>]
3838
= useState<boolean>(false)
3939

40-
const { data: memberEducationTraits, mutate: mutateTraits, loading }: MemberTraitsAPI
40+
const { data: memberEducationTraits, mutate: mutateTraits, loading: traitsLoading }: MemberTraitsAPI
4141
= useMemberTraits(props.profile.handle, { traitIds: UserTraitIds.education })
4242

43+
const loading = tcaDataLoading || traitsLoading
44+
4345
const memberEducation: UserTrait[] | undefined
4446
= useMemo(() => memberEducationTraits?.[0]?.traits?.data, [memberEducationTraits])
4547

@@ -111,7 +113,7 @@ const EducationAndCertifications: FC<EducationAndCertificationsProps> = (props:
111113
</EmptySection>
112114
)}
113115

114-
{canEdit && !hasEducationData && (
116+
{!loading && canEdit && !hasEducationData && (
115117
<AddButton
116118
label='Add education & certifications'
117119
onClick={handleEditEducationClick}

src/apps/profiles/src/member-profile/languages/MemberLanguages.tsx

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import { Dispatch, FC, SetStateAction, useEffect, useMemo, useState } from 'react'
2-
import { KeyedMutator } from 'swr'
32
import { useSearchParams } from 'react-router-dom'
43

5-
import { useMemberTraits, UserProfile, UserTrait, UserTraitIds, UserTraits } from '~/libs/core'
4+
import { MemberTraitsAPI, useMemberTraits, UserProfile, UserTrait, UserTraitIds } from '~/libs/core'
65

76
import { AddButton, EditMemberPropertyBtn } from '../../components'
87
import { EDIT_MODE_QUERY_PARAM, profileEditModes } from '../../config'
@@ -26,10 +25,7 @@ const MemberLanguages: FC<MemberLanguagesProps> = (props: MemberLanguagesProps)
2625
const [isEditMode, setIsEditMode]: [boolean, Dispatch<SetStateAction<boolean>>]
2726
= useState<boolean>(false)
2827

29-
const { data: memberLanguageTraits, mutate: mutateTraits }: {
30-
data: UserTraits[] | undefined,
31-
mutate: KeyedMutator<any>,
32-
}
28+
const { data: memberLanguageTraits, mutate: mutateTraits, loading }: MemberTraitsAPI
3329
= useMemberTraits(props.profile.handle, { traitIds: UserTraitIds.languages })
3430

3531
const memberLanguages: UserTrait[] | undefined
@@ -58,7 +54,7 @@ const MemberLanguages: FC<MemberLanguagesProps> = (props: MemberLanguagesProps)
5854
}, 1000)
5955
}
6056

61-
return canEdit || memberLanguages ? (
57+
return !loading && (canEdit || memberLanguages) ? (
6258
<div className={styles.container}>
6359
<div className={styles.titleWrap}>
6460
<p className='body-main-bold'>Languages</p>

src/apps/profiles/src/member-profile/links/MemberLinks.tsx

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import { Dispatch, FC, SetStateAction, useEffect, useMemo, useState } from 'react'
2-
import { KeyedMutator } from 'swr'
32
import { useSearchParams } from 'react-router-dom'
43

5-
import { useMemberTraits, UserProfile, UserTrait, UserTraitIds, UserTraits } from '~/libs/core'
4+
import { MemberTraitsAPI, useMemberTraits, UserProfile, UserTrait, UserTraitIds } from '~/libs/core'
65
import {
76
IconOutline,
87
SocialIconFacebook,
@@ -53,10 +52,7 @@ const MemberLinks: FC<MemberLinksProps> = (props: MemberLinksProps) => {
5352
const [isEditMode, setIsEditMode]: [boolean, Dispatch<SetStateAction<boolean>>]
5453
= useState<boolean>(false)
5554

56-
const { data: memberPersonalizationTraits, mutate: mutateTraits }: {
57-
data: UserTraits[] | undefined,
58-
mutate: KeyedMutator<any>,
59-
}
55+
const { data: memberPersonalizationTraits, mutate: mutateTraits, loading }: MemberTraitsAPI
6056
= useMemberTraits(props.profile.handle, { traitIds: UserTraitIds.personalization })
6157

6258
const memberLinks: UserTrait | undefined
@@ -87,7 +83,7 @@ const MemberLinks: FC<MemberLinksProps> = (props: MemberLinksProps) => {
8783
}, 1000)
8884
}
8985

90-
return canEdit || memberLinks?.links ? (
86+
return !loading && (canEdit || memberLinks?.links) ? (
9187
<div className={styles.container}>
9288
<div className={styles.titleWrap}>
9389
<p className='body-main-bold'>Links</p>

src/libs/core/lib/profile/data-providers/useUserCompletedCertifications.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,15 @@ export interface UserCompletedCertificationsData {
1414
courses: ReadonlyArray<LearnUserCertificationProgress>
1515
}
1616

17-
export function useUserCompletedCertifications(
18-
userId: number | undefined,
19-
): {
17+
export interface UserCompletedCertificationsResponse {
2018
data: UserCompletedCertificationsData | undefined
2119
loading: boolean
2220
ready: boolean
23-
} {
21+
}
22+
23+
export function useUserCompletedCertifications(
24+
userId: number | undefined,
25+
): UserCompletedCertificationsResponse {
2426

2527
const url: string = `${learnBaseURL()}/completed-certifications/${userId}`
2628

0 commit comments

Comments
 (0)