From 9afc61aa3bbc13cf091ae2b09a3e6b10e006959b Mon Sep 17 00:00:00 2001 From: Waleed Latif Date: Tue, 28 Apr 2026 17:05:35 -0700 Subject: [PATCH 1/2] fix(billing): gate org billing query to invite modal open state and allow GA doubleclick in CSP --- .../workspace-header/components/invite-modal/invite-modal.tsx | 4 +++- apps/sim/hooks/queries/organization.ts | 4 ++-- apps/sim/lib/core/security/csp.ts | 2 ++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workspace-header/components/invite-modal/invite-modal.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workspace-header/components/invite-modal/invite-modal.tsx index b1c0268bbfa..eaf895e1e1f 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workspace-header/components/invite-modal/invite-modal.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workspace-header/components/invite-modal/invite-modal.tsx @@ -79,7 +79,9 @@ export function InviteModal({ const { data: pendingInvitations = [], isLoading: isPendingInvitationsLoading } = usePendingInvitations(open ? workspaceId : undefined) - const { data: organizationBillingData } = useOrganizationBilling(organizationId ?? '') + const { data: organizationBillingData } = useOrganizationBilling(organizationId ?? '', { + enabled: open, + }) const batchSendInvitations = useBatchSendWorkspaceInvitations() const cancelInvitation = useCancelWorkspaceInvitation() diff --git a/apps/sim/hooks/queries/organization.ts b/apps/sim/hooks/queries/organization.ts index b55bf9ffe50..38c775a704e 100644 --- a/apps/sim/hooks/queries/organization.ts +++ b/apps/sim/hooks/queries/organization.ts @@ -201,11 +201,11 @@ async function fetchOrganizationBilling(orgId: string, signal?: AbortSignal) { /** * Hook to fetch organization billing data */ -export function useOrganizationBilling(orgId: string) { +export function useOrganizationBilling(orgId: string, options?: { enabled?: boolean }) { return useQuery({ queryKey: organizationKeys.billing(orgId), queryFn: ({ signal }) => fetchOrganizationBilling(orgId, signal), - enabled: !!orgId, + enabled: !!orgId && (options?.enabled ?? true), retry: false, staleTime: 30 * 1000, placeholderData: keepPreviousData, diff --git a/apps/sim/lib/core/security/csp.ts b/apps/sim/lib/core/security/csp.ts index dbe039a0cf7..a4b669f8822 100644 --- a/apps/sim/lib/core/security/csp.ts +++ b/apps/sim/lib/core/security/csp.ts @@ -105,6 +105,8 @@ const STATIC_CONNECT_SRC = [ 'https://analytics.google.com', 'https://www.google.com', 'https://analytics.ahrefs.com', + 'https://*.g.doubleclick.net', + 'https://stats.g.doubleclick.net', ] : []), ] as const From 6dc4055b2c1347a3f81003e5a4e55cba01e7ff0c Mon Sep 17 00:00:00 2001 From: Waleed Latif Date: Tue, 28 Apr 2026 17:10:28 -0700 Subject: [PATCH 2/2] fix(csp): drop redundant stats.g.doubleclick.net entry --- apps/sim/lib/core/security/csp.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/sim/lib/core/security/csp.ts b/apps/sim/lib/core/security/csp.ts index a4b669f8822..9ee4ff34b03 100644 --- a/apps/sim/lib/core/security/csp.ts +++ b/apps/sim/lib/core/security/csp.ts @@ -106,7 +106,6 @@ const STATIC_CONNECT_SRC = [ 'https://www.google.com', 'https://analytics.ahrefs.com', 'https://*.g.doubleclick.net', - 'https://stats.g.doubleclick.net', ] : []), ] as const