From 2e45815e896825ffe42953d2e27e8a8eccc800bb Mon Sep 17 00:00:00 2001 From: Anton Dosov Date: Thu, 28 Apr 2022 12:45:52 +0200 Subject: [PATCH] revert defer() workaround --- .../public/kibana_api/kibana_api.ts | 10 ++-- .../vis_type_script/public/renderer/index.tsx | 53 +++++-------------- 2 files changed, 19 insertions(+), 44 deletions(-) diff --git a/src/plugins/vis_type_script/public/kibana_api/kibana_api.ts b/src/plugins/vis_type_script/public/kibana_api/kibana_api.ts index 5b305b37a09cc..22269b20f1d46 100644 --- a/src/plugins/vis_type_script/public/kibana_api/kibana_api.ts +++ b/src/plugins/vis_type_script/public/kibana_api/kibana_api.ts @@ -15,9 +15,11 @@ export interface VisTypeScriptKibanaApiDeps { data: DataPublicPluginStart; } -export interface SearchOptions { +export interface EsSearchOptions { useKibanaContext: boolean; } +export type ESSearchRequest = estypes.SearchRequest; +export type ESSearchResponse = estypes.SearchResponse; export class VisTypeScriptKibanaApi { constructor( @@ -26,9 +28,9 @@ export class VisTypeScriptKibanaApi { ) {} async esSearch( - payload: estypes.SearchRequest, - { useKibanaContext = true }: SearchOptions = { useKibanaContext: true } - ): Promise { + payload: ESSearchRequest, + { useKibanaContext = true }: EsSearchOptions = { useKibanaContext: true } + ): Promise { if (useKibanaContext) { // TODO: adjust request based on this.visSearchContext // eslint-disable-next-line no-console diff --git a/src/plugins/vis_type_script/public/renderer/index.tsx b/src/plugins/vis_type_script/public/renderer/index.tsx index eeae4f83203a3..b102a809b1ed7 100644 --- a/src/plugins/vis_type_script/public/renderer/index.tsx +++ b/src/plugins/vis_type_script/public/renderer/index.tsx @@ -10,10 +10,13 @@ import React, { useEffect, useState, useMemo } from 'react'; import { createEndpoint, fromIframe } from '@remote-ui/rpc'; import './index.scss'; -import type { SearchResponse, AggregationsAggregate } from '@elastic/elasticsearch/lib/api/types'; -import type { SearchRequest } from '@kbn/data-plugin/common'; import { IExternalUrl } from '@kbn/core/public'; -import { SearchOptions, VisTypeScriptKibanaApi } from '../kibana_api'; +import { + EsSearchOptions, + VisTypeScriptKibanaApi, + ESSearchResponse, + ESSearchRequest, +} from '../kibana_api'; export const KIBANA_API_CONSTANT_NAME = 'KIBANA'; @@ -32,38 +35,11 @@ const getSandboxDocument = (script: string, dependencies: string[], nonce: strin const endpoint = createEndpoint(fromInsideIframe()); - const defer = () => { - const ret = {}; - - ret.promise = new Promise((resolve, reject) => { - ret.resolve = resolve; - ret.reject = reject; - }); - - return ret; - } - - const searchDeferrals = {}; - let searchCounter = 0; - - endpoint.expose({ - onSearchResult: (searchId, result) => { - searchDeferrals[searchId].resolve(result); - } - }); - let onResize = () => {}; const ${KIBANA_API_CONSTANT_NAME} = { searchEs: (payload, options) => { - const searchId = searchCounter; - searchCounter++; - - searchDeferrals[searchId] = defer(); - - endpoint.call.esSearch(searchId, payload, options); - - return searchDeferrals[searchId].promise; + return endpoint.call.esSearch(payload, options); }, subscribeToResize: (fn) => { onResize = fn; @@ -114,17 +90,14 @@ export const ScriptRenderer: React.FunctionComponent<{ useEffect(() => { if (!iframeRef.current) throw new Error('Iframe init error'); const iframeEl = iframeRef.current; - const endpoint = createEndpoint<{ - onSearchResult: ( - searchId: number, - result: SearchResponse> - ) => {}; - }>(fromIframe(iframeEl, { terminate: false })); + const endpoint = createEndpoint(fromIframe(iframeEl, { terminate: false })); endpoint.expose({ - esSearch: async (searchId: number, payload: SearchRequest, options?: SearchOptions) => { - const searchResult = await kibanaApi.esSearch(payload, options); - endpoint.call.onSearchResult(searchId, searchResult); + esSearch: async ( + payload: ESSearchRequest, + options?: EsSearchOptions + ): Promise => { + return kibanaApi.esSearch(payload, options); }, });