@@ -22,7 +22,7 @@ const parseService = async (service, availablePinningServices, ipfs) => {
22
22
* @property {string } name
23
23
* @property {('queued'|'pinning'|'pinned'|'failed') } status
24
24
* @property {string } cid
25
- * @property {Array<string> } [delegates] e.g. ["/dnsaddr/pin-service.example.com"]
25
+ * @property {Array<string> } [delegates] (multiaddrs endind with /p2p/peerid)
26
26
*/
27
27
const pinningBundle = {
28
28
name : 'pinning' ,
@@ -57,26 +57,25 @@ const pinningBundle = {
57
57
58
58
if ( ! ipfs || store ?. ipfs ?. ipfs ?. ready || ! ipfs . pin . remote ) return
59
59
60
- const pinsGenerator = pinningServices . map ( async service => ( {
61
- pins : await ipfs . pin . remote . ls ( {
62
- service : service . name
63
- } ) ,
64
- serviceName : service . name
65
- } ) )
66
-
67
60
dispatch ( { type : 'SET_REMOTE_PINS' , payload : [ ] } )
68
61
69
- for await ( const { pins, serviceName } of pinsGenerator ) {
70
- for await ( const pin of pins ) {
71
- dispatch ( {
72
- type : 'ADD_REMOTE_PIN' ,
73
- payload : {
74
- ...pin ,
75
- id : `${ serviceName } :${ pin . cid } `
76
- }
77
- } )
62
+ await Promise . all ( pinningServices . map ( async service => {
63
+ try {
64
+ const pins = ipfs . pin . remote . ls ( { service : service . name } )
65
+ for await ( const pin of pins ) {
66
+ dispatch ( {
67
+ type : 'ADD_REMOTE_PIN' ,
68
+ payload : {
69
+ ...pin ,
70
+ id : `${ service . name } :${ pin . cid } `
71
+ }
72
+ } )
73
+ }
74
+ } catch ( _ ) {
75
+ // if one of services is offline, ignore it for now
76
+ // and continue checking remaining ones
78
77
}
79
- }
78
+ } ) )
80
79
} ,
81
80
82
81
selectRemotePins : ( state ) => state . pinning . remotePins || [ ] ,
@@ -101,8 +100,8 @@ const pinningBundle = {
101
100
dispatch ( { type : 'SET_REMOTE_PINNING_SERVICES_AVAILABLE' , payload : true } )
102
101
103
102
const availablePinningServices = store . selectAvailablePinningServices ( )
104
- const firstListOfServices = await ipfs . pin . remote . service . ls ( )
105
- const remoteServices = await Promise . all ( firstListOfServices . map ( service => parseService ( service , availablePinningServices , ipfs ) ) )
103
+ const offlineListOfServices = await ipfs . pin . remote . service . ls ( )
104
+ const remoteServices = await Promise . all ( offlineListOfServices . map ( service => parseService ( service , availablePinningServices , ipfs ) ) )
106
105
dispatch ( { type : 'SET_REMOTE_PINNING_SERVICES' , payload : remoteServices } )
107
106
108
107
const fullListOfServices = await ipfs . pin . remote . service . ls ( { stat : true } )
0 commit comments