Skip to content

Commit aa548ff

Browse files
Glary-Botchristian-byrne
authored andcommitted
refactor: rename isActiveSubscription to canAccessSubscriptionFeatures
The name isActiveSubscription was misleading: it's defined as !isCloud || !subscription_required || subscription.is_active so it returns true on non-cloud builds and when subscription is not required, regardless of actual subscription state. The new name canAccessSubscriptionFeatures reads correctly at every call site: 'if can access features, show UI / allow action'. This revives the spirit of PR #7127 which attempted the internal rename (isSubscribed -> isSubscribedOrIsNotCloud) but never tackled the exported public name. Scope: - Renamed exported composable property from isActiveSubscription to canAccessSubscriptionFeatures in useSubscription, useBillingContext, useWorkspaceBilling, useLegacyBilling. - Renamed the internal alias isSubscribedOrIsNotCloud to match. - Updated all 112 call sites across 37 files (templates, composables, services, tests, prop names in kebab-case). No behavioral changes. Pure identifier rename.
1 parent c955309 commit aa548ff

37 files changed

Lines changed: 161 additions & 134 deletions
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<template>
22
<component
33
:is="currentButton"
4-
:key="isActiveSubscription ? 'queue' : 'subscribe'"
4+
:key="canAccessSubscriptionFeatures ? 'queue' : 'subscribe'"
55
/>
66
</template>
77
<script setup lang="ts">
@@ -11,9 +11,9 @@ import ComfyQueueButton from '@/components/actionbar/ComfyRunButton/ComfyQueueBu
1111
import { useBillingContext } from '@/composables/billing/useBillingContext'
1212
import SubscribeToRunButton from '@/platform/cloud/subscription/components/SubscribeToRun.vue'
1313
14-
const { isActiveSubscription } = useBillingContext()
14+
const { canAccessSubscriptionFeatures } = useBillingContext()
1515
1616
const currentButton = computed(() =>
17-
isActiveSubscription.value ? ComfyQueueButton : SubscribeToRunButton
17+
canAccessSubscriptionFeatures.value ? ComfyQueueButton : SubscribeToRunButton
1818
)
1919
</script>

src/components/dialog/content/setting/LegacyCreditsPanel.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<UserCredit text-class="text-3xl font-bold" />
1717
<Skeleton v-if="loading" width="2rem" height="2rem" />
1818
<Button
19-
v-else-if="isActiveSubscription"
19+
v-else-if="canAccessSubscriptionFeatures"
2020
:loading="loading"
2121
@click="handlePurchaseCreditsClick"
2222
>
@@ -137,7 +137,7 @@ const authStore = useAuthStore()
137137
const authActions = useAuthActions()
138138
const commandStore = useCommandStore()
139139
const telemetry = useTelemetry()
140-
const { isActiveSubscription } = useBillingContext()
140+
const { canAccessSubscriptionFeatures } = useBillingContext()
141141
const loading = computed(() => authStore.loading)
142142
const balanceLoading = computed(() => authStore.isFetchingBalance)
143143

