30 lines
1.2 KiB
TypeScript
30 lines
1.2 KiB
TypeScript
import async from "async";
|
|
|
|
import { isDelegationCredential } from "@calcom/lib/delegationCredential/clientAndServer";
|
|
import { buildAllCredentials } from "@calcom/lib/delegationCredential/server";
|
|
import { withReporting } from "@calcom/lib/sentryWrapper";
|
|
import type { CredentialForCalendarService } from "@calcom/types/Credential";
|
|
|
|
import { refreshCredential } from "./refreshCredential";
|
|
|
|
/**
|
|
* Refreshes the given set of credentials.
|
|
*
|
|
* @param credentials
|
|
*/
|
|
// Define the function with underscore prefix
|
|
const _refreshCredentials = async (
|
|
credentials: Array<CredentialForCalendarService>
|
|
): Promise<Array<CredentialForCalendarService>> => {
|
|
const nonDelegationCredentials = credentials.filter(
|
|
(cred) => !isDelegationCredential({ credentialId: cred.id })
|
|
);
|
|
const delegationCredentials = credentials.filter((cred) =>
|
|
isDelegationCredential({ credentialId: cred.id })
|
|
);
|
|
const refreshedDbCredentials = await async.mapLimit(nonDelegationCredentials, 5, refreshCredential);
|
|
return buildAllCredentials({ delegationCredentials, existingCredentials: refreshedDbCredentials });
|
|
};
|
|
|
|
export const refreshCredentials = withReporting(_refreshCredentials, "refreshCredentials");
|