46 lines
1.2 KiB
TypeScript

import { Blog } from "@/payload-types";
export function sanitizeNumber(input: string | undefined | null): number {
if (!input) return 0;
const sanitized = parseFloat(input.replace(/[^0-9.-]+/g, ""));
// Check if the result is a valid number and not NaN or Infinity
if (isNaN(sanitized) || !isFinite(sanitized)) {
return 0;
}
return sanitized;
}
export function sanitizePageNumber(page: any, defaultPage = 1): number {
const parsedPage = Number(page);
if (isNaN(parsedPage) || parsedPage < 1 || !Number.isInteger(parsedPage)) {
return defaultPage;
}
return parsedPage;
}
export function sanitizeBlogContentIntoStringPreview(data: Blog["content"], limit = 100) {
// Find the first paragraph that has children with text
const firstParagraph = data.root.children.find(
(node) =>
node.type === "paragraph" &&
Array.isArray(node.children) &&
node.children.length > 0 &&
!!node.children?.[0]?.text
);
if (!firstParagraph) {
return "...";
}
// @ts-ignore
const text = firstParagraph.children?.[0]?.text ?? "";
// Limit characters
return `${text.length > limit ? text.slice(0, limit) : text}...`;
}