Files
a8a3e48465 feat: add web phone call for cal ai (#23527)
* feat: add web phone call for cal ai

* fix: web call

* refactor: improvements

* chore

* refactor: web call improvements

* chore: error message

* refactor: improvements

* fix: err

* refactor: feedback and improvements

* fix: type errors

* refactor: hasAvailable

* chore: use orgid

* fix: types

---------

Co-authored-by: Peer Richelsen <[email protected]>
2025-09-10 12:41:10 -03:00

88 lines
3.0 KiB
TypeScript

import authedProcedure from "@calcom/trpc/server/procedures/authedProcedure";
import { router } from "../../../trpc";
import { ZBuyCreditsSchema } from "./buyCredits.schema";
import { ZDownloadExpenseLogSchema } from "./downloadExpenseLog.schema";
import { ZGetAllCreditsSchema } from "./getAllCredits.schema";
import { ZHasAvailableCreditsSchema } from "./hasAvailableCredits.schema";
type CreditsCache = {
getAllCredits?: typeof import("./getAllCredits.handler").getAllCreditsHandler;
buyCredits?: typeof import("./buyCredits.handler").buyCreditsHandler;
downloadExpenseLog?: typeof import("./downloadExpenseLog.handler").downloadExpenseLogHandler;
hasAvailableCredits?: typeof import("./hasAvailableCredits.handler").hasAvailableCreditsHandler;
};
const UNSTABLE_HANDLER_CACHE: CreditsCache = {};
export const creditsRouter = router({
getAllCredits: authedProcedure.input(ZGetAllCreditsSchema).query(async ({ input, ctx }) => {
if (!UNSTABLE_HANDLER_CACHE.getAllCredits) {
UNSTABLE_HANDLER_CACHE.getAllCredits = await import("./getAllCredits.handler").then(
(mod) => mod.getAllCreditsHandler
);
}
// Unreachable code but required for type safety
if (!UNSTABLE_HANDLER_CACHE.getAllCredits) {
throw new Error("Failed to load handler");
}
return UNSTABLE_HANDLER_CACHE.getAllCredits({
ctx,
input,
});
}),
hasAvailableCredits: authedProcedure.input(ZHasAvailableCreditsSchema).query(async ({ input, ctx }) => {
if (!UNSTABLE_HANDLER_CACHE.hasAvailableCredits) {
UNSTABLE_HANDLER_CACHE.hasAvailableCredits = await import("./hasAvailableCredits.handler").then(
(mod) => mod.hasAvailableCreditsHandler
);
}
// Unreachable code but required for type safety
if (!UNSTABLE_HANDLER_CACHE.hasAvailableCredits) {
throw new Error("Failed to load handler");
}
return UNSTABLE_HANDLER_CACHE.hasAvailableCredits({
ctx,
input,
});
}),
buyCredits: authedProcedure.input(ZBuyCreditsSchema).mutation(async ({ input, ctx }) => {
if (!UNSTABLE_HANDLER_CACHE.buyCredits) {
UNSTABLE_HANDLER_CACHE.buyCredits = await import("./buyCredits.handler").then(
(mod) => mod.buyCreditsHandler
);
}
// Unreachable code but required for type safety
if (!UNSTABLE_HANDLER_CACHE.buyCredits) {
throw new Error("Failed to load handler");
}
return UNSTABLE_HANDLER_CACHE.buyCredits({
ctx,
input,
});
}),
downloadExpenseLog: authedProcedure.input(ZDownloadExpenseLogSchema).query(async ({ input, ctx }) => {
if (!UNSTABLE_HANDLER_CACHE.downloadExpenseLog) {
UNSTABLE_HANDLER_CACHE.downloadExpenseLog = await import("./downloadExpenseLog.handler").then(
(mod) => mod.downloadExpenseLogHandler
);
}
// Unreachable code but required for type safety
if (!UNSTABLE_HANDLER_CACHE.downloadExpenseLog) {
throw new Error("Failed to load handler");
}
return UNSTABLE_HANDLER_CACHE.downloadExpenseLog({
ctx,
input,
});
}),
});