@@ -171,6 +171,7 @@ export function ReleaseManagementPage() {
|
||||
const [totalReleases, setTotalReleases] = useState(0);
|
||||
const [usedBuildIdValues, setUsedBuildIdValues] = useState<string[]>([]);
|
||||
const [usedReleaseValueValues, setUsedReleaseValueValues] = useState<string[]>([]);
|
||||
const hasActiveRelease = releases.some((release) => release.status === 'PENDING' || release.status === 'RUNNING');
|
||||
const loadingVisible = useMinimumLoading(loading);
|
||||
const usedValues = useMemo(() => new Set(usedReleaseValueValues), [usedReleaseValueValues]);
|
||||
const usedBuildIds = useMemo(() => new Set(usedBuildIdValues), [usedBuildIdValues]);
|
||||
@@ -226,6 +227,28 @@ export function ReleaseManagementPage() {
|
||||
void refresh();
|
||||
}, [selectedAppId, page, range, apps]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!hasActiveRelease) return;
|
||||
const timer = window.setInterval(() => {
|
||||
listReleasesPage({
|
||||
appKey: apps.find((app) => app.id === selectedAppId)?.key,
|
||||
page,
|
||||
limit: releasePageSize,
|
||||
since: releaseRangeSince(range)
|
||||
})
|
||||
.then((nextReleases) => {
|
||||
setReleases(nextReleases.releases);
|
||||
setTotalReleases(nextReleases.total);
|
||||
setUsedBuildIdValues(nextReleases.usedBuildIds ?? []);
|
||||
setUsedReleaseValueValues(nextReleases.usedValues ?? []);
|
||||
})
|
||||
.catch((error: Error) => {
|
||||
toast({ type: 'error', message: `릴리즈 목록 갱신 실패: ${error.message}` });
|
||||
});
|
||||
}, 2000);
|
||||
return () => window.clearInterval(timer);
|
||||
}, [hasActiveRelease, apps, selectedAppId, page, range, toast]);
|
||||
|
||||
useEffect(() => {
|
||||
setPage(1);
|
||||
}, [selectedAppId, range]);
|
||||
|
||||
Reference in New Issue
Block a user