diff --git a/apps/console/src/pages/organizations/access-reviews/dialogs/AddAccessSourceDialog.tsx b/apps/console/src/pages/organizations/access-reviews/dialogs/AddAccessSourceDialog.tsx index 0095e079a..0c056beb1 100644 --- a/apps/console/src/pages/organizations/access-reviews/dialogs/AddAccessSourceDialog.tsx +++ b/apps/console/src/pages/organizations/access-reviews/dialogs/AddAccessSourceDialog.tsx @@ -43,6 +43,10 @@ import type { AddAccessSourceDialogCreateAPIKeyConnectorMutation } from "#/__gen import type { AddAccessSourceDialogCreateClientCredentialsConnectorMutation } from "#/__generated__/core/AddAccessSourceDialogCreateClientCredentialsConnectorMutation.graphql"; import { createAccessSourceMutation } from "./accessSourceMutations"; +import { + isPostHogDeploymentSelected, + PostHogDeploymentField, +} from "./PostHogDeploymentField"; export const addAccessSourceDialogConnectorProviderInfoFragment = graphql` fragment AddAccessSourceDialogConnectorProviderInfoFragment on ConnectorProviderInfo @relay(plural: true) { @@ -124,8 +128,6 @@ function mapAPIKeyExtraSettingToField( break; case "POSTHOG": if (settingKey === "region") return "posthogRegion"; - break; - case "POSTHOG_SELF_HOSTED": if (settingKey === "instanceUrl") return "posthogInstanceUrl"; break; } @@ -503,6 +505,43 @@ export function AddAccessSourceDialog({ ); }; + // PostHog renders a dedicated deployment selector (Cloud region or + // self-hosted URL); every other provider falls back to generic fields. + const renderAPIKeyExtraSettings = () => { + if (!activeProvider) { + return null; + } + + if (activeProvider.provider === "POSTHOG") { + return ( + + ); + } + + return activeProvider.extraSettings.map((setting) => { + const value = extraSettingValues[setting.key] ?? ""; + return ( + ) => + setExtraSettingValues(prev => ({ ...prev, [setting.key]: e.target.value }))} + required={setting.required} + /> + ); + }); + }; + + // PostHog's extra settings are individually optional (region OR instance + // URL), so the generic required-field check can't gate it. + const postHogAPIKeyValid + = activeProvider?.provider !== "POSTHOG" + || isPostHogDeploymentSelected(extraSettingValues); + const apiKeyExtraSettingsValid = activeProvider ? hasRequiredExtraSettings(activeProvider.extraSettings, extraSettingValues) : true; @@ -586,40 +625,7 @@ export function AddAccessSourceDialog({ required autoFocus /> - {activeProvider?.extraSettings.map((setting) => { - const value = extraSettingValues[setting.key] ?? ""; - const setValue = (next: string) => - setExtraSettingValues(prev => ({ ...prev, [setting.key]: next })); - - // The "region" setting is a fixed US/EU choice; every other - // extra setting is a free-text field. - if (setting.key === "region") { - return ( -
- - -
- ); - } - - return ( - ) => - setValue(e.target.value)} - required={setting.required} - /> - ); - })} + {renderAPIKeyExtraSettings()}