Wait for multiple queries to succeed
I'm looking for a way to wait for all queries to have the success status, is there some build in equivalent like this example below?
export const combineQueries = <T extends Record<string, UseQueryResult>>(queries: T) => {
if (Object.values(queries).every((query) => query.status === 'success')) {
return { status: 'success', queries };
}
if (Object.values(queries).some((query) => query.status === 'error')) {
return { status: 'error', queries };
}
return { status: 'pending', queries };
};export const combineQueries = <T extends Record<string, UseQueryResult>>(queries: T) => {
if (Object.values(queries).every((query) => query.status === 'success')) {
return { status: 'success', queries };
}
if (Object.values(queries).some((query) => query.status === 'error')) {
return { status: 'error', queries };
}
return { status: 'pending', queries };
}; const teamsFind = useTeamsFind({ id: teamId });
const teamUsersPaginate = useTeamUsersPaginate({ teamId });
const query = combineQueries({
team: teamsFind,
users: teamUsersPaginate,
});
return match(query)
.with({ status: 'pending' }, () => null)
.with({ status: 'error' }, () => null)
.with({ status: 'success' }, ({ queries: { team, users } }) => (
// ...
})
.exaustive(); const teamsFind = useTeamsFind({ id: teamId });
const teamUsersPaginate = useTeamUsersPaginate({ teamId });
const query = combineQueries({
team: teamsFind,
users: teamUsersPaginate,
});
return match(query)
.with({ status: 'pending' }, () => null)
.with({ status: 'error' }, () => null)
.with({ status: 'success' }, ({ queries: { team, users } }) => (
// ...
})
.exaustive();