@@ -77,30 +77,30 @@ qx.Class.define("osparc.pricing.ServicesList", {
7777 . then ( data => this . __populateList ( data ) ) ;
7878 } ,
7979
80- __populateList : function ( services ) {
81- // before accessing the metadata in a sync way, we need to bring them to the cache
82- const metadataPromises = [ ] ;
83- services . forEach ( service => {
80+ __populateList : async function ( services ) {
81+ const servicePromises = services . map ( async service => {
8482 const key = service [ "serviceKey" ] ;
8583 const version = service [ "serviceVersion" ] ;
86- metadataPromises . push ( osparc . store . Services . getService ( key , version ) ) ;
84+ try {
85+ return await osparc . store . Services . getService ( key , version ) ;
86+ } catch ( err ) {
87+ console . error ( err ) ;
88+ return null ; // Return null to maintain array structure
89+ }
8790 } ) ;
88- Promise . all ( metadataPromises )
89- . catch ( err => console . error ( err ) )
90- . finally ( ( ) => {
91- const sList = [ ] ;
92- console . log ( "services" , services ) ;
93- services . forEach ( service => {
94- const key = service [ "serviceKey" ] ;
95- const version = service [ "serviceVersion" ] ;
96- const serviceMetadata = osparc . store . Services . getMetadata ( key , version ) ;
97- if ( serviceMetadata ) {
98- sList . push ( new osparc . data . model . Service ( serviceMetadata ) ) ;
99- }
100- } ) ;
101- const servicesList = this . getChildControl ( "services-list" ) ;
102- servicesList . setModel ( new qx . data . Array ( sList ) ) ;
103- } )
91+
92+ // ensure that even if one request fails, the rest continue executing
93+ const results = await Promise . allSettled ( servicePromises ) ;
94+ const serviceModels = new qx . data . Array ( ) ;
95+ results . forEach ( result => {
96+ if ( result . status === "fulfilled" && result . value ) {
97+ const serviceMetadata = result . value ;
98+ serviceModels . push ( new osparc . data . model . Service ( serviceMetadata ) ) ;
99+ }
100+ } ) ;
101+
102+ const servicesList = this . getChildControl ( "services-list" ) ;
103+ servicesList . setModel ( serviceModels ) ;
104104 } ,
105105
106106 __openAddServiceToPlan : function ( ) {
0 commit comments