diff --git a/src/plugins/data/public/search/session/sessions_client.ts b/src/plugins/data/public/search/session/sessions_client.ts index dcfc529f99b2b6..1742db9d033bdd 100644 --- a/src/plugins/data/public/search/session/sessions_client.ts +++ b/src/plugins/data/public/search/session/sessions_client.ts @@ -68,9 +68,9 @@ export class SessionsClient { }); } - public extend(sessionId: string, keepAlive: string): Promise { + public extend(sessionId: string, expires: string): Promise { return this.http!.post(`/internal/session/${encodeURIComponent(sessionId)}/_extend`, { - body: JSON.stringify({ keepAlive }), + body: JSON.stringify({ expires }), }); } diff --git a/x-pack/plugins/data_enhanced/public/search/sessions_mgmt/components/actions/extend_button.tsx b/x-pack/plugins/data_enhanced/public/search/sessions_mgmt/components/actions/extend_button.tsx index 1e2678912ce99f..06459db154f4ae 100644 --- a/x-pack/plugins/data_enhanced/public/search/sessions_mgmt/components/actions/extend_button.tsx +++ b/x-pack/plugins/data_enhanced/public/search/sessions_mgmt/components/actions/extend_button.tsx @@ -58,7 +58,9 @@ const ExtendConfirm = ({ onCancel={onConfirmDismiss} onConfirm={async () => { setIsLoading(true); - await api.sendExtend(id, `${extendByDuration.asMilliseconds()}ms`); + await api.sendExtend(id, `${newExpiration.toISOString()}`); + setIsLoading(false); + onConfirmDismiss(); onActionComplete(); }} confirmButtonText={confirm} diff --git a/x-pack/plugins/data_enhanced/public/search/sessions_mgmt/lib/api.test.ts b/x-pack/plugins/data_enhanced/public/search/sessions_mgmt/lib/api.test.ts index 86acbcdb530016..0fa13ac145223c 100644 --- a/x-pack/plugins/data_enhanced/public/search/sessions_mgmt/lib/api.test.ts +++ b/x-pack/plugins/data_enhanced/public/search/sessions_mgmt/lib/api.test.ts @@ -168,7 +168,7 @@ describe('Search Sessions Management API', () => { describe('extend', () => { beforeEach(() => { - sessionsClient.find = jest.fn().mockImplementation(async () => { + sessionsClient.extend = jest.fn().mockImplementation(async () => { return { saved_objects: [ { @@ -188,6 +188,20 @@ describe('Search Sessions Management API', () => { }); await api.sendExtend('my-id', '5d'); + expect(sessionsClient.extend).toHaveBeenCalledTimes(1); + expect(mockCoreStart.notifications.toasts.addSuccess).toHaveBeenCalled(); + }); + + test('displays error on reject', async () => { + sessionsClient.extend = jest.fn().mockRejectedValue({}); + const api = new SearchSessionsMgmtAPI(sessionsClient, mockConfig, { + urls: mockUrls, + notifications: mockCoreStart.notifications, + application: mockCoreStart.application, + }); + await api.sendExtend('my-id', '5d'); + + expect(sessionsClient.extend).toHaveBeenCalledTimes(1); expect(mockCoreStart.notifications.toasts.addError).toHaveBeenCalled(); }); }); diff --git a/x-pack/plugins/data_enhanced/public/search/sessions_mgmt/lib/api.ts b/x-pack/plugins/data_enhanced/public/search/sessions_mgmt/lib/api.ts index 264556f91cc372..42e9384cce2d86 100644 --- a/x-pack/plugins/data_enhanced/public/search/sessions_mgmt/lib/api.ts +++ b/x-pack/plugins/data_enhanced/public/search/sessions_mgmt/lib/api.ts @@ -166,9 +166,6 @@ export class SearchSessionsMgmtAPI { }), }); } catch (err) { - // eslint-disable-next-line no-console - console.error(err); - this.deps.notifications.toasts.addError(err, { title: i18n.translate('xpack.data.mgmt.searchSessions.api.deletedError', { defaultMessage: 'Failed to delete the search session!', @@ -178,11 +175,21 @@ export class SearchSessionsMgmtAPI { } // Extend - public async sendExtend(id: string, ttl: string): Promise { - this.deps.notifications.toasts.addError(new Error('Not implemented'), { - title: i18n.translate('xpack.data.mgmt.searchSessions.api.extendError', { - defaultMessage: 'Failed to extend the session expiration!', - }), - }); + public async sendExtend(id: string, expires: string): Promise { + try { + await this.sessionsClient.extend(id, expires); + + this.deps.notifications.toasts.addSuccess({ + title: i18n.translate('xpack.data.mgmt.searchSessions.api.extended', { + defaultMessage: 'The search session was extended.', + }), + }); + } catch (err) { + this.deps.notifications.toasts.addError(err, { + title: i18n.translate('xpack.data.mgmt.searchSessions.api.extendError', { + defaultMessage: 'Failed to extend the search session!', + }), + }); + } } }