@ovotech/genesys-web-messaging-tester-cli
Version:
74 lines (73 loc) • 2.63 kB
JavaScript
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;
;