From f7dc89ee81d1e8c51cefc443c2e5ed6beb8abb1a Mon Sep 17 00:00:00 2001 From: Rene Pfeuffer Date: Wed, 11 Dec 2019 15:49:33 +0100 Subject: [PATCH] Reload partial results --- scm-ui/ui-types/src/Sources.ts | 1 + .../src/repos/sources/modules/sources.ts | 18 ++++++++++++++++-- .../scm/api/v2/resources/FileObjectDto.java | 1 + 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/scm-ui/ui-types/src/Sources.ts b/scm-ui/ui-types/src/Sources.ts index 4e0e7fe188..7b80b9df94 100644 --- a/scm-ui/ui-types/src/Sources.ts +++ b/scm-ui/ui-types/src/Sources.ts @@ -16,6 +16,7 @@ export type File = { length: number; lastModified?: string; subRepository?: SubRepository; // TODO + partialResult: boolean; _links: Links; _embedded: { children: File[] | null | undefined; diff --git a/scm-ui/ui-webapp/src/repos/sources/modules/sources.ts b/scm-ui/ui-webapp/src/repos/sources/modules/sources.ts index 826b32f1f6..b989e18b34 100644 --- a/scm-ui/ui-webapp/src/repos/sources/modules/sources.ts +++ b/scm-ui/ui-webapp/src/repos/sources/modules/sources.ts @@ -10,13 +10,27 @@ export const FETCH_SOURCES_SUCCESS = `${FETCH_SOURCES}_${types.SUCCESS_SUFFIX}`; export const FETCH_SOURCES_FAILURE = `${FETCH_SOURCES}_${types.FAILURE_SUFFIX}`; export function fetchSources(repository: Repository, revision: string, path: string) { + return fetchSourcesWithoutOptionalLoadingState(repository, revision, path, true); +} + +export function fetchSourcesWithoutOptionalLoadingState( + repository: Repository, + revision: string, + path: string, + dispatchLoading: boolean +) { return function(dispatch: any) { - dispatch(fetchSourcesPending(repository, revision, path)); + if (dispatchLoading) { + dispatch(fetchSourcesPending(repository, revision, path)); + } return apiClient .get(createUrl(repository, revision, path)) .then(response => response.json()) - .then(sources => { + .then((sources: File) => { dispatch(fetchSourcesSuccess(repository, revision, path, sources)); + if (sources._embedded.children && sources._embedded.children.find(c => c.partialResult)) { + setTimeout(() => dispatch(fetchSourcesWithoutOptionalLoadingState(repository, revision, path, false)), 1000); + } }) .catch(err => { dispatch(fetchSourcesFailure(repository, revision, path, err)); diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/FileObjectDto.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/FileObjectDto.java index 0bce564e35..626af4bac5 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/FileObjectDto.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/FileObjectDto.java @@ -27,6 +27,7 @@ public class FileObjectDto extends HalRepresentation { private SubRepositoryDto subRepository; @JsonInclude(JsonInclude.Include.NON_EMPTY) private String revision; + private boolean partialResult; public FileObjectDto(Links links, Embedded embedded) { super(links, embedded);