import React from 'react' ; import { i18n } from '@osd/i18n' ; import { EuiSpacer } from '@elastic/eui' ; import { SearchResponse } from 'elasticsearch' ; import { ShardFailureOpenModalButton } from '../../ui/shard_failure_modal' ; import { toMountPoint } from '../../../../opensearch_dashboards_react/public' ; import { getNotifications } from '../../services' ; import { SearchRequest } from '..' ; export function handleResponse ( request , response ) { if ( response . timed_out ) { getNotifications ( ) . toasts . addWarning ( { title : i18n . translate ( 'data.search.searchSource.fetch.requestTimedOutNotificationMessage' , { defaultMessage : 'Data might be incomplete because your request timed out' , } ) , } ) ; } if ( response . _shards && response . _shards . failed ) { const title = i18n . translate ( 'data.search.searchSource.fetch.shardsFailedNotificationMessage' , { defaultMessage : '{shardsFailed} of {shardsTotal} shards failed' , values : { shardsFailed : response . _shards . failed , shardsTotal : response . _shards . total , } , } ) ; const description = i18n . translate ( 'data.search.searchSource.fetch.shardsFailedNotificationDescription' , { defaultMessage : 'The data you are seeing might be incomplete or wrong.' , } ) ; const text = toMountPoint ( < > { description } < EuiSpacer size = "s" / > < ShardFailureOpenModalButton request = { request . body } response = { response } title = { title } / > < />); getNotifications ( ) . toasts . addWarning ( { title , text } ) ; } return response ; }