blob: f192af14b6442e03c1ecedbcd3a73252f72d56fd [file] [log] [blame]
import React, {useEffect, useState} from 'react';
import {KaravanApi} from "../api/KaravanApi";
import '../designer/karavan.css';
import {
AppConfig,
CamelStatus,
ContainerStatus,
DeploymentStatus,
PipelineStatus,
Project,
ServiceStatus
} from "../api/ProjectModels";
import {useAppConfigStore, useProjectsStore, useProjectStore, useStatusesStore} from "../api/ProjectStore";
import {shallow} from "zustand/shallow";
export function MainDataPoller () {
const [config, setLoading] = useAppConfigStore((s) =>
[s.config, s.setLoading], shallow)
const [projects, setProjects] = useProjectsStore((state) => [state.projects, state.setProjects], shallow)
const [deployments, services, containers, camels, setDeployments, setServices, setContainers, setCamels, setPipelineStatuses]
= useStatusesStore((s) => [s.deployments, s.services, s.containers, s.camels,
s.setDeployments, s.setServices, s.setContainers, s.setCamels, s.setPipelineStatuses], shallow);
const [project] = useProjectStore((state) => [state.project], shallow )
useEffect(() => {
const interval = setInterval(() => getData(), 1300)
return () => {
clearInterval(interval);
};
}, [project]);
function getData() {
setLoading(true);
KaravanApi.getConfiguration((config: AppConfig) => {
if (project.projectId === undefined) {
KaravanApi.getProjects((projects: Project[]) => {
setProjects(projects);
});
}
KaravanApi.getAllDeploymentStatuses((statuses: DeploymentStatus[]) => {
setDeployments(statuses);
});
KaravanApi.getAllServiceStatuses((statuses: ServiceStatus[]) => {
setServices(statuses);
});
KaravanApi.getAllContainerStatuses((statuses: ContainerStatus[]) => {
setContainers(statuses);
});
KaravanApi.getAllCamelStatuses(config.environment, (statuses: CamelStatus[]) => {
setCamels(statuses);
});
KaravanApi.getPipelineStatuses(config.environment, (status: PipelineStatus[]) => {
setPipelineStatuses(status);
});
setLoading(false);
});
}
return (<></>)
}