Skip to content

Commit 720f1ec

Browse files
authored
Merge pull request #1380 from lowcoder-org/fix/folderId4AppList
#1331: Populate folderId for app list endpoint
2 parents 73c39e8 + 318d736 commit 720f1ec

File tree

2 files changed

+23
-17
lines changed

2 files changed

+23
-17
lines changed

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationController.java

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,10 @@
11
package org.lowcoder.api.application;
22

3-
import static org.apache.commons.collections4.SetUtils.emptyIfNull;
4-
import static org.lowcoder.plugin.api.event.LowcoderEvent.EventType.APPLICATION_CREATE;
5-
import static org.lowcoder.plugin.api.event.LowcoderEvent.EventType.APPLICATION_DELETE;
6-
import static org.lowcoder.plugin.api.event.LowcoderEvent.EventType.APPLICATION_RECYCLED;
7-
import static org.lowcoder.plugin.api.event.LowcoderEvent.EventType.APPLICATION_RESTORE;
8-
import static org.lowcoder.plugin.api.event.LowcoderEvent.EventType.APPLICATION_UPDATE;
9-
import static org.lowcoder.plugin.api.event.LowcoderEvent.EventType.APPLICATION_VIEW;
10-
import static org.lowcoder.sdk.exception.BizError.INVALID_PARAMETER;
11-
import static org.lowcoder.sdk.util.ExceptionUtils.ofError;
12-
13-
import java.util.List;
14-
3+
import lombok.RequiredArgsConstructor;
154
import org.lowcoder.api.application.view.ApplicationInfoView;
165
import org.lowcoder.api.application.view.ApplicationPermissionView;
176
import org.lowcoder.api.application.view.ApplicationView;
187
import org.lowcoder.api.application.view.MarketplaceApplicationInfoView;
19-
// should we not have a AgencyApplicationInfoView
208
import org.lowcoder.api.framework.view.PageResponseView;
219
import org.lowcoder.api.framework.view.ResponseView;
2210
import org.lowcoder.api.home.SessionUserService;
@@ -28,15 +16,21 @@
2816
import org.lowcoder.domain.application.model.ApplicationRequestType;
2917
import org.lowcoder.domain.application.model.ApplicationStatus;
3018
import org.lowcoder.domain.application.model.ApplicationType;
19+
import org.lowcoder.domain.folder.service.FolderElementRelationService;
3120
import org.lowcoder.domain.permission.model.ResourceRole;
3221
import org.springframework.web.bind.annotation.PathVariable;
3322
import org.springframework.web.bind.annotation.RequestBody;
3423
import org.springframework.web.bind.annotation.RequestParam;
3524
import org.springframework.web.bind.annotation.RestController;
36-
37-
import lombok.RequiredArgsConstructor;
3825
import reactor.core.publisher.Mono;
3926

27+
import java.util.List;
28+
29+
import static org.apache.commons.collections4.SetUtils.emptyIfNull;
30+
import static org.lowcoder.plugin.api.event.LowcoderEvent.EventType.*;
31+
import static org.lowcoder.sdk.exception.BizError.INVALID_PARAMETER;
32+
import static org.lowcoder.sdk.util.ExceptionUtils.ofError;
33+
4034
@RequiredArgsConstructor
4135
@RestController
4236
public class ApplicationController implements ApplicationEndpoints {
@@ -46,6 +40,7 @@ public class ApplicationController implements ApplicationEndpoints {
4640
private final BusinessEventPublisher businessEventPublisher;
4741
private final SessionUserService sessionUserService;
4842
private final GidService gidService;
43+
private final FolderElementRelationService folderElementRelationService;
4944

5045
@Override
5146
public Mono<ResponseView<ApplicationView>> create(@RequestBody CreateApplicationRequest createApplicationRequest) {
@@ -166,7 +161,15 @@ public Mono<ResponseView<List<ApplicationInfoView>>> getApplications(@RequestPar
166161
@RequestParam(required = false, defaultValue = "1") Integer pageNum,
167162
@RequestParam(required = false, defaultValue = "0") Integer pageSize) {
168163
ApplicationType applicationTypeEnum = applicationType == null ? null : ApplicationType.fromValue(applicationType);
169-
var flux = userHomeApiService.getAllAuthorisedApplications4CurrentOrgMember(applicationTypeEnum, applicationStatus, withContainerSize, name, category).cache();
164+
var flux = userHomeApiService.getAllAuthorisedApplications4CurrentOrgMember(applicationTypeEnum, applicationStatus, withContainerSize, name, category)
165+
.delayUntil(applicationInfoView -> {
166+
String applicationId = applicationInfoView.getApplicationId();
167+
return folderElementRelationService.getByElementIds(List.of(applicationId))
168+
.doOnNext(folderElement -> {
169+
applicationInfoView.setFolderId(folderElement.folderId());
170+
}).then();
171+
})
172+
.cache();
170173
Mono<Long> countMono = flux.count();
171174
var flux1 = flux.skip((long) (pageNum - 1) * pageSize);
172175
if(pageSize > 0) flux1 = flux1.take(pageSize);

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/view/ApplicationInfoView.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public class ApplicationInfoView {
2828
@JsonInclude(Include.NON_NULL)
2929
private final Object containerSize; // for module size
3030
@Nullable
31-
private final String folderId;
31+
private String folderId;
3232

3333
@Nullable
3434
private final Instant lastViewTime; // user last visit time for this app
@@ -61,4 +61,7 @@ public long getLastEditedAt() {
6161
public boolean isFolder() {
6262
return false;
6363
}
64+
public void setFolderId(@Nullable String folderId) {
65+
this.folderId = folderId;
66+
}
6467
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy