Fix issue where FetchAllFluxServices did not return services on await

Co-authored-by: Jared Scheib <jared.scheib@gmail.com>
pull/4082/head
Alirie Gray 2018-08-02 13:44:35 -07:00
parent 10d24997d0
commit 82263fe3a1
1 changed files with 22 additions and 10 deletions

View File

@ -136,17 +136,27 @@ export type FetchAllFluxServicesAsync = (
export const fetchAllFluxServicesAsync: FetchAllFluxServicesAsync = sources => async ( export const fetchAllFluxServicesAsync: FetchAllFluxServicesAsync = sources => async (
dispatch dispatch
): Promise<void> => { ): Promise<void> => {
const allServices: Service[] = [] const allServicesForSources: Array<Promise<Service[]>> = sources.map(
sources.forEach(async source => { async source => {
try { try {
const services = await getServicesAJAX(source.links.services) return getServicesAJAX(source.links.services)
const fluxServices = services.filter(s => s.type === 'flux') } catch (err) {
allServices.push(...fluxServices) dispatch(notify(couldNotGetServices))
} catch (err) { }
dispatch(notify(couldNotGetServices))
} }
}) )
dispatch(loadServices(allServices))
try {
const sourceServices = await Promise.all(allServicesForSources)
const flat = sourceServices.reduce((acc, cur) => {
return [...acc, ...cur.filter(s => s.type === 'flux')]
})
dispatch(loadServices(flat))
} catch (err) {
console.error(err.data)
dispatch(notify(couldNotGetServices))
throw err.data
}
} }
export type FetchFluxServicesForSourceAsync = ( export type FetchFluxServicesForSourceAsync = (
@ -160,7 +170,9 @@ export const fetchFluxServicesForSourceAsync: FetchFluxServicesForSourceAsync =
const fluxServices = services.filter(s => s.type === 'flux') const fluxServices = services.filter(s => s.type === 'flux')
dispatch(loadServices(fluxServices)) dispatch(loadServices(fluxServices))
} catch (err) { } catch (err) {
console.error(err.data)
dispatch(notify(couldNotGetServices)) dispatch(notify(couldNotGetServices))
throw err.data
} }
} }