Skip to content

Commit f1934fe

Browse files
authored
fix(billing): separate client side and server side envvars for billing (#966)
1 parent ac41bf8 commit f1934fe

File tree

4 files changed

+16
-3
lines changed

4 files changed

+16
-3
lines changed

apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/components/settings-navigation/settings-navigation.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
UserCircle,
99
Users,
1010
} from 'lucide-react'
11-
import { isBillingEnabled } from '@/lib/environment'
11+
import { getEnv } from '@/lib/env'
1212
import { cn } from '@/lib/utils'
1313
import { useSubscriptionStore } from '@/stores/subscription/store'
1414

@@ -98,6 +98,9 @@ export function SettingsNavigation({
9898
const { getSubscriptionStatus } = useSubscriptionStore()
9999
const subscription = getSubscriptionStatus()
100100

101+
// Get billing status
102+
const isBillingEnabled = getEnv('NEXT_PUBLIC_BILLING_ENABLED') || false
103+
101104
const navigationItems = allNavigationItems.filter((item) => {
102105
if (item.hideWhenBillingDisabled && !isBillingEnabled) {
103106
return false

apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/settings-modal/settings-modal.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import { useEffect, useRef, useState } from 'react'
44
import { X } from 'lucide-react'
55
import { Button, Dialog, DialogContent, DialogHeader, DialogTitle } from '@/components/ui'
6-
import { isBillingEnabled } from '@/lib/environment'
6+
import { getEnv } from '@/lib/env'
77
import { createLogger } from '@/lib/logs/console/logger'
88
import { cn } from '@/lib/utils'
99
import {
@@ -44,6 +44,9 @@ export function SettingsModal({ open, onOpenChange }: SettingsModalProps) {
4444
const { activeOrganization } = useOrganizationStore()
4545
const hasLoadedInitialData = useRef(false)
4646

47+
// Get billing status
48+
const isBillingEnabled = getEnv('NEXT_PUBLIC_BILLING_ENABLED') || false
49+
4750
useEffect(() => {
4851
async function loadAllSettings() {
4952
if (!open) return

apps/sim/app/workspace/[workspaceId]/w/components/sidebar/sidebar.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { HelpCircle, LibraryBig, ScrollText, Search, Settings, Shapes } from 'lu
55
import { useParams, usePathname, useRouter } from 'next/navigation'
66
import { Button, ScrollArea, Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui'
77
import { useSession } from '@/lib/auth-client'
8-
import { isBillingEnabled } from '@/lib/environment'
8+
import { getEnv } from '@/lib/env'
99
import { createLogger } from '@/lib/logs/console/logger'
1010
import { generateWorkspaceName } from '@/lib/naming'
1111
import { cn } from '@/lib/utils'
@@ -195,6 +195,9 @@ export function Sidebar() {
195195
const userPermissions = useUserPermissionsContext()
196196
const isLoading = workflowsLoading || sessionLoading
197197

198+
// Get billing status
199+
const isBillingEnabled = getEnv('NEXT_PUBLIC_BILLING_ENABLED') || false
200+
198201
// Add state to prevent multiple simultaneous workflow creations
199202
const [isCreatingWorkflow, setIsCreatingWorkflow] = useState(false)
200203
// Add state to prevent multiple simultaneous workspace creations

apps/sim/lib/env.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,9 @@ export const env = createEnv({
179179

180180
// Asset Storage
181181
NEXT_PUBLIC_BLOB_BASE_URL: z.string().url().optional(), // Base URL for Vercel Blob storage (CDN assets)
182+
183+
// Billing
184+
NEXT_PUBLIC_BILLING_ENABLED: z.boolean().optional(), // Enable billing enforcement and usage tracking (client-side)
182185

183186
// Google Services - For client-side Google integrations
184187
NEXT_PUBLIC_GOOGLE_CLIENT_ID: z.string().optional(), // Google OAuth client ID for browser auth
@@ -216,6 +219,7 @@ export const env = createEnv({
216219
NEXT_PUBLIC_VERCEL_URL: process.env.NEXT_PUBLIC_VERCEL_URL,
217220
NEXT_PUBLIC_SENTRY_DSN: process.env.NEXT_PUBLIC_SENTRY_DSN,
218221
NEXT_PUBLIC_BLOB_BASE_URL: process.env.NEXT_PUBLIC_BLOB_BASE_URL,
222+
NEXT_PUBLIC_BILLING_ENABLED: process.env.NEXT_PUBLIC_BILLING_ENABLED,
219223
NEXT_PUBLIC_GOOGLE_CLIENT_ID: process.env.NEXT_PUBLIC_GOOGLE_CLIENT_ID,
220224
NEXT_PUBLIC_RB2B_KEY: process.env.NEXT_PUBLIC_RB2B_KEY,
221225
NEXT_PUBLIC_GOOGLE_API_KEY: process.env.NEXT_PUBLIC_GOOGLE_API_KEY,

0 commit comments

Comments
 (0)