Skip to content

Commit

Permalink
dashboard logic cleaning
Browse files Browse the repository at this point in the history
  • Loading branch information
giacoliva committed Jan 18, 2024
1 parent 43cf5ce commit f532556
Showing 1 changed file with 36 additions and 31 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
import { Spin } from 'antd';
import { FC, useCallback, useContext, useEffect, useState } from 'react';
import {
FC,
useCallback,
useContext,
useEffect,
useMemo,
useState,
} from 'react';
import { TenantContext } from '../../../contexts/TenantContext';
import { makeWorkspace } from '../../../utilsLogic';
import Dashboard from '../Dashboard/Dashboard';
Expand All @@ -24,8 +31,15 @@ const DashboardLogic: FC<{}> = () => {
loading: tenantLoading,
} = useContext(TenantContext);

const [ws, setWs] = useState<Workspace[]>([]);
const [viewWs, setViewWs] = useState<Workspace[]>([]);
const ws = useMemo(() => {
return (
tenantData?.tenant?.spec?.workspaces
?.filter(w => w?.role !== Role.Candidate)
?.map(makeWorkspace) ?? []
);
}, [tenantData?.tenant?.spec?.workspaces]);

const [viewWs, setViewWs] = useState<Workspace[]>(ws);
const client = useApolloClient();

const { data: workspaceQueryData } = useWorkspacesQuery({
Expand All @@ -51,38 +65,29 @@ const DashboardLogic: FC<{}> = () => {
[workspaceQueryData?.workspaces?.items]
);

useEffect(() => {
let wsList =
tenantData?.tenant?.spec?.workspaces
?.filter(w => w?.role !== Role.Candidate)
?.map(makeWorkspace) ?? [];
setWs(wsList);
setViewWs(wsList);
}, [tenantData?.tenant?.spec?.workspaces]);

useEffect(() => {
if (loadCandidates) {
const workspaceQueue: Workspace[] = [];
const executeNext = () => {
if (workspaceQueue.length > 0) {
const w = workspaceQueue.shift();
client
.query({
query: TenantsDocument,
variables: {
labels: `crownlabs.polito.it/workspace-${w?.name}=candidate`,
},
})
.then(queryResult => {
let numCandidate = queryResult.data.tenants.items.length;
if (numCandidate > 0) {
ws.find(ws => ws.name === w?.name)!.waitingTenants =
numCandidate;
setViewWs([...ws]);
}
executeNext();
});
if (!loadCandidates || workspaceQueue.length === 0) {
return;
}
const w = workspaceQueue.shift();
client
.query({
query: TenantsDocument,
variables: {
labels: `crownlabs.polito.it/workspace-${w?.name}=candidate`,
},
})
.then(queryResult => {
let numCandidate = queryResult.data.tenants.items.length;
if (numCandidate > 0) {
ws.find(ws => ws.name === w?.name)!.waitingTenants = numCandidate;
setViewWs([...ws]);
}
executeNext();
});
};

ws?.filter(
Expand All @@ -105,8 +110,8 @@ const DashboardLogic: FC<{}> = () => {
const selectLoadCandidates = () => {
if (loadCandidates) {
ws.forEach(w => (w.waitingTenants = undefined));
setViewWs([...ws]);
}
setViewWs([...ws]);
setLoadCandidates(!loadCandidates);
dashboard.set(String(!loadCandidates));
};
Expand Down

0 comments on commit f532556

Please sign in to comment.