Skip to article
Documentation

src/features/reviews/review-error-message.ts

Linked repository file from this build.

/** Zod errors can arrive as serialized issue arrays from local or server validation. */
export function reviewErrorMessage(error: string): string {
  try {
    const issues: unknown = JSON.parse(error);
    if (
      Array.isArray(issues) &&
      issues.length &&
      issues.every(
        (issue) => issue && typeof issue === "object" && typeof issue.message === "string",
      )
    ) {
      return [...new Set(issues.map((issue) => issue.message as string))].join(" ");
    }
  } catch {
    // Ordinary error messages are already suitable for display.
  }
  return error;
}