@@ -475,8 +475,9 @@ public AddonVersion(RemoteMod mod, RemoteMod.Version version, DownloadPage selfP
475475 SpinnerPane spinnerPane = new SpinnerPane ();
476476 ScrollPane scrollPane = new ScrollPane ();
477477 ComponentList dependenciesList = new ComponentList (Lang ::immutableListOf );
478- loadChangelogAndDependencies (version , selfPage , spinnerPane , dependenciesList , changelogButton );
479- spinnerPane .setOnFailedAction (e -> loadChangelogAndDependencies (version , selfPage , spinnerPane , dependenciesList , changelogButton ));
478+ loadDependencies (version , selfPage , spinnerPane , dependenciesList );
479+ loadChangelog (version , selfPage , changelogButton );
480+ spinnerPane .setOnFailedAction (e -> loadDependencies (version , selfPage , spinnerPane , dependenciesList ));
480481
481482 scrollPane .setContent (dependenciesList );
482483 scrollPane .setFitToWidth (true );
@@ -524,19 +525,9 @@ public AddonVersion(RemoteMod mod, RemoteMod.Version version, DownloadPage selfP
524525 onEscPressed (this , cancelButton ::fire );
525526 }
526527
527- private void loadChangelogAndDependencies (RemoteMod .Version version , DownloadPage selfPage , SpinnerPane spinnerPane , ComponentList dependenciesList , Button changelogButton ) {
528+ private void loadDependencies (RemoteMod .Version version , DownloadPage selfPage , SpinnerPane spinnerPane , ComponentList dependenciesList ) {
528529 spinnerPane .setLoading (true );
529- changelogButton .setDisable (true );
530530 Task .supplyAsync (() -> {
531- Optional <String > changelog ;
532- if (changelogCache .containsKey (version )) {
533- changelog = Optional .ofNullable (changelogCache .get (version ));
534- } else if (version .getChangelog () != null ) {
535- changelog = StringUtils .nullIfBlank (version .getChangelog ());
536- } else {
537- changelog = StringUtils .nullIfBlank (selfPage .repository .getModChangelog (version .getModid (), version .getVersionId ()));
538- }
539-
540531 EnumMap <RemoteMod .DependencyType , List <Node >> dependencies = new EnumMap <>(RemoteMod .DependencyType .class );
541532 for (RemoteMod .Dependency dependency : version .getDependencies ()) {
542533 if (dependency .getType () == RemoteMod .DependencyType .INCOMPATIBLE || dependency .getType () == RemoteMod .DependencyType .BROKEN ) {
@@ -554,26 +545,43 @@ private void loadChangelogAndDependencies(RemoteMod.Version version, DownloadPag
554545 dependencies .get (dependency .getType ()).add (dependencyAddonItem );
555546 }
556547
557- return new Pair <>( changelog , dependencies .values ().stream ().flatMap (Collection ::stream ).collect (Collectors .toList () ));
548+ return dependencies .values ().stream ().flatMap (Collection ::stream ).collect (Collectors .toList ());
558549 }).whenComplete (Schedulers .javafx (), (result , exception ) -> {
559550 if (exception == null ) {
560- if (result .getKey ().isPresent ()) {
561- String s = StringUtils .markdownToHTML (result .getKey ().get ());
551+ dependenciesList .getContent ().setAll (result );
552+ spinnerPane .setFailedReason (null );
553+ } else {
554+ dependenciesList .getContent ().setAll ();
555+ spinnerPane .setFailedReason (i18n ("download.failed.refresh" ));
556+ }
557+ spinnerPane .setLoading (false );
558+ }).start ();
559+ }
560+
561+ private void loadChangelog (RemoteMod .Version version , DownloadPage selfPage , Button changelogButton ) {
562+ changelogButton .setDisable (true );
563+ Task .supplyAsync (() -> {
564+ if (changelogCache .containsKey (version )) {
565+ return Optional .ofNullable (changelogCache .get (version ));
566+ } else if (version .getChangelog () != null ) {
567+ return StringUtils .nullIfBlank (version .getChangelog ());
568+ } else {
569+ return StringUtils .nullIfBlank (selfPage .repository .getModChangelog (version .getModid (), version .getVersionId ()));
570+ }
571+ }).whenComplete (Schedulers .javafx (), (result , exception ) -> {
572+ if (exception == null ) {
573+ if (result .isPresent ()) {
574+ String s = StringUtils .markdownToHTML (result .get ());
562575 changelogCache .put (version , s );
563576 changelogButton .setDisable (false );
564577 changelogButton .setOnAction (e -> Controllers .dialog (new AddonChangelog (AddonVersion .this .title , s )));
565578 } else {
566579 changelogCache .put (version , null );
567580 changelogButton .setOnAction (null );
568581 }
569- dependenciesList .getContent ().setAll (result .getValue ());
570- spinnerPane .setFailedReason (null );
571582 } else {
572583 changelogButton .setOnAction (null );
573- dependenciesList .getContent ().setAll ();
574- spinnerPane .setFailedReason (i18n ("download.failed.refresh" ));
575584 }
576- spinnerPane .setLoading (false );
577585 }).start ();
578586 }
579587 }
0 commit comments