import { Fragment, useEffect, useState } from "react"; import { SubscriptionProductDto } from "../../../../../application/dtos/subscriptions/SubscriptionProductDto"; import Plans from "../Plans"; type TenantSubscriptionWithDetails = any; interface Props { items: SubscriptionProductDto[]; tenantSubscription?: TenantSubscriptionWithDetails | null; canSubmit?: boolean; } export default function PlansGrouped({ items, tenantSubscription, canSubmit }: Props) { const [groups, setGroups] = useState<{ group: { title: string; description: string }; items: SubscriptionProductDto[] }[]>([]); useEffect(() => { const groups: { group: { title: string; description: string }; items: SubscriptionProductDto[] }[] = []; items.forEach((product) => { let found = groups.find((f) => f.group.title === product.groupTitle && f.group.description === product.groupDescription); if (!found) { found = groups.find((f) => !f.group.title && !f.group.description && !product.groupTitle && !product.groupDescription); } if (found) { found.items.push(product); } else { groups.push({ group: { title: product.groupTitle ?? "", description: product.groupDescription ?? "", }, items: [product], }); } }); setGroups(groups); }, [items]); return (
{groups.map((group, idx) => { return (
{group.group.title && (

{group.group.title}

{group.group.description}

)}
); })}
); }