diff --git a/src/main/java/edu/group5/app/view/browsepage/BrowsePageView.java b/src/main/java/edu/group5/app/view/browsepage/BrowsePageView.java index a2d92c8..b27b011 100644 --- a/src/main/java/edu/group5/app/view/browsepage/BrowsePageView.java +++ b/src/main/java/edu/group5/app/view/browsepage/BrowsePageView.java @@ -6,6 +6,7 @@ import edu.group5.app.control.MainController; import edu.group5.app.model.organization.Organization; import edu.group5.app.view.Header; +import javafx.application.Platform; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.ScrollPane; @@ -75,8 +76,26 @@ private GridPane createOrganizationSection(String searchTerm) { grid.setStyle("-fx-padding: 0;"); grid.setMaxWidth(Double.MAX_VALUE); + // Store reference for later updates + if (organizationGrid == null) { + organizationGrid = grid; + } + if (allOrganizations == null) { - allOrganizations = mainController.getOrganizationService().getTrustedOrganizations(); + + //Show loading text while organizations and logos are fetched + grid.add(new javafx.scene.control.Label("Loading..."), 0, 0); + + //Fetch trusted organizations with logos asynchronously (runs in background) + mainController.getOrganizationService() + .getTrustedOrganizationsWithLogosAsync() + .thenAccept(orgs -> { + this.allOrganizations = orgs; + + // Update UI when data is ready + Platform.runLater(() -> updateOrganizationGrid("")); + }); + return grid; } // Filter organizations by search term @@ -86,13 +105,16 @@ private GridPane createOrganizationSection(String searchTerm) { int row = 0; for (Organization org : organizations.values()) { - String defaultImg = "/browsepage/images/children_of_shambala.png"; - BrowseCard card = new BrowseCard(orgController, org, defaultImg); + //Adds default text if organization does not have any + String img = (org.logoUrl() != null && !org.logoUrl().isBlank()) + ? org.logoUrl() + : null; + + BrowseCard card = new BrowseCard(orgController, org, img); grid.add(card, column, row); column++; - if (column == 4) { column = 0; row++; @@ -105,11 +127,6 @@ private GridPane createOrganizationSection(String searchTerm) { grid.getColumnConstraints().add(col); } - // Store reference for later updates - if (organizationGrid == null) { - organizationGrid = grid; - } - return grid; }