UNPKG

@ovotech/genesys-web-messaging-tester-cli

Version:
74 lines (73 loc) 2.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createConversationIdGetter = exports.messageIdToConversationIdFactory = void 0; function isGenesysError(obj) { return (obj.message !== undefined && typeof obj.message === 'string' && obj.code !== undefined && typeof obj.code === 'string' && obj.status !== undefined && typeof obj.status === 'number'); } function messageIdToConversationIdFactory({ convoApi, }) { return { async get(messageId) { const response = await convoApi.getConversationsMessageDetails(messageId); return response?.conversationId; }, async preflightCheck() { try { await convoApi.getConversationsMessageDetails('wm-tester-preflight-check'); } catch (err) { if (isGenesysError(err)) { switch (err.code) { case 'missing.any.permissions': return { ok: false, errorType: 'missing-permissions', reasonForError: err.message }; case 'not.found': return { ok: true }; default: return { ok: false, errorType: 'unknown', reasonForError: err.message }; } } return { ok: false, errorType: 'unknown', reasonForError: err.message || 'unknown error', }; } return { ok: true }; }, }; } exports.messageIdToConversationIdFactory = messageIdToConversationIdFactory; function createConversationIdGetter(session, client) { let messageId; session.once('structuredMessage', (msg) => { messageId = msg.body.id; }); let conversationId = undefined; return async () => { if (!messageId) { return { successful: false, reason: 'not-received-message', }; } try { if (!conversationId) { conversationId = await client.get(messageId); } if (conversationId) { return { successful: true, id: conversationId }; } else { return { successful: false, reason: 'convo-id-not-in-response' }; } } catch (error) { return { successful: false, reason: 'unknown-error', error }; } }; } exports.createConversationIdGetter = createConversationIdGetter;