* Make identifier required * Fallback to null if identifier isn't present * Type fix * Type fixes * Type fix * Create `RoutingFormResponseRepository` * Create `RoutingFormResponseService` * Use repsotiories to find form value * Delete console.logs * Undo change in `ZResponseInputSchema` schema * Type fix * Undo changes * fix: correct import path in RoutingFormResponseService to resolve runtime errors - Change relative import path to use @calcom alias - Prevents import resolution failures that cause app startup issues Co-Authored-By: joe@cal.com <j.auyeung419@gmail.com> * Undo changes * Update type * Update typing * Address feedback * Address feedback * chore: Provide a suggestion for pr 22396, new structure (#22491) * chore: Provide a suggestion for pr 22396, new structure * Refactor to create two create methods with bookingUid and id * Use `createWithBookingUid` * Extract routing form response parser to seperate util * Added more and improved test cases * Fix --------- Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com> * Factory included wrong calls * Fix test for findFieldValueByIdentifier * Add tests * Fix test * Fix test --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: Alex van Andel <me@alexvanandel.com>
22 lines
731 B
TypeScript
22 lines
731 B
TypeScript
import getFieldIdentifier from "@calcom/app-store/routing-forms/lib/getFieldIdentifier";
|
|
|
|
import type { RoutingFormResponseData } from "./types";
|
|
|
|
type FindFieldValueByIdentifierResult =
|
|
| { success: true; data: string | string[] | number | null }
|
|
| { success: false; error: string };
|
|
|
|
export function findFieldValueByIdentifier(
|
|
data: RoutingFormResponseData,
|
|
identifier: string
|
|
): FindFieldValueByIdentifierResult {
|
|
const field = data.fields.find((field) => getFieldIdentifier(field) === identifier);
|
|
if (!field) {
|
|
return { success: false, error: `Field with identifier ${identifier} not found` };
|
|
}
|
|
|
|
const fieldValue = data.response[field.id]?.value;
|
|
|
|
return { success: true, data: fieldValue ?? null };
|
|
}
|