diff --git a/electron_app/package.json b/electron_app/package.json
index 21e8cd7ec..f96e9511e 100644
--- a/electron_app/package.json
+++ b/electron_app/package.json
@@ -1,6 +1,6 @@
{
"name": "criptext",
- "version": "0.5.0",
+ "version": "0.6.0",
"author": {
"name": "Criptext Inc.",
"email": "info@criptext.com",
diff --git a/electron_app/src/models.js b/electron_app/src/models.js
index ac48c5d5f..fa68b9de4 100644
--- a/electron_app/src/models.js
+++ b/electron_app/src/models.js
@@ -102,12 +102,12 @@ const createEmailColumns = table => {
table.string('subject').notNullable();
table.text('content').notNullable();
table.string('preview', LARGE_STRING_SIZE).notNullable();
- table.timestamp('date').notNullable();
+ table.dateTime('date').notNullable();
table.integer('status').notNullable();
table.boolean('unread').notNullable();
table.boolean('secure').notNullable();
table.boolean('isMuted').notNullable();
- table.timestamp('unsendDate');
+ table.dateTime('unsendDate');
};
const createEmailLabelColumns = table => {
diff --git a/electron_app/src/windows/menu.js b/electron_app/src/windows/menu.js
index 9f3487fac..d0474c40d 100644
--- a/electron_app/src/windows/menu.js
+++ b/electron_app/src/windows/menu.js
@@ -65,6 +65,20 @@ const template = [
label: 'Close',
accelerator: 'CmdOrCtrl+W',
role: 'close'
+ },
+ {
+ label: 'Developer',
+ type: 'submenu',
+ submenu: [
+ {
+ label: 'Toggle Developer Tools',
+ accelerator:
+ process.platform === 'darwin' ? 'Alt+Command+I' : 'Ctrl+Shift+I',
+ click(item, focusedWindow) {
+ if (focusedWindow) focusedWindow.webContents.toggleDevTools();
+ }
+ }
+ ]
}
]
}
@@ -120,7 +134,7 @@ if (process.platform === 'darwin') {
]
});
// Window menu.
- template[2].submenu.push(
+ template[3].submenu.push(
{
type: 'separator'
},
diff --git a/email_mailbox/src/actions/emails.js b/email_mailbox/src/actions/emails.js
index 069d5ef42..e132f2a19 100644
--- a/email_mailbox/src/actions/emails.js
+++ b/email_mailbox/src/actions/emails.js
@@ -10,9 +10,8 @@ import {
} from '../utils/electronInterface';
import { loadContacts } from './contacts';
import { updateLabelSuccess } from './labels';
-import { EmailStatus, unsentText } from '../utils/const';
+import { EmailStatus } from '../utils/const';
import { getCriptextRecipients } from '../utils/EmailUtils';
-import { removeHTMLTags } from '../utils/StringUtils';
export const addEmails = emails => {
return {
@@ -124,11 +123,11 @@ export const unsendEmail = params => {
await updateEmail({
key,
status: EmailStatus.UNSEND,
- content: unsentText,
- preview: removeHTMLTags(unsentText),
+ content: '',
+ preview: '',
unsendDate: Date.now()
});
- dispatch(unsendEmailOnSuccess(emailId));
+ dispatch(unsendEmailOnSuccess(emailId, Date.now()));
}
} catch (e) {
// To do
@@ -136,7 +135,8 @@ export const unsendEmail = params => {
};
};
-export const unsendEmailOnSuccess = emailId => ({
+export const unsendEmailOnSuccess = (emailId, unsendDate) => ({
type: Email.UNSEND,
- emailId
+ emailId,
+ unsendDate
});
diff --git a/email_mailbox/src/components/ButtonUnsend.js b/email_mailbox/src/components/ButtonUnsend.js
index 0b6ea9791..edbe18607 100644
--- a/email_mailbox/src/components/ButtonUnsend.js
+++ b/email_mailbox/src/components/ButtonUnsend.js
@@ -8,9 +8,9 @@ const ButtonUnsend = props => (
'button-unsend ' +
(props.displayLoading ? 'button-unsend-loading' : 'button-unsend-normal')
}
- onClick={props.onClick}
+ onClick={ev => props.onClick(ev)}
>
- {props.displayLoading ? renderLoading() : renderButton(props.onClick)}
+ {props.displayLoading ? renderLoading() : renderButton()}
);
diff --git a/email_mailbox/src/components/ButtonUnsendWrapper.js b/email_mailbox/src/components/ButtonUnsendWrapper.js
index 614ca4b09..af471d039 100644
--- a/email_mailbox/src/components/ButtonUnsendWrapper.js
+++ b/email_mailbox/src/components/ButtonUnsendWrapper.js
@@ -14,23 +14,23 @@ class ButtonUnsendWrapper extends Component {
return (
This content was unsent
'; +export const unsentText = 'This content was unsent'; export const IconLabels = { [LabelType.inbox.id]: { diff --git a/email_mailbox/src/utils/electronEventInterface.js b/email_mailbox/src/utils/electronEventInterface.js index 422579314..5cf842578 100644 --- a/email_mailbox/src/utils/electronEventInterface.js +++ b/email_mailbox/src/utils/electronEventInterface.js @@ -1,4 +1,3 @@ -/*global process*/ import { acknowledgeEvents, createEmail, @@ -21,10 +20,9 @@ import { validateEmailStatusToSet, checkEmailIsTo } from './EmailUtils'; -import { SocketCommand, appDomain, EmailStatus, unsentText } from './const'; +import { SocketCommand, appDomain, EmailStatus } from './const'; import Messages from './../data/message'; import { MessageType } from './../components/Message'; -import { removeHTMLTags } from './StringUtils'; const EventEmitter = window.require('events'); const electron = window.require('electron'); @@ -56,9 +54,7 @@ export const handleEvent = incomingEvent => { return handlePeerUserNameChanged(incomingEvent); } default: { - return process.env.NODE_ENV === 'development' - ? alert('Unhandled socket command: ', incomingEvent.cmd) - : null; + return; } } }; @@ -139,51 +135,53 @@ const handleNewMessageEvent = async ({ rowid, params }) => { }; const handleEmailTrackingUpdate = async ({ rowid, params }) => { - const [metadataKey, recipientId] = [params.metadataKey, params.from]; + const { date, metadataKey, type } = params; + const recipientId = params.from; const [email] = await getEmailByKey(metadataKey); if (email) { - const content = params.type === EmailStatus.UNSEND ? unsentText : null; - const preview = - params.type === EmailStatus.UNSEND ? removeHTMLTags(unsentText) : null; - const status = validateEmailStatusToSet(email.status, params.type); + const content = type === EmailStatus.UNSEND ? '' : null; + const preview = type === EmailStatus.UNSEND ? '' : null; + const status = validateEmailStatusToSet(email.status, type); + const unsendDate = type === EmailStatus.UNSEND ? date : null; await updateEmail({ key: metadataKey, status, content, - preview + preview, + unsendDate }); const isFromMe = recipientId === myAccount.recipientId; - const isOpened = params.type === EmailStatus.OPENED; + const isOpened = type === EmailStatus.OPENED; if (!isFromMe && isOpened) { const contactEmail = `${recipientId}@${appDomain}`; const [contact] = await getContactByEmails([contactEmail]); const feedItemParams = { - date: params.date, - type: params.type, + date, + type, emailId: email.id, contactId: contact.id }; await createFeedItem([feedItemParams]); } await setEventAsHandled(rowid); - emitter.emit(Event.EMAIL_TRACKING_UPDATE, email.id, params.type); + emitter.emit(Event.EMAIL_TRACKING_UPDATE, email.id, type, date); } }; const handlePeerEmailUnsend = async ({ rowid, params }) => { - const { metadataKey } = params; + const { metadataKey, date } = params; const [email] = await getEmailByKey(metadataKey); if (email) { const status = validateEmailStatusToSet(email.status, params.type); await updateEmail({ key: metadataKey, - content: unsentText, - preview: removeHTMLTags(unsentText), + content: '', + preview: '', status, - unsendDate: Date.now() + unsendDate: date }); await setEventAsHandled(rowid); - emitter.emit(Event.EMAIL_TRACKING_UPDATE, email.id, params.type); + emitter.emit(Event.EMAIL_TRACKING_UPDATE, email.id, params.type, date); } };