diff --git a/electron_app/package.json b/electron_app/package.json index 7191dec88..9ebf06422 100644 --- a/electron_app/package.json +++ b/electron_app/package.json @@ -1,6 +1,6 @@ { "name": "criptext", - "version": "0.23.3", + "version": "0.23.4", "author": { "name": "Criptext Inc", "email": "support@criptext.com", @@ -136,7 +136,7 @@ "@criptext/api": "^0.15.18", "@criptext/data-transfer-client": "^0.1.1", "@criptext/electron-better-ipc": "^0.1.2-rc5", - "@criptext/electron-push-receiver": "^2.1.2", + "@criptext/electron-push-receiver": "^2.1.2-rc1", "@criptext/news-api-client": "^1.0.1", "dotenv": "^6.2.0", "electron-context-menu": "^0.10.1", @@ -151,6 +151,7 @@ "os-locale": "^3.0.1", "recursive-copy": "^2.0.10", "rimraf": "^2.6.3", + "rmdir-recursive": "^0.0.1", "sqlite3": "4.0.2", "unused-filename": "^2.1.0", "websocket": "^1.0.28" diff --git a/electron_app/src/BackupManager.js b/electron_app/src/BackupManager.js index 55fb1a797..de1265ba6 100644 --- a/electron_app/src/BackupManager.js +++ b/electron_app/src/BackupManager.js @@ -121,7 +121,7 @@ const createTempEmailsBackup = () => { const EmailsFolder = getUserEmailsPath(process.env.NODE_ENV, getUsername()); return new Promise((resolve, reject) => { try { - copy(EmailsFolder, TempEmailsBackupPath); + copy(EmailsFolder, TempEmailsBackupPath, { overwrite: true }); resolve(); } catch (error) { reject({ error: 'Preparing backup error' }); diff --git a/electron_app/src/dbExporter.js b/electron_app/src/dbExporter.js index 529f705fa..43ac51a0f 100644 --- a/electron_app/src/dbExporter.js +++ b/electron_app/src/dbExporter.js @@ -127,7 +127,9 @@ const exportLabelTable = async db => { }; const exportEmailTable = async db => { - const username = `${myAccount.recipientId}@${APP_DOMAIN}`; + const username = myAccount.recipientId.includes('@') + ? myAccount.recipientId + : `${myAccount.recipientId}@${APP_DOMAIN}`; let emailRows = []; let shouldEnd = false; let offset = 0; @@ -508,7 +510,9 @@ const importDatabaseFromFile = async ({ filepath, databasePath }) => { }; const storeEmailBodies = emailRows => { - const username = `${myAccount.recipientId}@${APP_DOMAIN}`; + const username = myAccount.recipientId.includes('@') + ? myAccount.recipientId + : `${myAccount.recipientId}@${APP_DOMAIN}`; return Promise.all( emailRows.map(email => { const body = email.content; diff --git a/electron_app/src/ipc/manager.js b/electron_app/src/ipc/manager.js index d1c2214ab..492eb6e46 100644 --- a/electron_app/src/ipc/manager.js +++ b/electron_app/src/ipc/manager.js @@ -37,7 +37,11 @@ ipc.answerRenderer( ); ipc.answerRenderer('db-clean-database', async username => { - const user = username ? `${username}@${APP_DOMAIN}` : getUsername(); + const user = username + ? username.includes('@') + ? username + : `${username}@${APP_DOMAIN}` + : getUsername(); if (user) { await fileUtils.removeUserDir(user); } diff --git a/electron_app/src/utils/FileUtils.js b/electron_app/src/utils/FileUtils.js index 07d32aba2..da28c4a06 100644 --- a/electron_app/src/utils/FileUtils.js +++ b/electron_app/src/utils/FileUtils.js @@ -1,4 +1,6 @@ const fs = require('fs'); +const copy = require('recursive-copy'); +const rmdirRecursive = require('rmdir-recursive'); const path = require('path'); const rimraf = require('rimraf'); const { app } = require('electron'); @@ -16,7 +18,8 @@ const getUserEmailsPath = (node_env, user) => { const emailsPath = path .join(__dirname, '/../userData', `${user}`, 'emails') .replace('/src', ''); - createPathRecursive(emailsPath); + const userToReplace = `${user}@${APP_DOMAIN}`; + createPathRecursive(emailsPath, userToReplace, user); return emailsPath; } default: { @@ -153,7 +156,16 @@ const createPathRecursive = (fullpath, oldUser, newUser) => { const lastPath = path.resolve(parentDir, oldUser); if (fs.existsSync(lastPath)) { curDir = path.resolve(parentDir, newUser); - fs.renameSync(lastPath, curDir); + try { + fs.renameSync(lastPath, curDir); + } catch (err) { + const source = path.resolve(parentDir, `${oldUser}/emails/`); + const dest = path.resolve(parentDir, `${newUser}/emails/`); + copy(source, dest, { overwrite: true }).then(function() { + const folder = path.resolve(parentDir, `${oldUser}`); + rmdirRecursive(folder); + }); + } return curDir; } } diff --git a/electron_app/src/windows/composer.js b/electron_app/src/windows/composer.js index 69392a9d7..014963903 100644 --- a/electron_app/src/windows/composer.js +++ b/electron_app/src/windows/composer.js @@ -168,7 +168,10 @@ const sendEventToMailbox = (eventName, data) => { }; const saveDraftToDatabase = async (composerId, data) => { - const username = `${myAccount.recipientId}@${APP_DOMAIN}`; + const recipientId = myAccount.recipientId; + const username = recipientId.includes('@') + ? recipientId + : `${recipientId}@${APP_DOMAIN}`; const filteredRecipients = { from: data.recipients.from, to: filterInvalidEmailAddresses(data.recipients.to), diff --git a/electron_app/src/windows/mailbox.js b/electron_app/src/windows/mailbox.js index bce0eb14d..44049b4b4 100644 --- a/electron_app/src/windows/mailbox.js +++ b/electron_app/src/windows/mailbox.js @@ -70,7 +70,7 @@ const create = () => { mailboxWindow.on('close', e => { if (!globalManager.forcequit.get()) { e.preventDefault(); - if (mailboxWindow.isFullScreen()) { + if (mailboxWindow && mailboxWindow.isFullScreen()) { mailboxWindow.setFullScreen(false); setTimeout(() => hide(), 1200); } else { diff --git a/electron_app/yarn.lock b/electron_app/yarn.lock index 61a2d314b..baffc51ec 100644 --- a/electron_app/yarn.lock +++ b/electron_app/yarn.lock @@ -113,10 +113,10 @@ version "0.1.2-rc5" resolved "https://registry.yarnpkg.com/@criptext/electron-better-ipc/-/electron-better-ipc-0.1.2-rc5.tgz#4a51755de1168b441fe6a68872fe8b95eaa742ab" -"@criptext/electron-push-receiver@^2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@criptext/electron-push-receiver/-/electron-push-receiver-2.1.2.tgz#d971523d21bb473e9340f157af0c30760f7c417b" - integrity sha512-1QIx54AuC/XtdO37a7ExXF1yoKvyEnq7kXnsCGo1mTh9ER3hNqS9ox8hpBPRuA7TgkH2dQzDeAqsQS7IflsKMw== +"@criptext/electron-push-receiver@^2.1.2-rc1": + version "2.1.2-rc1" + resolved "https://registry.yarnpkg.com/@criptext/electron-push-receiver/-/electron-push-receiver-2.1.2-rc1.tgz#4c6be8acc7d5d17390a31872b52228866f757643" + integrity sha512-rYy1ZW5vQ6Z8QuMGMomXW7vKUXHbnsr4rMr7ee1aDjnNA3wzAMDWVTKiYmI3r9NFdnYTmIs2MwKCrQ4PQHy+rw== dependencies: electron-config "^1.0.0" push-receiver "^2.0.2" @@ -186,9 +186,9 @@ integrity sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q== "@types/node@^10.1.0": - version "10.14.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.4.tgz#1c586b991457cbb58fef51bc4e0cfcfa347714b5" - integrity sha512-DT25xX/YgyPKiHFOpNuANIQIVvYEwCWXgK2jYYwqgaMrYE6+tq+DtmMwlD3drl6DJbUwtlIDnn0d7tIn/EbXBg== + version "10.14.16" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.16.tgz#4d690c96cbb7b2728afea0e260d680501b3da5cf" + integrity sha512-/opXIbfn0P+VLt+N8DE4l8Mn8rbhiJgabU96ZJ0p9mxOkIks5gh6RUnpHak7Yh0SFkyjO/ODbxsQQPV2bpMmyA== "@types/node@^8.0.24": version "8.10.49" @@ -3349,9 +3349,9 @@ lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" lodash@^4.17.11: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== long@^3.2.0: version "3.2.0" @@ -4591,6 +4591,11 @@ rimraf@^2.6.3: dependencies: glob "^7.1.3" +rmdir-recursive@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/rmdir-recursive/-/rmdir-recursive-0.0.1.tgz#57c0234af6e22ce642d0069cb2850f92966581b1" + integrity sha1-V8AjSvbiLOZC0AacsoUPkpZlgbE= + rsvp@^3.3.3: version "3.6.2" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" @@ -5441,9 +5446,9 @@ write-file-atomic@^2.0.0, write-file-atomic@^2.1.0: signal-exit "^3.0.2" write-file-atomic@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.2.tgz#a7181706dfba17855d221140a9c06e15fcdd87b9" - integrity sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g== + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== dependencies: graceful-fs "^4.1.11" imurmurhash "^0.1.4" diff --git a/email_composer/package.json b/email_composer/package.json index 5c5c5f1e3..b65e80759 100644 --- a/email_composer/package.json +++ b/email_composer/package.json @@ -1,6 +1,6 @@ { "name": "email_composer", - "version": "0.23.3", + "version": "0.23.4", "private": true, "dependencies": { "@criptext/electron-better-ipc": "^0.1.2-rc5", diff --git a/email_composer/src/app.scss b/email_composer/src/app.scss index 68f4feafe..142c8ed80 100644 --- a/email_composer/src/app.scss +++ b/email_composer/src/app.scss @@ -175,6 +175,90 @@ TABLE OF CONTENTS font-style: italic; } +@font-face { + font-family: "Roboto"; + src:url(#{$_PATH_TO_FONTS}/roboto/Roboto-Thin.ttf) format("truetype"); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: "Roboto"; + src:url(#{$_PATH_TO_FONTS}/roboto/Roboto-ThinItalic.ttf) format("truetype"); + font-weight: normal; + font-style: italic; +} + +@font-face { + font-family: "Roboto"; + src:url(#{$_PATH_TO_FONTS}/roboto/Roboto-Light.ttf) format("truetype"); + font-weight: 200; + font-style: normal; +} + +@font-face { + font-family: "Roboto"; + src:url(#{$_PATH_TO_FONTS}/roboto/Roboto-LightItalic.ttf) format("truetype"); + font-weight: 200; + font-style: italic; +} + +@font-face { + font-family: "Roboto"; + src:url(#{$_PATH_TO_FONTS}/roboto/Roboto-Regular.ttf) format("truetype"); + font-weight: 300; + font-style: normal; +} + +@font-face { + font-family: "Roboto"; + src:url(#{$_PATH_TO_FONTS}/roboto/Roboto-Italic.ttf) format("truetype"); + font-weight: 300; + font-style: italic; +} + +@font-face { + font-family: "Roboto"; + src:url(#{$_PATH_TO_FONTS}/roboto/Roboto-Medium.ttf) format("truetype"); + font-weight: 600; + font-style: normal; +} + +@font-face { + font-family: "Roboto"; + src:url(#{$_PATH_TO_FONTS}/roboto/Roboto-MediumItalic.ttf) format("truetype"); + font-weight: 600; + font-style: italic; +} + +@font-face { + font-family: "Roboto"; + src:url(#{$_PATH_TO_FONTS}/roboto/Roboto-Bold.ttf) format("truetype"); + font-weight: 700; + font-style: normal; +} + +@font-face { + font-family: "Roboto"; + src:url(#{$_PATH_TO_FONTS}/roboto/Roboto-BoldItalic.ttf) format("truetype"); + font-weight: 700; + font-style: italic; +} + +@font-face { + font-family: "Roboto"; + src:url(#{$_PATH_TO_FONTS}/roboto/Roboto-Black.ttf) format("truetype"); + font-weight: 800; + font-style: normal; +} + +@font-face { + font-family: "Roboto"; + src:url(#{$_PATH_TO_FONTS}/roboto/Roboto-BlackItalic.ttf) format("truetype"); + font-weight: 800; + font-style: italic; +} + /* 1.2.- FONTS: Icon ----------------------------- */ @font-face { @@ -405,7 +489,7 @@ TABLE OF CONTENTS /* 2.- CONTENT ----------------------------- */ *{ - font-family: NunitoSans; + font-family: NunitoSans, Roboto; } html, html body { diff --git a/email_composer/src/components/TagRecipient.js b/email_composer/src/components/TagRecipient.js index 944cc4011..bc3294285 100644 --- a/email_composer/src/components/TagRecipient.js +++ b/email_composer/src/components/TagRecipient.js @@ -25,7 +25,7 @@ const TagRecipient = props => { const { name, email, complete, state, form } = getTagDisplayValue(tag); const formattedTag = !name && !email - ? { name: tag, email: tag, complete: tag, form: tag } + ? { name: tag, email: tag, complete: tag } : { name, email, complete, state, form }; const isValidEmailAddress = emailRegex.test(formattedTag.email); diff --git a/email_composer/src/components/subject.scss b/email_composer/src/components/subject.scss index a1c6995da..31aa3558a 100644 --- a/email_composer/src/components/subject.scss +++ b/email_composer/src/components/subject.scss @@ -11,7 +11,7 @@ div.subject-container{ background-color: transparent; border: none; color: black; - font-family: NunitoSans; + font-family: NunitoSans, Roboto; font-size: 16px; font-weight: 600; margin-left: 20px; diff --git a/email_composer/src/containers/Composer.js b/email_composer/src/containers/Composer.js index ba43e005d..165831a3f 100644 --- a/email_composer/src/containers/Composer.js +++ b/email_composer/src/containers/Composer.js @@ -50,7 +50,8 @@ import string from './../lang'; import { appDomain, composerEvents, - defaultEmptyMimetypeValue + defaultEmptyMimetypeValue, + extensionsAccepted } from '../utils/const'; import { generateKeyAndIv } from '../utils/AESUtils'; import { addEvent, removeEvent, Event } from '../utils/electronEventInterface'; @@ -385,7 +386,7 @@ class ComposerWrapper extends Component { if (!item.type) { const texts = item.name.split('.'); const ext = texts[texts.length - 1]; - if (ext === 'xls') return true; + if (extensionsAccepted.includes(ext)) return true; } return !!item.type; }); diff --git a/email_composer/src/fonts/roboto/Roboto-Black.ttf b/email_composer/src/fonts/roboto/Roboto-Black.ttf new file mode 100755 index 000000000..86ec2b29b Binary files /dev/null and b/email_composer/src/fonts/roboto/Roboto-Black.ttf differ diff --git a/email_composer/src/fonts/roboto/Roboto-BlackItalic.ttf b/email_composer/src/fonts/roboto/Roboto-BlackItalic.ttf new file mode 100755 index 000000000..1904c99b2 Binary files /dev/null and b/email_composer/src/fonts/roboto/Roboto-BlackItalic.ttf differ diff --git a/email_composer/src/fonts/roboto/Roboto-Bold.ttf b/email_composer/src/fonts/roboto/Roboto-Bold.ttf new file mode 100755 index 000000000..91ec21227 Binary files /dev/null and b/email_composer/src/fonts/roboto/Roboto-Bold.ttf differ diff --git a/email_composer/src/fonts/roboto/Roboto-BoldItalic.ttf b/email_composer/src/fonts/roboto/Roboto-BoldItalic.ttf new file mode 100755 index 000000000..4013bf88a Binary files /dev/null and b/email_composer/src/fonts/roboto/Roboto-BoldItalic.ttf differ diff --git a/email_composer/src/fonts/roboto/Roboto-Italic.ttf b/email_composer/src/fonts/roboto/Roboto-Italic.ttf new file mode 100755 index 000000000..9f49ffd86 Binary files /dev/null and b/email_composer/src/fonts/roboto/Roboto-Italic.ttf differ diff --git a/email_composer/src/fonts/roboto/Roboto-Light.ttf b/email_composer/src/fonts/roboto/Roboto-Light.ttf new file mode 100755 index 000000000..d43e94331 Binary files /dev/null and b/email_composer/src/fonts/roboto/Roboto-Light.ttf differ diff --git a/email_composer/src/fonts/roboto/Roboto-LightItalic.ttf b/email_composer/src/fonts/roboto/Roboto-LightItalic.ttf new file mode 100755 index 000000000..c11442ce5 Binary files /dev/null and b/email_composer/src/fonts/roboto/Roboto-LightItalic.ttf differ diff --git a/email_composer/src/fonts/roboto/Roboto-Medium.ttf b/email_composer/src/fonts/roboto/Roboto-Medium.ttf new file mode 100755 index 000000000..879834198 Binary files /dev/null and b/email_composer/src/fonts/roboto/Roboto-Medium.ttf differ diff --git a/email_composer/src/fonts/roboto/Roboto-MediumItalic.ttf b/email_composer/src/fonts/roboto/Roboto-MediumItalic.ttf new file mode 100755 index 000000000..5e866375e Binary files /dev/null and b/email_composer/src/fonts/roboto/Roboto-MediumItalic.ttf differ diff --git a/email_composer/src/fonts/roboto/Roboto-Regular.ttf b/email_composer/src/fonts/roboto/Roboto-Regular.ttf new file mode 100755 index 000000000..7d9a6c4c3 Binary files /dev/null and b/email_composer/src/fonts/roboto/Roboto-Regular.ttf differ diff --git a/email_composer/src/fonts/roboto/Roboto-Thin.ttf b/email_composer/src/fonts/roboto/Roboto-Thin.ttf new file mode 100755 index 000000000..861d63adb Binary files /dev/null and b/email_composer/src/fonts/roboto/Roboto-Thin.ttf differ diff --git a/email_composer/src/fonts/roboto/Roboto-ThinItalic.ttf b/email_composer/src/fonts/roboto/Roboto-ThinItalic.ttf new file mode 100755 index 000000000..e65145f37 Binary files /dev/null and b/email_composer/src/fonts/roboto/Roboto-ThinItalic.ttf differ diff --git a/email_composer/src/utils/EmailUtils.js b/email_composer/src/utils/EmailUtils.js index b467e8ae8..cca3c280d 100644 --- a/email_composer/src/utils/EmailUtils.js +++ b/email_composer/src/utils/EmailUtils.js @@ -80,7 +80,6 @@ export const formDataToEditDraft = async emailKeyToEdit => { iv: file.iv }; }); - return { toEmails, ccEmails, diff --git a/email_composer/src/utils/const.js b/email_composer/src/utils/const.js index 591298d44..3e90e9e87 100644 --- a/email_composer/src/utils/const.js +++ b/email_composer/src/utils/const.js @@ -18,6 +18,13 @@ export const composerEvents = { }; export const defaultEmptyMimetypeValue = 'application/octet-stream'; +export const extensionsAccepted = [ + 'xls', + 'db', + 'dmg', + 'provisionprofile', + 'iso' +]; export const previewLength = 100; diff --git a/email_loading/package.json b/email_loading/package.json index 93b4ba9c1..5617855ca 100644 --- a/email_loading/package.json +++ b/email_loading/package.json @@ -1,6 +1,6 @@ { "name": "email_loading", - "version": "0.23.3", + "version": "0.23.4", "private": true, "dependencies": { "@criptext/electron-better-ipc": "^0.1.2-rc5", diff --git a/email_login/package.json b/email_login/package.json index 3f9d2bbab..40f57e6dd 100644 --- a/email_login/package.json +++ b/email_login/package.json @@ -1,6 +1,6 @@ { "name": "email_login", - "version": "0.23.3", + "version": "0.23.4", "private": true, "dependencies": { "@criptext/electron-better-ipc": "^0.1.2-rc5", diff --git a/email_mailbox/package.json b/email_mailbox/package.json index 1fd7fdaf4..d78a9dfad 100644 --- a/email_mailbox/package.json +++ b/email_mailbox/package.json @@ -1,6 +1,6 @@ { "name": "email_mailbox", - "version": "0.23.3", + "version": "0.23.4", "private": true, "dependencies": { "@criptext/electron-better-ipc": "^0.1.2-rc5", diff --git a/email_mailbox/src/components/SettingBlockProfile.js b/email_mailbox/src/components/SettingBlockProfile.js index e0e904628..75c48e44d 100644 --- a/email_mailbox/src/components/SettingBlockProfile.js +++ b/email_mailbox/src/components/SettingBlockProfile.js @@ -48,7 +48,7 @@ const renderBlockAvatar = props => ( type="file" name="fileAvatar" id="fileAvatar" - accept="image/*" + accept="image/x-png,image/jpeg" onChange={props.onChangeAvatar} />