make "require subscription" toggleable in build (#6144)

## Summary

Adds build time feature flags system starting with a flag that indicates
whether subscription is required to use the app. This is only used on
cloud.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6144-make-require-subscription-toggleable-in-build-2916d73d3650813bb140c5e96bcce1ce)
by [Unito](https://www.unito.io)
This commit is contained in:
Christian Byrne
2025-10-19 10:30:14 -07:00
committed by GitHub
parent fc69924c4a
commit 1f5191847a
8 changed files with 48 additions and 23 deletions

View File

@@ -80,21 +80,22 @@ export function useSettingUI(
)
}
const subscriptionPanel: SettingPanelItem | null = !isCloud
? null
: {
node: {
key: 'subscription',
label: 'PlanCredits',
children: []
},
component: defineAsyncComponent(
() =>
import(
'@/platform/cloud/subscription/components/SubscriptionPanel.vue'
)
)
}
const subscriptionPanel: SettingPanelItem | null =
!isCloud || !__BUILD_FLAGS__.REQUIRE_SUBSCRIPTION
? null
: {
node: {
key: 'subscription',
label: 'PlanCredits',
children: []
},
component: defineAsyncComponent(
() =>
import(
'@/platform/cloud/subscription/components/SubscriptionPanel.vue'
)
)
}
const userPanel: SettingPanelItem = {
node: {
@@ -148,7 +149,9 @@ export function useSettingUI(
keybindingPanel,
extensionPanel,
...(isElectron() ? [serverConfigPanel] : []),
...(isCloud && subscriptionPanel ? [subscriptionPanel] : [])
...(isCloud && __BUILD_FLAGS__.REQUIRE_SUBSCRIPTION && subscriptionPanel
? [subscriptionPanel]
: [])
].filter((panel) => panel.component)
)
@@ -180,10 +183,16 @@ export function useSettingUI(
label: 'Account',
children: [
userPanel.node,
...(isLoggedIn.value && isCloud && subscriptionPanel
...(isLoggedIn.value &&
isCloud &&
__BUILD_FLAGS__.REQUIRE_SUBSCRIPTION &&
subscriptionPanel
? [subscriptionPanel.node]
: []),
...(isLoggedIn.value && !isCloud ? [creditsPanel.node] : [])
...(isLoggedIn.value &&
!(isCloud && __BUILD_FLAGS__.REQUIRE_SUBSCRIPTION)
? [creditsPanel.node]
: [])
].map(translateCategory)
},
// Normal settings stored in the settingStore