woodpecker/web/src/compositions/useEvents.ts

43 lines
1,019 B
TypeScript
Raw Normal View History

import PipelineStore from '~/store/pipelines';
import RepoStore from '~/store/repos';
import { repoSlug } from '~/utils/helpers';
import useApiClient from './useApiClient';
const apiClient = useApiClient();
let initialized = false;
export default () => {
if (initialized) {
return;
}
const repoStore = RepoStore();
const pipelineStore = PipelineStore();
initialized = true;
apiClient.on((data) => {
// contains repo update
if (!data.repo) {
return;
}
const { repo } = data;
repoStore.setRepo(repo);
// contains pipeline update
if (!data.pipeline) {
return;
}
const { pipeline } = data;
pipelineStore.setPipeline(repo.owner, repo.name, pipeline);
pipelineStore.setPipelineFeedItem({ ...pipeline, name: repo.name, owner: repo.owner, full_name: repoSlug(repo) });
// contains step update
if (!data.step) {
return;
}
const { step } = data;
pipelineStore.setStep(repo.owner, repo.name, pipeline.number, step);
});
};