mirror of
https://github.com/Unleash/unleash.git
synced 2025-09-15 17:50:48 +02:00
fix: handle loading states for project details for a single project
This commit is contained in:
parent
9fecc02462
commit
3bc9c9ae8a
@ -122,7 +122,10 @@ const ProjectListItem: FC<{
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
type MyProjectsState = 'no projects' | 'projects' | 'projects with error';
|
type MyProjectsState =
|
||||||
|
| 'no projects'
|
||||||
|
| 'projects'
|
||||||
|
| 'projects with error or loading';
|
||||||
|
|
||||||
export const MyProjects = forwardRef<
|
export const MyProjects = forwardRef<
|
||||||
HTMLDivElement,
|
HTMLDivElement,
|
||||||
@ -149,7 +152,7 @@ export const MyProjects = forwardRef<
|
|||||||
const state: MyProjectsState = projects.length
|
const state: MyProjectsState = projects.length
|
||||||
? personalDashboardProjectDetails
|
? personalDashboardProjectDetails
|
||||||
? 'projects'
|
? 'projects'
|
||||||
: 'projects with error'
|
: 'projects with error or loading'
|
||||||
: 'no projects';
|
: 'no projects';
|
||||||
|
|
||||||
const activeProjectStage =
|
const activeProjectStage =
|
||||||
@ -190,7 +193,7 @@ export const MyProjects = forwardRef<
|
|||||||
),
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
case 'projects with error':
|
case 'projects with error or loading':
|
||||||
return {
|
return {
|
||||||
list: (
|
list: (
|
||||||
<StyledList>
|
<StyledList>
|
||||||
@ -206,8 +209,19 @@ export const MyProjects = forwardRef<
|
|||||||
))}
|
))}
|
||||||
</StyledList>
|
</StyledList>
|
||||||
),
|
),
|
||||||
box1: <DataError project={activeProject} />,
|
box1: (
|
||||||
box2: <ContactAdmins admins={admins} />,
|
<div data-loading>
|
||||||
|
<DataError
|
||||||
|
data-loading
|
||||||
|
project={activeProject}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
),
|
||||||
|
box2: (
|
||||||
|
<div data-loading>
|
||||||
|
<ContactAdmins admins={admins} />
|
||||||
|
</div>
|
||||||
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
case 'projects': {
|
case 'projects': {
|
||||||
|
@ -130,15 +130,10 @@ export const PersonalDashboard = () => {
|
|||||||
splash?.personalDashboardKeyConcepts ? 'closed' : 'open',
|
splash?.personalDashboardKeyConcepts ? 'closed' : 'open',
|
||||||
);
|
);
|
||||||
|
|
||||||
const { personalDashboardProjectDetails, error: detailsError } =
|
const { personalDashboardProjectDetails, loading: detailsLoading } =
|
||||||
usePersonalDashboardProjectDetails(activeProject);
|
usePersonalDashboardProjectDetails(activeProject);
|
||||||
|
|
||||||
const activeProjectStage =
|
const loadingProjectDetailsRef = useLoading(detailsLoading);
|
||||||
personalDashboardProjectDetails?.onboardingStatus.status ?? 'loading';
|
|
||||||
|
|
||||||
const projectStageRef = useLoading(
|
|
||||||
!detailsError && activeProjectStage === 'loading',
|
|
||||||
);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<MainContent>
|
<MainContent>
|
||||||
@ -192,7 +187,7 @@ export const PersonalDashboard = () => {
|
|||||||
<MyProjects
|
<MyProjects
|
||||||
owners={personalDashboard?.projectOwners ?? []}
|
owners={personalDashboard?.projectOwners ?? []}
|
||||||
admins={personalDashboard?.admins ?? []}
|
admins={personalDashboard?.admins ?? []}
|
||||||
ref={projectStageRef}
|
ref={loadingProjectDetailsRef}
|
||||||
projects={projects}
|
projects={projects}
|
||||||
activeProject={activeProject || ''}
|
activeProject={activeProject || ''}
|
||||||
setActiveProject={setActiveProject}
|
setActiveProject={setActiveProject}
|
||||||
|
@ -5,10 +5,7 @@ import { ActionBox } from './ActionBox';
|
|||||||
|
|
||||||
export const DataError: FC<{ project: string }> = ({ project }) => {
|
export const DataError: FC<{ project: string }> = ({ project }) => {
|
||||||
return (
|
return (
|
||||||
<ActionBox
|
<ActionBox title={`Couldn't fetch data for project "${project}".`}>
|
||||||
data-loading
|
|
||||||
title={`Couldn't fetch data for project "${project}".`}
|
|
||||||
>
|
|
||||||
<p>
|
<p>
|
||||||
The API request to get data for this project returned with an
|
The API request to get data for this project returned with an
|
||||||
error.
|
error.
|
||||||
|
@ -51,7 +51,7 @@ export const RoleAndOwnerInfo = ({ roles, owners }: Props) => {
|
|||||||
const firstRoles = roles.slice(0, 3);
|
const firstRoles = roles.slice(0, 3);
|
||||||
const extraRoles = roles.slice(3);
|
const extraRoles = roles.slice(3);
|
||||||
return (
|
return (
|
||||||
<Wrapper>
|
<Wrapper data-loading>
|
||||||
<InfoSection>
|
<InfoSection>
|
||||||
{roles.length > 0 ? (
|
{roles.length > 0 ? (
|
||||||
<>
|
<>
|
||||||
|
Loading…
Reference in New Issue
Block a user