[Enterprise Search] Mark guided onboarding data step as complete (#144118)

This commit is contained in:
Sander Philipse 2022-10-28 09:26:49 +02:00 committed by GitHub
parent 34dda3eacb
commit 2af99c1237
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 28 additions and 3 deletions

View file

@ -2,7 +2,7 @@
"id": "enterpriseSearch",
"version": "kibana",
"kibanaVersion": "kibana",
"requiredPlugins": ["features", "spaces", "security", "licensing", "data", "charts", "infra", "cloud", "esUiShared"],
"requiredPlugins": ["features", "spaces", "security", "licensing", "data", "charts", "infra", "cloud", "esUiShared", "guidedOnboarding"],
"configPath": ["enterpriseSearch"],
"optionalPlugins": ["usageCollection", "home", "customIntegrations", "ml"],
"server": true,

View file

@ -23,6 +23,7 @@ export const mockKibanaValues = {
isCloudEnabled: false,
deployment_url: 'https://cloud.elastic.co/deployments/some-id',
},
guidedOnboarding: {},
history: mockHistory,
isCloud: false,
navigateToUrl: jest.fn(),

View file

@ -11,6 +11,8 @@ import { useParams } from 'react-router-dom';
import { useValues } from 'kea';
import useObservable from 'react-use/lib/useObservable';
import { EuiTabbedContent, EuiTabbedContentTab } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
@ -62,6 +64,20 @@ export const SearchIndex: React.FC = () => {
const { indexName } = useValues(IndexNameLogic);
/**
* Guided Onboarding needs us to mark the add data step as complete as soon as the user has data in an index
* Putting it here guarantees that if a user is viewing an index with data, it'll be marked as complete
*/
const { guidedOnboarding } = useValues(KibanaLogic);
const isDataStepActive = useObservable(
guidedOnboarding.guidedOnboardingApi!.isGuideStepActive$('search', 'add_data')
);
useEffect(() => {
if (isDataStepActive && indexData?.count) {
guidedOnboarding.guidedOnboardingApi?.completeGuideStep('search', 'add_data');
}
}, [isDataStepActive, indexData?.count]);
useEffect(() => {
if (
isConnectorIndex(indexData) &&

View file

@ -12,6 +12,7 @@ import { getContext } from 'kea';
import { chartPluginMock } from '@kbn/charts-plugin/public/mocks';
import { coreMock } from '@kbn/core/public/mocks';
import { guidedOnboardingMock } from '@kbn/guided-onboarding-plugin/public/mocks';
import { licensingMock } from '@kbn/licensing-plugin/public/mocks';
import { securityMock } from '@kbn/security-plugin/public/mocks';
@ -27,8 +28,9 @@ describe('renderApp', () => {
params: coreMock.createAppMountParameters(),
core: coreMock.createStart(),
plugins: {
licensing: licensingMock.createStart(),
charts: chartPluginMock.createStartContract(),
guidedOnboarding: guidedOnboardingMock.createStart(),
licensing: licensingMock.createStart(),
security: securityMock.createStart(),
},
} as any;

View file

@ -62,6 +62,7 @@ export const renderApp = (
charts: plugins.charts,
cloud: plugins.cloud,
uiSettings: core.uiSettings,
guidedOnboarding: plugins.guidedOnboarding,
history: params.history,
navigateToUrl: core.application.navigateToUrl,
security: plugins.security,

View file

@ -18,6 +18,7 @@ import {
ScopedHistory,
IUiSettingsClient,
} from '@kbn/core/public';
import { GuidedOnboardingPluginStart } from '@kbn/guided-onboarding-plugin/public';
import { SecurityPluginStart } from '@kbn/security-plugin/public';
import { ProductAccess } from '../../../../common/types';
@ -41,6 +42,7 @@ interface KibanaLogicProps {
renderHeaderActions(HeaderActions: FC): void;
// Required plugins
charts: ChartsPluginStart;
guidedOnboarding: GuidedOnboardingPluginStart;
security: SecurityPluginStart;
uiSettings: IUiSettingsClient;
// Optional plugins
@ -59,6 +61,7 @@ export const KibanaLogic = kea<MakeLogicType<KibanaValues>>({
config: [props.config || {}, {}],
charts: [props.charts, {}],
cloud: [props.cloud || {}, {}],
guidedOnboarding: [props.guidedOnboarding, {}],
history: [props.history, {}],
navigateToUrl: [
(url: string, options?: CreateHrefOptions) => {

View file

@ -18,6 +18,7 @@ import {
AppNavLinkStatus,
} from '@kbn/core/public';
import { DataPublicPluginStart } from '@kbn/data-plugin/public';
import { GuidedOnboardingPluginStart } from '@kbn/guided-onboarding-plugin/public';
import type { HomePublicPluginSetup } from '@kbn/home-plugin/public';
import { LicensingPluginStart } from '@kbn/licensing-plugin/public';
import { SecurityPluginSetup, SecurityPluginStart } from '@kbn/security-plugin/public';
@ -53,9 +54,10 @@ interface PluginsSetup {
export interface PluginsStart {
cloud?: CloudSetup & CloudStart;
licensing: LicensingPluginStart;
charts: ChartsPluginStart;
data: DataPublicPluginStart;
guidedOnboarding: GuidedOnboardingPluginStart;
licensing: LicensingPluginStart;
security: SecurityPluginStart;
}