diff --git a/javascript/src/helpers/mailparser.js b/javascript/src/helpers/mailparser.js index 8fd6f11fe5bcbd4f5259b0f4d7e306ab891543b1..2e9142e21e517709e4da7d32eb35321374853ab3 100644 --- a/javascript/src/helpers/mailparser.js +++ b/javascript/src/helpers/mailparser.js @@ -154,7 +154,7 @@ export function parseMIME(mime) { parts.push({ indices: { from: 0, to: mime.length, headersEnd: headersEnd }, - headers: headers, + headers, boundary: "mimemessage" }); @@ -162,19 +162,11 @@ export function parseMIME(mime) { } function getHeaderValue(header, part) { - if (part.headers !== null && part.headers !== undefined) { - if (part.headers[header] !== null && part.headers[header] !== undefined) { - if (part.headers[header].length > 0) { - return part.headers[header]; - } else { - return null; - } - } else { - return null; - } - } else { - return null; + if (part.headers && part.headers[header] && part.headers[header].length) { + return part.headers[header]; } + + return null; } export function getGlobalHeaderValue(header, parts) { @@ -198,7 +190,7 @@ function getBody(mime, part) { } export function decodeMimeBody(descriptor, mimeString) { - let mimeBody = mimeString.slice( + const mimeBody = mimeString.slice( descriptor.indices.headersEnd, descriptor.indices.to ); @@ -308,7 +300,9 @@ export function getPlain(mime, parts) { break; } } - + if (!plainPart) { + return ""; + } plain = decodeMimeBody(plainPart, mime); return plain; } diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js index fe4096c6b610577d5fe47a880b1443b629493cb2..30be61e2eb2997496536bca55cc5047612105f47 100644 --- a/javascript/src/iframe/viamapi-iframe.js +++ b/javascript/src/iframe/viamapi-iframe.js @@ -266,7 +266,7 @@ async function executeRestfulFunction(type, that, fn, config, ...args) { const badSession = type === "private" && identity && code === "400" && status === "Bad session"; if (!badSession) return response.data; - const loginResponse = await viamApi.identityLogin("previousaddeddevice"); + const loginResponse = await viamApi.identityLogin(null, "previousaddeddevice"); if (loginResponse.data.code !== "200") return loginResponse.data; const uuid = loginResponse.data.data["Uuid"]; diff --git a/javascript/src/utilities/emailUtilities.js b/javascript/src/utilities/emailUtilities.js index 7bc1971b2afc9248124784529618b4fafd2ef936..0b5f92035105c1cc3b693c62147471a0ae20c679 100644 --- a/javascript/src/utilities/emailUtilities.js +++ b/javascript/src/utilities/emailUtilities.js @@ -1,5 +1,6 @@ import dataUriToBlob from "data-uri-to-blob"; import libmime from 'libmime'; +import union from 'lodash/union'; import { fixNewLines, @@ -15,6 +16,15 @@ import { getCertificateChain } from "./signingUtilities"; const SIGNATURE_CONTENT_TYPE = "application/pkcs7-signature"; export const DEFAULT_ATTACHMENT_NAME = 'attachment'; +const splitParticipants = participantsList => { + if (!participantsList) { + return []; + } + + const participants = participantsList.map(participants => participants.split(",").map(p => p.trim())); + return union.apply(null, participants); +}; + export const parseSMIME = smimeString => { return new Promise(resolve => { setTimeout(async () => { @@ -48,10 +58,14 @@ export const parseSMIME = smimeString => { const certificateChain = getCertificateChain(signatureBase64); + const from = splitParticipants(getGlobalHeaderValue("from", parts)); + const to = splitParticipants(getGlobalHeaderValue("to", parts)); + const cc = splitParticipants(getGlobalHeaderValue("cc", parts)); + const message = { - from: getGlobalHeaderValue("from", parts), - to: getGlobalHeaderValue("to", parts), - cc: getGlobalHeaderValue("cc", parts), + from, + to, + cc, subject: getGlobalHeaderValue("subject", parts).join(" "), html: extractHtmlBodyFromString(html), plain, @@ -101,4 +115,4 @@ export const extractHtmlBodyFromString = string => { } return body; -}; \ No newline at end of file +};