From d189fabf7ffb90de54a7fd7ea48b817605fb8613 Mon Sep 17 00:00:00 2001 From: Tim Sinaeve Date: Wed, 12 Nov 2025 11:05:38 +0100 Subject: [PATCH] Fix repository save during running tasks --- hooks/useRepositoryManager.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/hooks/useRepositoryManager.ts b/hooks/useRepositoryManager.ts index 8e82f6f..0fedda0 100644 --- a/hooks/useRepositoryManager.ts +++ b/hooks/useRepositoryManager.ts @@ -1,5 +1,5 @@ -import { useState, useCallback, useRef } from 'react'; +import { useState, useCallback, useRef, useEffect } from 'react'; import type { Repository, LogEntry, Task, GlobalSettings, TaskStep, GitRepository } from '../types'; import { RepoStatus, BuildHealth, LogLevel, TaskStepType, VcsType } from '../types'; @@ -37,6 +37,11 @@ export const useRepositoryManager = ({ repositories, updateRepository }: { repos const [logs, setLogs] = useState>({}); const [isProcessing, setIsProcessing] = useState>(new Set()); const activeExecutionsRef = useRef>(new Map()); + const repositoriesRef = useRef(repositories); + + useEffect(() => { + repositoriesRef.current = repositories; + }, [repositories]); const addLogEntry = useCallback((repoId: string, message: string, level: LogLevel) => { const newEntry: LogEntry = { @@ -51,7 +56,7 @@ export const useRepositoryManager = ({ repositories, updateRepository }: { repos }, []); const updateRepoStatus = useCallback((repoId: string, status: RepoStatus, buildHealth?: BuildHealth) => { - const repoToUpdate = repositories.find(r => r.id === repoId); + const repoToUpdate = repositoriesRef.current.find(r => r.id === repoId); if (repoToUpdate) { updateRepository({ ...repoToUpdate, @@ -60,7 +65,7 @@ export const useRepositoryManager = ({ repositories, updateRepository }: { repos ...(buildHealth && { buildHealth }), }); } - }, [repositories, updateRepository]); + }, [updateRepository]); const runTask = useCallback(async ( repo: Repository,