Skip to content

Commit b196c71

Browse files
jankeromnesroboquat
authored andcommitted
[dashboard] Add loading indicator to Prebuilds page
1 parent 18b8251 commit b196c71

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

components/dashboard/src/projects/Prebuilds.tsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ export default function () {
3737
const [searchFilter, setSearchFilter] = useState<string | undefined>();
3838
const [statusFilter, setStatusFilter] = useState<PrebuiltWorkspaceState | undefined>();
3939

40+
const [isLoadingPrebuilds, setIsLoadingPrebuilds] = useState<boolean>(true);
4041
const [prebuilds, setPrebuilds] = useState<PrebuildWithStatus[]>([]);
4142

4243
useEffect(() => {
@@ -47,13 +48,16 @@ export default function () {
4748
onPrebuildUpdate: (update: PrebuildWithStatus) => {
4849
if (update.info.projectId === project.id) {
4950
setPrebuilds(prev => [update, ...prev.filter(p => p.info.id !== update.info.id)]);
51+
setIsLoadingPrebuilds(false);
5052
}
5153
}
5254
});
5355

5456
(async () => {
57+
setIsLoadingPrebuilds(true);
5558
const prebuilds = await getGitpodService().server.findPrebuilds({ projectId: project.id });
5659
setPrebuilds(prebuilds);
60+
setIsLoadingPrebuilds(false);
5761
})();
5862

5963
return () => {
@@ -78,7 +82,7 @@ export default function () {
7882
setProject(newProject);
7983
}
8084
})();
81-
}, [teams]);
85+
}, [projectSlug, team, teams]);
8286

8387
const prebuildContextMenu = (p: PrebuildWithStatus) => {
8488
const isFailed = p.status === "aborted" || p.status === "timeout" || !!p.error;
@@ -166,7 +170,7 @@ export default function () {
166170
<div className="py-3 pl-3">
167171
<DropDown prefix="Prebuild Status: " contextMenuWidth="w-32" entries={statusFilterEntries()} />
168172
</div>
169-
{(!!project && prebuilds.length === 0) &&
173+
{(!isLoadingPrebuilds && prebuilds.length === 0) &&
170174
<button onClick={() => triggerPrebuild(null)} className="ml-2">Run Prebuild</button>}
171175
</div>
172176
<ItemsList className="mt-2">
@@ -181,6 +185,10 @@ export default function () {
181185
<span>Branch</span>
182186
</ItemField>
183187
</Item>
188+
{isLoadingPrebuilds && <div className="flex items-center justify-center space-x-2 text-gray-400 text-sm pt-16">
189+
<img alt="" className="h-4 w-4 animate-spin" src={Spinner} />
190+
<span>Fetching prebuilds...</span>
191+
</div>}
184192
{prebuilds.filter(filter).sort(prebuildSorter).map((p, index) => <Item key={`prebuild-${p.info.id}`} className="grid grid-cols-3">
185193
<ItemField className="flex items-center my-auto">
186194
<Link to={`/${!!team ? 't/'+team.slug : 'projects'}/${projectSlug}/${p.info.id}`} className="cursor-pointer">

components/dashboard/src/projects/Project.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ export default function () {
181181
{showAuthBanner ? (
182182
<div className="mt-8 rounded-xl text-gray-500 bg-gray-50 dark:bg-gray-800 flex-col">
183183
<div className="p-8 text-center">
184-
<img src={NoAccess} title="No Access" className="m-auto mb-4" />
184+
<img src={NoAccess} alt="" title="No Access" className="m-auto mb-4" />
185185
<div className="text-center text-gray-600 dark:text-gray-50 pb-3 font-bold">
186186
No Access
187187
</div>

0 commit comments

Comments
 (0)