Skip to content

Commit

Permalink
feat: Use transformationsLogic instead of pluginsLogic for onboarding
Browse files Browse the repository at this point in the history
  • Loading branch information
tiina303 committed May 22, 2024
1 parent 20633d2 commit f01127d
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 24 deletions.
34 changes: 10 additions & 24 deletions frontend/src/scenes/onboarding/OnboardingProductConfiguration.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { LemonDivider, LemonSelect, LemonSwitch } from '@posthog/lemon-ui'
import { useActions, useValues } from 'kea'
import React, { useEffect, useRef } from 'react'
import { pluginsLogic } from 'scenes/plugins/pluginsLogic'
import { pipelineDefaultEnabledLogic } from 'scenes/pipeline/pipelineDefaultEnabledLogic'

import { OnboardingStepKey } from './onboardingLogic'
import { onboardingProductConfigurationLogic, ProductConfigOption } from './onboardingProductConfigurationLogic'
Expand All @@ -26,19 +26,6 @@ type ConfigOption =
onChange: (newValue: boolean) => void
}

interface PluginContent {
title: string
description: string
}
type PluginContentMapping = Record<string, PluginContent>
const pluginContentMapping: PluginContentMapping = {
GeoIP: {
title: 'Capture location information',
description:
'Enrich PostHog events and persons with IP location data. This is useful for understanding where your users are coming from. This setting can be found under the data pipelines apps.',
},
}

export const OnboardingProductConfiguration = ({
stepKey = OnboardingStepKey.PRODUCT_CONFIGURATION,
options,
Expand All @@ -47,9 +34,9 @@ export const OnboardingProductConfiguration = ({
options: (ProductConfigOption | undefined)[]
}): JSX.Element | null => {
const { configOptions } = useValues(onboardingProductConfigurationLogic)
const { defaultEnabledPlugins } = useValues(pluginsLogic)
const { pipelineDefaultEnabled } = useValues(pipelineDefaultEnabledLogic)
const { setConfigOptions, saveConfiguration } = useActions(onboardingProductConfigurationLogic)
const { toggleEnabled } = useActions(pluginsLogic)
const { toggleEnabled } = useActions(pipelineDefaultEnabledLogic)

const configOptionsRef = useRef(configOptions)

Expand Down Expand Up @@ -79,17 +66,16 @@ export const OnboardingProductConfiguration = ({
setConfigOptions(updatedConfigOptions)
},
})),
...defaultEnabledPlugins.map((plugin) => {
const pluginContent = pluginContentMapping[plugin.name]
...pipelineDefaultEnabled.map((item) => {
return {
title: pluginContent?.title || plugin.name,
description: pluginContent?.description || plugin.description,
title: item.title,
description: item.description,
type: 'plugin' as PluginType,
value: plugin.pluginConfig?.enabled || false,
onChange: (newValue: boolean) => {
value: item.enabled,
onChange: (enabled: boolean) => {
toggleEnabled({
id: plugin.pluginConfig?.id,
enabled: newValue,
id: item.id,
enabled: enabled,
})
},
}
Expand Down
55 changes: 55 additions & 0 deletions frontend/src/scenes/pipeline/pipelineDefaultEnabledLogic.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import { connect, kea, path, selectors } from 'kea'

import type { pipelineDefaultEnabledLogicType } from './pipelineDefaultEnabledLogicType'
import { pipelineTransformationsLogic } from './transformationsLogic'

interface PluginContent {
title: string
description: string
}
type PluginContentMapping = Record<string, PluginContent>
const pluginContentMapping: PluginContentMapping = {
GeoIP: {
title: 'Capture location information',
description:
'Enrich PostHog events and persons with IP location data. This is useful for understanding where your users are coming from. This setting can be found under data pipeline.',
},
}

export interface DefaultEnabledType {
title: string
description?: string
id: number
enabled: boolean
}

export const pipelineDefaultEnabledLogic = kea<pipelineDefaultEnabledLogicType>([
path(['scenes', 'pipeline', 'pipelineDefaultEnabledLogic']),
connect({
values: [pipelineTransformationsLogic, ['plugins', 'pluginConfigs']],
actions: [pipelineTransformationsLogic, ['toggleEnabled']],
}),
selectors({
pipelineDefaultEnabled: [
(s) => [s.plugins, s.pluginConfigs],
(plugins, pluginConfigs): DefaultEnabledType[] => {
const defaultEnabledPluginIds = Object.values(plugins)
.filter((plugin) => plugin.name in pluginContentMapping)
.map((plugin) => plugin.id)
const defaultEnabledPluginConfigs = Object.values(pluginConfigs).filter((pluginConfig) =>
defaultEnabledPluginIds.includes(pluginConfig.plugin)
)
return defaultEnabledPluginConfigs.map((pluginConfig) => {
const plugin = plugins[pluginConfig.plugin]
const pluginContent = pluginContentMapping[plugin.name]
return {
title: pluginContent?.title || plugin.name,
description: pluginContent?.description || plugin.description,
id: pluginConfig.id,
enabled: pluginConfig.enabled,
}
})
},
],
}),
])

0 comments on commit f01127d

Please sign in to comment.