Compare commits

..

3 Commits

Author SHA1 Message Date
Dhruwang
4ce0c3f98f fix: enhance reconciliation process for subscriptions with idempotency support 2026-03-23 15:48:20 +05:30
Dhruwang
f822d70e27 fix: update subscription status filter to "active" in organization billing 2026-03-23 15:41:57 +05:30
Dhruwang
7e43fe7957 fix: duplicate hobby sub 2026-03-23 14:10:12 +05:30
4 changed files with 15 additions and 8 deletions

View File

@@ -300,6 +300,7 @@ export const ResponseTable = ({
<DataTableSettingsModal
open={isTableSettingsModalOpen}
setOpen={setIsTableSettingsModalOpen}
survey={survey}
table={table}
columnOrder={columnOrder}
handleDragEnd={handleDragEnd}

View File

@@ -1328,7 +1328,7 @@ export const reconcileCloudStripeSubscriptionsForOrganization = async (
const freshSubscriptions = await client.subscriptions.list({
customer: customerId,
status: "active",
limit: 1,
limit: 5,
});
if (freshSubscriptions.data.length === 0) {

View File

@@ -2,7 +2,7 @@
import { useSortable } from "@dnd-kit/sortable";
import { CSS } from "@dnd-kit/utilities";
import { Column, HeaderContext, Table, flexRender } from "@tanstack/react-table";
import { Column, Table, flexRender } from "@tanstack/react-table";
import { GripVertical } from "lucide-react";
import { TSurvey } from "@formbricks/types/surveys/types";
import { Switch } from "@/modules/ui/components/switch";
@@ -24,10 +24,11 @@ export const DataTableSettingsModalItem = <T,>({ column, table }: DataTableSetti
zIndex: isDragging ? 10 : 1,
};
// Build a minimal header context so we can render the column's header definition regardless of
// whether the column is currently visible. getHeaderGroups() only includes visible columns, so
// hidden columns would fall back to rendering the raw column ID without this approach.
const headerContext = { column, header: null, table } as unknown as HeaderContext<any, unknown>;
// Find the header for this column from the table's header groups
const header = table
.getHeaderGroups()
.flatMap((headerGroup) => headerGroup.headers)
.find((h) => h.column.id === column.id);
return (
<div ref={setNodeRef} style={style} id={column.id}>
@@ -39,7 +40,7 @@ export const DataTableSettingsModalItem = <T,>({ column, table }: DataTableSetti
<button type="button" aria-label="Reorder column" onClick={(e) => e.preventDefault()}>
<GripVertical className="h-4 w-4" />
</button>
{flexRender(column.columnDef.header, headerContext)}
{header ? flexRender(column.columnDef.header, header.getContext()) : column.id}
</div>
<Switch
id={column.id}

View File

@@ -13,6 +13,7 @@ import { Table } from "@tanstack/react-table";
import { SettingsIcon } from "lucide-react";
import { useMemo } from "react";
import { useTranslation } from "react-i18next";
import { TSurvey } from "@formbricks/types/surveys/types";
import {
Dialog,
DialogBody,
@@ -29,6 +30,7 @@ interface DataTableSettingsModalProps<T> {
table: Table<T>;
columnOrder: string[];
handleDragEnd: (event: DragEndEvent) => void;
survey?: TSurvey;
}
export const DataTableSettingsModal = <T,>({
@@ -37,6 +39,7 @@ export const DataTableSettingsModal = <T,>({
table,
columnOrder,
handleDragEnd,
survey,
}: DataTableSettingsModalProps<T>) => {
const { t } = useTranslation();
const sensors = useSensors(
@@ -69,7 +72,9 @@ export const DataTableSettingsModal = <T,>({
if (columnId === "select" || columnId === "createdAt") return;
const column = tableColumns.find((column) => column.id === columnId);
if (!column) return null;
return <DataTableSettingsModalItem column={column} table={table} key={column.id} />;
return (
<DataTableSettingsModalItem column={column} table={table} key={column.id} survey={survey} />
);
})}
</SortableContext>
</DndContext>