diff --git a/datahub-frontend/app/react/controllers/GraphQLController.java b/datahub-frontend/app/react/controllers/GraphQLController.java index 0e1fb2147a..e08412670a 100644 --- a/datahub-frontend/app/react/controllers/GraphQLController.java +++ b/datahub-frontend/app/react/controllers/GraphQLController.java @@ -26,6 +26,7 @@ import play.mvc.Security; import react.resolver.AnalyticsChartTypeResolver; import react.resolver.GetChartsResolver; import react.resolver.GetHighlightsResolver; +import react.resolver.IsAnalyticsEnabledResolver; public class GraphQLController extends Controller { @@ -33,6 +34,8 @@ public class GraphQLController extends Controller { private static final String QUERY_TYPE = "Query"; private static final String ANALYTICS_CHART_TYPE = "AnalyticsChart"; + + private static final String IS_ANALYTICS_ENABLED_QUERY = "isAnalyticsEnabled"; private static final String GET_ANALYTICS_CHARTS_QUERY = "getAnalyticsCharts"; private static final String GET_HIGHLIGHTS_QUERY = "getHighlights"; @@ -49,10 +52,8 @@ public class GraphQLController extends Controller { /* * Initialize GraphQL Engine */ - _engine = isAnalyticsEnabled(config) - ? buildExtendedEngine(environment, analyticsService) - : GmsGraphQLEngine.get(); _config = config; + _engine = buildExtendedEngine(environment, analyticsService); } @Security.Authenticated(Authenticator.class) @@ -114,6 +115,7 @@ public class GraphQLController extends Controller { .addSchema(schemaString) .configureRuntimeWiring(builder -> builder .type(QUERY_TYPE, typeWiring -> typeWiring + .dataFetcher(IS_ANALYTICS_ENABLED_QUERY, new IsAnalyticsEnabledResolver(isAnalyticsEnabled(_config))) .dataFetcher(GET_ANALYTICS_CHARTS_QUERY, new GetChartsResolver(analyticsService)) .dataFetcher(GET_HIGHLIGHTS_QUERY, new GetHighlightsResolver(analyticsService))) .type(ANALYTICS_CHART_TYPE, typeWiring -> typeWiring diff --git a/datahub-frontend/app/react/resolver/IsAnalyticsEnabledResolver.java b/datahub-frontend/app/react/resolver/IsAnalyticsEnabledResolver.java new file mode 100644 index 0000000000..0205a878b5 --- /dev/null +++ b/datahub-frontend/app/react/resolver/IsAnalyticsEnabledResolver.java @@ -0,0 +1,21 @@ +package react.resolver; + +import graphql.schema.DataFetcher; +import graphql.schema.DataFetchingEnvironment; + +/** + * Returns true if analytics feature flag is enabled, false otherwise. + */ +public class IsAnalyticsEnabledResolver implements DataFetcher { + + private final Boolean _isAnalyticsEnabled; + + public IsAnalyticsEnabledResolver(final Boolean isAnalyticsEnabled) { + _isAnalyticsEnabled = isAnalyticsEnabled; + } + + @Override + public final Boolean get(DataFetchingEnvironment environment) throws Exception { + return _isAnalyticsEnabled; + } +} diff --git a/datahub-frontend/conf/datahub-frontend.graphql b/datahub-frontend/conf/datahub-frontend.graphql index d30b5edec7..dce218d1e7 100644 --- a/datahub-frontend/conf/datahub-frontend.graphql +++ b/datahub-frontend/conf/datahub-frontend.graphql @@ -1,4 +1,5 @@ extend type Query { + isAnalyticsEnabled: Boolean! getAnalyticsCharts: [AnalyticsChartGroup!]! getHighlights: [Highlight!]! } diff --git a/datahub-web-react/src/app/home/HomePageHeader.tsx b/datahub-web-react/src/app/home/HomePageHeader.tsx index e624c74255..f204fce63b 100644 --- a/datahub-web-react/src/app/home/HomePageHeader.tsx +++ b/datahub-web-react/src/app/home/HomePageHeader.tsx @@ -8,6 +8,7 @@ import { useGetAuthenticatedUser } from '../useGetAuthenticatedUser'; import { useEntityRegistry } from '../useEntityRegistry'; import { navigateToSearchUrl } from '../search/utils/navigateToSearchUrl'; import { GetSearchResultsQuery, useGetAutoCompleteResultsLazyQuery } from '../../graphql/search.generated'; +import { useIsAnalyticsEnabledQuery } from '../../graphql/analytics.generated'; import { useGetAllEntitySearchResults } from '../../utils/customGraphQL/useGetAllEntitySearchResults'; import { EntityType } from '../../types.generated'; import analytics, { EventType } from '../analytics'; @@ -110,6 +111,9 @@ export const HomePageHeader = () => { const [getAutoCompleteResults, { data: suggestionsData }] = useGetAutoCompleteResultsLazyQuery(); const themeConfig = useTheme(); + const { data } = useIsAnalyticsEnabledQuery(); + const isAnalyticsEnabled = data && data.isAnalyticsEnabled; + const onSearch = (query: string) => { analytics.event({ type: EventType.SearchEvent, @@ -175,7 +179,7 @@ export const HomePageHeader = () => { )} - + {isAnalyticsEnabled && }