src/components/topbar/CurrentUserPopoverLegacy.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ const mockFetchStatus = vi.fn().mockResolvedValue(undefined)
106106
const mockIsFreeTier = ref(false)
107107
vi.mock('@/platform/cloud/subscription/composables/useSubscription', () => ({
108108
useSubscription: vi.fn(() => ({
109-
isActiveSubscription: ref(true),
109+
canAccessSubscriptionFeatures: ref(true),
110110
isFreeTier: mockIsFreeTier,
111111
subscriptionTierName: ref('Creator'),
112112
subscriptionTier: ref('CREATOR'),

src/components/topbar/CurrentUserPopoverLegacy.vue

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,10 @@
3030
</div>
3131

3232
<!-- Credits Section -->
33-
<div v-if="isActiveSubscription" class="flex items-center gap-2 px-4 py-2">
33+
<div
34+
v-if="canAccessSubscriptionFeatures"
35+
class="flex items-center gap-2 px-4 py-2"
36+
>
3437
<i class="icon-[lucide--component] text-sm text-amber-400" />
3538
<Skeleton
3639
v-if="authStore.isFetchingBalance"
@@ -79,7 +82,7 @@
7982
<Divider class="mx-0 my-2" />
8083

8184
<div
82-
v-if="isActiveSubscription"
85+
v-if="canAccessSubscriptionFeatures"
8386
class="flex cursor-pointer items-center gap-2 px-4 py-2 hover:bg-secondary-background-hover"
8487
data-testid="partner-nodes-menu-item"
8588
@click="handleOpenPartnerNodesInfo"
@@ -109,7 +112,7 @@
109112
</div>
110113

111114
<div
112-
v-if="isActiveSubscription"
115+
v-if="canAccessSubscriptionFeatures"
113116
class="flex cursor-pointer items-center gap-2 px-4 py-2 hover:bg-secondary-background-hover"
114117
data-testid="manage-plan-menu-item"
115118
@click="handleOpenPlanAndCreditsSettings"
@@ -180,7 +183,7 @@ const authStore = useAuthStore()
180183
const settingsDialog = useSettingsDialog()
181184
const dialogService = useDialogService()
182185
const {
183-
isActiveSubscription,
186+
canAccessSubscriptionFeatures,
184187
isFreeTier,
185188
subscriptionTierName,
186189
subscriptionTier,

src/composables/auth/useAuthActions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@ export const useAuthActions = () => {
9595
)
9696

9797
const purchaseCredits = wrapWithErrorHandlingAsync(async (amount: number) => {
98-
const { isActiveSubscription } = useBillingContext()
99-
if (!isActiveSubscription.value) return
98+
const { canAccessSubscriptionFeatures } = useBillingContext()
99+
if (!canAccessSubscriptionFeatures.value) return
100100

101101
const response = await authStore.initiateCreditPurchase({
102102
amount_micros: usdToMicros(amount),

src/composables/billing/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ export interface BillingState {
6969
* Convenience computed for checking if subscription is active.
7070
* Equivalent to `subscription.value?.isActive ?? false`
7171
*/
72-
isActiveSubscription: ComputedRef<boolean>
72+
canAccessSubscriptionFeatures: ComputedRef<boolean>
7373
/**
7474
* Whether the current billing context has a FREE tier subscription.
7575
* Workspace-aware: reflects the active workspace's tier, not the user's personal tier.

src/composables/billing/useBillingContext.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ vi.mock('@/platform/workspace/stores/teamWorkspaceStore', () => ({
4747

4848
vi.mock('@/platform/cloud/subscription/composables/useSubscription', () => ({
4949
useSubscription: () => ({
50-
isActiveSubscription: { value: true },
50+
canAccessSubscriptionFeatures: { value: true },
5151
subscriptionTier: { value: 'PRO' },
5252
subscriptionDuration: { value: 'MONTHLY' },
5353
formattedRenewalDate: { value: 'Jan 1, 2025' },
@@ -173,9 +173,9 @@ describe('useBillingContext', () => {
173173
await expect(manageSubscription()).resolves.toBeUndefined()
174174
})
175175

176-
it('provides isActiveSubscription convenience computed', () => {
177-
const { isActiveSubscription } = useBillingContext()
178-
expect(isActiveSubscription.value).toBe(true)
176+
it('provides canAccessSubscriptionFeatures convenience computed', () => {
177+
const { canAccessSubscriptionFeatures } = useBillingContext()
178+
expect(canAccessSubscriptionFeatures.value).toBe(true)
179179
})
180180

181181
it('exposes requireActiveSubscription action', async () => {

src/composables/billing/useBillingContext.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,8 @@ function useBillingContextInternal(): BillingContext {
116116
toValue(activeContext.value.currentPlanSlug)
117117
)
118118

119-
const isActiveSubscription = computed(() =>
120-
toValue(activeContext.value.isActiveSubscription)
119+
const canAccessSubscriptionFeatures = computed(() =>
120+
toValue(activeContext.value.canAccessSubscriptionFeatures)
121121
)
122122

123123
const isFreeTier = computed(() => subscription.value?.tier === 'FREE')
@@ -239,7 +239,7 @@ function useBillingContextInternal(): BillingContext {
239239
currentPlanSlug,
240240
isLoading,
241241
error,
242-
isActiveSubscription,
242+
canAccessSubscriptionFeatures,
243243
isFreeTier,
244244
getMaxSeats,
245245

src/composables/billing/useLegacyBilling.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import type {
2121
*/
2222
export function useLegacyBilling(): BillingState & BillingActions {
2323
const {
24-
isActiveSubscription: legacyIsActiveSubscription,
24+
canAccessSubscriptionFeatures: legacyCanAccessSubscriptionFeatures,
2525
subscriptionTier,
2626
subscriptionDuration,
2727
formattedRenewalDate,
@@ -39,16 +39,18 @@ export function useLegacyBilling(): BillingState & BillingActions {
3939
const isLoading = ref(false)
4040
const error = ref<string | null>(null)
4141

42-
const isActiveSubscription = computed(() => legacyIsActiveSubscription.value)
42+
const canAccessSubscriptionFeatures = computed(
43+
() => legacyCanAccessSubscriptionFeatures.value
44+
)
4345
const isFreeTier = computed(() => subscriptionTier.value === 'FREE')
4446

4547
const subscription = computed<SubscriptionInfo | null>(() => {
46-
if (!legacyIsActiveSubscription.value && !subscriptionTier.value) {
48+
if (!legacyCanAccessSubscriptionFeatures.value && !subscriptionTier.value) {
4749
return null
4850
}
4951

5052
return {
51-
isActive: legacyIsActiveSubscription.value,
53+
isActive: legacyCanAccessSubscriptionFeatures.value,
5254
tier: subscriptionTier.value,
5355
duration: subscriptionDuration.value,
5456
planSlug: null, // Legacy doesn't use plan slugs
@@ -159,7 +161,7 @@ export function useLegacyBilling(): BillingState & BillingActions {
159161

160162
async function requireActiveSubscription(): Promise<void> {
161163
await fetchStatus()
162-
if (!isActiveSubscription.value) {
164+
if (!canAccessSubscriptionFeatures.value) {
163165
legacyShowSubscriptionDialog()
164166
}
165167
}
@@ -177,7 +179,7 @@ export function useLegacyBilling(): BillingState & BillingActions {
177179
currentPlanSlug,
178180
isLoading,
179181
error,
180-
isActiveSubscription,
182+
canAccessSubscriptionFeatures,
181183
isFreeTier,
182184

183185
// Actions

src/composables/useCoreCommands.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,14 +161,14 @@ vi.mock('@/composables/auth/useAuthActions', () => ({
161161

162162
vi.mock('@/platform/cloud/subscription/composables/useSubscription', () => ({
163163
useSubscription: vi.fn(() => ({
164-
isActiveSubscription: vi.fn().mockReturnValue(true),
164+
canAccessSubscriptionFeatures: vi.fn().mockReturnValue(true),
165165
showSubscriptionDialog: vi.fn()
166166
}))
167167
}))
168168

169169
vi.mock('@/composables/billing/useBillingContext', () => ({
170170
useBillingContext: vi.fn(() => ({
171-
isActiveSubscription: { value: true },
171+
canAccessSubscriptionFeatures: { value: true },
172172
showSubscriptionDialog: vi.fn()
173173
}))
174174
}))

0 commit comments

Comments
 (0)