Skip to content

Commit bc8d4b4

Browse files
author
Erika Perugachi
authored
Merge pull request #1083 from erikaperugachi/logout
Composer: fix drag and drop folder and add UI to bubble contact to edit
2 parents 38bb1b6 + 1a3bf40 commit bc8d4b4

File tree

8 files changed

+88
-55
lines changed

8 files changed

+88
-55
lines changed

electron_app/src/eventQueueManager.js

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
const { getPendingEvents, deletePendingEventsByIds } = require('./DBManager');
22
const { mailformedEventRegex } = require('./utils/RegexUtils');
3-
const globalManager = require('./globalManager');
43
let clientManager;
54

65
const QUEUE_BATCH = 3;
@@ -9,28 +8,26 @@ const SUCCESS_STATUS = 200;
98
let isProcessingQueue = false;
109

1110
const processEventsQueue = async () => {
12-
if (globalManager.internetConnection.getStatus() === true) {
13-
if (isProcessingQueue) return;
14-
isProcessingQueue = true;
11+
if (isProcessingQueue) return;
12+
isProcessingQueue = true;
1513

16-
if (!clientManager) {
17-
clientManager = require('./clientManager');
18-
}
19-
const queuedEvents = await getPendingEvents();
20-
while (queuedEvents.length > 0) {
21-
const batch = queuedEvents.splice(0, QUEUE_BATCH);
22-
const { ids, parsedEvents } = await removeMalformedEvents(batch);
23-
if (!parsedEvents.length) continue;
14+
if (!clientManager) {
15+
clientManager = require('./clientManager');
16+
}
17+
const queuedEvents = await getPendingEvents();
18+
while (queuedEvents.length > 0) {
19+
const batch = queuedEvents.splice(0, QUEUE_BATCH);
20+
const { ids, parsedEvents } = await removeMalformedEvents(batch);
21+
if (!parsedEvents.length) continue;
2422

25-
const { status } = await clientManager.pushPeerEvents(parsedEvents);
26-
if (status === MALFORMED_EVENT_STATUS) {
27-
continue;
28-
} else if (status === SUCCESS_STATUS) {
29-
await deletePendingEventsByIds(ids);
30-
}
23+
const { status } = await clientManager.pushPeerEvents(parsedEvents);
24+
if (status === MALFORMED_EVENT_STATUS) {
25+
continue;
26+
} else if (status === SUCCESS_STATUS) {
27+
await deletePendingEventsByIds(ids);
3128
}
32-
isProcessingQueue = false;
3329
}
30+
isProcessingQueue = false;
3431
};
3532

3633
const removeMalformedEvents = async batch => {

email_composer/src/components/tagrecipient.scss

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424

2525
&.tag-error {
2626
color: #fff;
27-
font-weight: 500;
2827
border: solid 1px transparent;
2928

3029
> .icon-exit {
@@ -83,17 +82,21 @@
8382

8483
/* THEME
8584
----------------------------- */
86-
@mixin themable($_THEME, $_BACKGROUND_COLOR_TAG_APP_DOMAIN, $_BORDER_COLOR_TAG_APP_DOMAIN, $_COLOR_TEXT_TAG, $_COLOR_TEXT_TAG_APP_DOMAIN, $_COLOR_ICON_TAG_APP_DOMAIN, $_BACKGROUND_COLOR_TAG_DEFAULT, $_BORDER_COLOR_TAG_DEFAULT, $_COLOR_ICON_TAG_DEFAULT, $_BACKGROUND_COLOR_TAG_ERROR, $_BORDER_COLOR_TAG_ERROR, $_COLOR_ICON_TAG_ERROR){
85+
@mixin themable($_THEME, $_BACKGROUND_COLOR_TAG_APP_DOMAIN, $_BORDER_COLOR_TAG_APP_DOMAIN, $_BORDER_COLOR_TAG_APP_DOMAIN_EDIT, $_COLOR_TEXT_TAG_APP_DOMAIN, $_COLOR_ICON_TAG_APP_DOMAIN, $_BACKGROUND_COLOR_TAG_DEFAULT, $_BORDER_COLOR_TAG_DEFAULT, $_BORDER_COLOR_TAG_DEFAULT_EDIT, $_COLOR_TEXT_TAG_DEFAULT, $_COLOR_ICON_TAG_DEFAULT, $_BACKGROUND_COLOR_TAG_ERROR, $_BORDER_COLOR_TAG_ERROR, $_BORDER_COLOR_TAG_ERROR_EDIT, $_COLOR_TEXT_TAG_ERROR, $_COLOR_ICON_TAG_ERROR){
8786
[data-theme^=#{$_THEME}],
8887
[data-theme] [data-theme^=#{$_THEME}] {
8988
.tag-item{
90-
color: $_COLOR_TEXT_TAG;
89+
color: $_COLOR_TEXT_TAG_DEFAULT;
9190

9291
&.tag-app-domain{
9392
background-color: $_BACKGROUND_COLOR_TAG_APP_DOMAIN;
9493
border-color: $_BORDER_COLOR_TAG_APP_DOMAIN;
9594
color: $_COLOR_TEXT_TAG_APP_DOMAIN;
9695

96+
&.tag-expanded{
97+
border-color: $_BORDER_COLOR_TAG_APP_DOMAIN_EDIT;
98+
}
99+
97100
a.icon-exit{
98101
color: $_COLOR_ICON_TAG_APP_DOMAIN;
99102
}
@@ -103,6 +106,10 @@
103106
background-color: $_BACKGROUND_COLOR_TAG_DEFAULT;
104107
border-color: $_BORDER_COLOR_TAG_DEFAULT;
105108

109+
&.tag-expanded{
110+
border-color: $_BORDER_COLOR_TAG_DEFAULT_EDIT;
111+
}
112+
106113
a.icon-exit{
107114
color: $_COLOR_ICON_TAG_DEFAULT;
108115
}
@@ -111,6 +118,11 @@
111118
&.tag-error {
112119
background-color: $_BACKGROUND_COLOR_TAG_ERROR;
113120
border-color: $_BORDER_COLOR_TAG_ERROR;
121+
color: $_COLOR_TEXT_TAG_ERROR;
122+
123+
&.tag-expanded{
124+
border-color: $_BORDER_COLOR_TAG_ERROR_EDIT;
125+
}
114126

115127
a.icon-exit{
116128
color: $_COLOR_ICON_TAG_ERROR;
@@ -120,5 +132,5 @@
120132
}
121133
}
122134

123-
@include themable($_THEME_LIGHT, $_BACKGROUND_COLOR_TAG_APP_DOMAIN_LIGHT, $_BORDER_COLOR_TAG_APP_DOMAIN_LIGHT, $_COLOR_TEXT_TAG_LIGHT, $_COLOR_TEXT_TAG_APP_DOMAIN_LIGHT, $_COLOR_ICON_TAG_APP_DOMAIN_LIGHT, $_BACKGROUND_COLOR_TAG_DEFAULT_LIGHT,$_BORDER_COLOR_TAG_DEFAULT_LIGHT, $_COLOR_ICON_TAG_DEFAULT_LIGHT, $_BACKGROUND_COLOR_TAG_ERROR_LIGHT, $_BORDER_COLOR_TAG_ERROR_LIGHT, $_COLOR_ICON_TAG_ERROR_LIGHT);
124-
@include themable($_THEME_DARK, $_BACKGROUND_COLOR_TAG_APP_DOMAIN_DARK, $_BORDER_COLOR_TAG_APP_DOMAIN_DARK, $_COLOR_TEXT_TAG_DARK, $_COLOR_TEXT_TAG_APP_DOMAIN_DARK, $_COLOR_ICON_TAG_APP_DOMAIN_DARK, $_BACKGROUND_COLOR_TAG_DEFAULT_DARK, $_BORDER_COLOR_TAG_DEFAULT_DARK, $_COLOR_ICON_TAG_DEFAULT_DARK, $_BACKGROUND_COLOR_TAG_ERROR_DARK, $_BORDER_COLOR_TAG_ERROR_DARK, $_COLOR_ICON_TAG_ERROR_DARK);
135+
@include themable($_THEME_LIGHT, $_BACKGROUND_COLOR_TAG_APP_DOMAIN_LIGHT, $_BORDER_COLOR_TAG_APP_DOMAIN_LIGHT, $_BORDER_COLOR_TAG_APP_DOMAIN_EDIT_LIGHT, $_COLOR_TEXT_TAG_APP_DOMAIN_LIGHT, $_COLOR_ICON_TAG_APP_DOMAIN_LIGHT, $_BACKGROUND_COLOR_TAG_DEFAULT_LIGHT,$_BORDER_COLOR_TAG_DEFAULT_LIGHT, $_BORDER_COLOR_TAG_DEFAULT_EDIT_LIGHT, $_COLOR_TEXT_TAG_DEFAULT_LIGHT, $_COLOR_ICON_TAG_DEFAULT_LIGHT, $_BACKGROUND_COLOR_TAG_ERROR_LIGHT, $_BORDER_COLOR_TAG_ERROR_LIGHT, $_BORDER_COLOR_TAG_ERROR_EDIT_LIGHT, $_COLOR_TEXT_TAG_ERROR_LIGHT, $_COLOR_ICON_TAG_ERROR_LIGHT);
136+
@include themable($_THEME_DARK, $_BACKGROUND_COLOR_TAG_APP_DOMAIN_DARK, $_BORDER_COLOR_TAG_APP_DOMAIN_DARK, $_BORDER_COLOR_TAG_APP_DOMAIN_EDIT_DARK, $_COLOR_TEXT_TAG_APP_DOMAIN_DARK, $_COLOR_ICON_TAG_APP_DOMAIN_DARK, $_BACKGROUND_COLOR_TAG_DEFAULT_DARK, $_BORDER_COLOR_TAG_DEFAULT_DARK, $_BORDER_COLOR_TAG_DEFAULT_EDIT_DARK, $_COLOR_TEXT_TAG_DEFAULT_DARK, $_COLOR_ICON_TAG_DEFAULT_DARK, $_BACKGROUND_COLOR_TAG_ERROR_DARK, $_BORDER_COLOR_TAG_ERROR_DARK, $_BORDER_COLOR_TAG_ERROR_EDIT_DARK, $_COLOR_TEXT_TAG_ERROR_DARK, $_COLOR_ICON_TAG_ERROR_DARK);

email_composer/src/containers/Composer.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,13 @@ class ComposerWrapper extends Component {
380380
isDragActive: false
381381
});
382382
const files = this.getFilesFromEvent(e);
383-
this.setFiles(files);
383+
const filesFiltered = [...files].filter(item => {
384+
return !!item.type;
385+
});
386+
387+
if (filesFiltered.length) {
388+
this.setFiles(filesFiltered);
389+
}
384390
};
385391

386392
setFiles = newFiles => {

email_composer/src/styles/index.scss

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ $_BACKGROUND_COLOR_MAIN_LIGHT: white;
2626
$_BACKGROUND_COLOR_MAIN_DISABLE_LIGHT: rgba(255, 255, 255, 0.5);
2727
$_BACKGROUND_COLOR_PANEL_LIGHT: white;
2828
$_BACKGROUND_COLOR_PANEL_BUTTON_HOVER_LIGHT: #f0f0f0;
29-
$_BACKGROUND_COLOR_TAG_APP_DOMAIN_LIGHT: #ebf6ff;
30-
$_BACKGROUND_COLOR_TAG_DEFAULT_LIGHT: #f4f4f4;
31-
$_BACKGROUND_COLOR_TAG_ERROR_LIGHT: #e27c7c;
29+
$_BACKGROUND_COLOR_TAG_APP_DOMAIN_LIGHT: #dbf0ff;
30+
$_BACKGROUND_COLOR_TAG_DEFAULT_LIGHT: #f0f0f0;
31+
$_BACKGROUND_COLOR_TAG_ERROR_LIGHT: #fbabab;
3232
$_BACKGROUND_COLOR_SUGGESTION_ITEM_LIGHT: #fdfdfd;
3333
$_BACKGROUND_COLOR_SUGGESTION_ITEM_HOVER_LIGHT: #f6f6f6;
3434
$_BACKGROUND_COLOR_DROPFILE_LIGHT: rgba(255, 255, 255, 0.85);
@@ -39,24 +39,28 @@ $_BACKGROUND_COLOR_SCROLLBAR_LIGHT: rgba(228, 228, 228, 0.5);
3939
$_BACKGROUND_COLOR_SCROLLBAR_CONTROL_LIGHT: #b0b2b479;
4040
$_BORDER_COLOR_SEPARATE_LIGHT: #e8e8e8;
4141
$_BORDER_COLOR_PANEL_SEPARATE_LIGHT: #d7e0e2;
42-
$_BORDER_COLOR_TAG_APP_DOMAIN_LIGHT: #acd8fc;
43-
$_BORDER_COLOR_TAG_DEFAULT_LIGHT: #d4d4d4;
44-
$_BORDER_COLOR_TAG_ERROR_LIGHT: #cc0000;
42+
$_BORDER_COLOR_TAG_APP_DOMAIN_LIGHT: #dbf0ff;
43+
$_BORDER_COLOR_TAG_APP_DOMAIN_EDIT_LIGHT: #75c1ff;
44+
$_BORDER_COLOR_TAG_DEFAULT_LIGHT: #f0f0f0;
45+
$_BORDER_COLOR_TAG_DEFAULT_EDIT_LIGHT: #9b9b9b;
46+
$_BORDER_COLOR_TAG_ERROR_LIGHT: #fbabab;
47+
$_BORDER_COLOR_TAG_ERROR_EDIT_LIGHT: #71252d;
4548
$_BORDER_COLOR_SUGGESTION_LIGHT: #ececee;
4649
$_BORDER_COLOR_ATTACHMENT_LIGHT: #D8D8D8;
4750
$_BORDER_COLOR_DELETE_ATTACHMENT_LIGHT: #cdcdcd;
4851
$_BORDER_COLOR_POPUP_INPUT_LIGHT: #e3e5e6;
4952
$_COLOR_ICON_BUTTON_LIGHT: #6e6e6e;
50-
$_COLOR_ICON_TAG_APP_DOMAIN_LIGHT: #9b9b9b;
53+
$_COLOR_ICON_TAG_APP_DOMAIN_LIGHT: #003c6a;
5154
$_COLOR_ICON_TAG_DEFAULT_LIGHT: #9b9b9b;
52-
$_COLOR_ICON_TAG_ERROR_LIGHT: #b40000;
55+
$_COLOR_ICON_TAG_ERROR_LIGHT: #71252d;
5356
$_COLOR_TEXT_RECIPIENT_LABEL_LIGHT: black;
5457
$_COLOR_TEXT_RECIPIENT_INPUT_LIGHT: #6a707e;
5558
$_COLOR_TEXT_SUBJECT_LIGHT: black;
5659
$_COLOR_TEXT_BODY_LIGHT: black;
5760
$_COLOR_TEXT_PANEL_LIGHT: #6e6e6e;
58-
$_COLOR_TEXT_TAG_LIGHT: #4a4a4a;
59-
$_COLOR_TEXT_TAG_APP_DOMAIN_LIGHT: #4a4a4a;
61+
$_COLOR_TEXT_TAG_APP_DOMAIN_LIGHT: #003c6a;
62+
$_COLOR_TEXT_TAG_DEFAULT_LIGHT: #232323;
63+
$_COLOR_TEXT_TAG_ERROR_LIGHT: #71252d;
6064
$_COLOR_TEXT_SUGGESTION_LIGHT: #6a707e;
6165
$_COLOR_TEXT_DROPFILE_LIGHT: #4a4a4a;
6266
$_COLOR_TEXT_DELETE_ATTACHMENT_LIGHT: black;
@@ -86,8 +90,11 @@ $_BACKGROUND_COLOR_SCROLLBAR_CONTROL_DARK: #505155d7;
8690
$_BORDER_COLOR_SEPARATE_DARK: #3a3d41;
8791
$_BORDER_COLOR_PANEL_SEPARATE_DARK: #3a3d41;
8892
$_BORDER_COLOR_TAG_APP_DOMAIN_DARK: #002b57;
93+
$_BORDER_COLOR_TAG_APP_DOMAIN_EDIT_DARK: #75c1ff;
8994
$_BORDER_COLOR_TAG_DEFAULT_DARK: #34363c;
95+
$_BORDER_COLOR_TAG_DEFAULT_EDIT_DARK: #979797;
9096
$_BORDER_COLOR_TAG_ERROR_DARK: #a73d42;
97+
$_BORDER_COLOR_TAG_ERROR_EDIT_DARK: #f07373;
9198
$_BORDER_COLOR_SUGGESTION_DARK: transparent;
9299
$_BORDER_COLOR_ATTACHMENT_DARK: #313339;
93100
$_BORDER_COLOR_DELETE_ATTACHMENT_DARK: #808188;
@@ -101,8 +108,9 @@ $_COLOR_TEXT_RECIPIENT_INPUT_DARK: white;
101108
$_COLOR_TEXT_SUBJECT_DARK: white;
102109
$_COLOR_TEXT_BODY_DARK: white;
103110
$_COLOR_TEXT_PANEL_DARK: #dddcdc;
104-
$_COLOR_TEXT_TAG_DARK: white;
105111
$_COLOR_TEXT_TAG_APP_DOMAIN_DARK: #a3d1f4;
112+
$_COLOR_TEXT_TAG_DEFAULT_DARK: white;
113+
$_COLOR_TEXT_TAG_ERROR_DARK: #ffe0e0;
106114
$_COLOR_TEXT_SUGGESTION_DARK: white;
107115
$_COLOR_TEXT_DROPFILE_DARK: white;
108116
$_COLOR_TEXT_DELETE_ATTACHMENT_DARK: white;

email_mailbox/src/components/Email.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,10 @@ const renderEmailInfoExpand = props => (
121121
<div className="email-info-content-line">
122122
<div className="email-info-content-to">
123123
{renderEmailStatus(props.email.status)}
124-
<span>{`To ${showContacts(props.email.to)}`}</span>
124+
<span>{`To ${showContacts([
125+
...props.email.to,
126+
...props.email.cc
127+
])}`}</span>
125128
<div className="email-info-content-to-more">
126129
<span onClick={props.onTooglePopOverEmailMoreInfo}>
127130
{string.mailbox.more}
@@ -191,7 +194,7 @@ const renderEmailInfoExpand = props => (
191194
const showContacts = contacts => {
192195
return contacts.reduce((result, contact, index) => {
193196
if (contacts.length > 1) {
194-
const name = contact.name || contact.email;
197+
const name = contact.name || contact.email.split('@')[0];
195198
const firstname = `${index !== 0 ? ', ' : ''}${name.split(' ')[0]}`;
196199
return `${result}${firstname}`;
197200
}

email_mailbox/src/selectors/emails.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ const defineEmails = (emails, contacts, emailIds) => {
2121
const to = defineContact(contacts, toIds);
2222
const ccIds = email.cc;
2323
const cc = defineContact(contacts, ccIds);
24-
const bccIds = email.cc;
24+
const bccIds = email.bcc;
2525
const bcc = defineContact(contacts, bccIds);
2626
const subject = email.subject || `(${string.mailbox.empty_subject})`;
2727
return { ...email, from, to, toIds, cc, ccIds, bcc, bccIds, subject };

email_mailbox/src/selectors/labels.js

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { createSelector } from 'reselect';
2-
import { IconLabels } from './../utils/const';
2+
import { IconLabels, sidebarItemsOrder } from './../utils/const';
33
import { toLowerCaseWithoutSpaces } from './../utils/StringUtils';
44
import { LabelType } from '../utils/electronInterface';
55
import string from './../lang';
@@ -54,21 +54,19 @@ const defineCustomLabels = labels => {
5454
};
5555

5656
const defineSideBarItems = labels => {
57-
const sideBarItems = labels
58-
.valueSeq()
59-
.filter(label => label.get('visible') && label.get('type') === 'system')
60-
.map(label => {
61-
const idText = toLowerCaseWithoutSpaces(label.get('text'));
62-
return {
63-
id: label.get('id'),
64-
icon: IconLabels[label.get('id')]
65-
? IconLabels[label.get('id')].icon
66-
: 'icon-tag',
67-
text: string.labelsItems[idText],
68-
badge: label.get('badge') || null
69-
};
70-
})
71-
.toJS();
57+
const sideBarItems = sidebarItemsOrder.map(id => {
58+
const label = labels.get(`${id}`);
59+
if (!label) return {};
60+
const idText = toLowerCaseWithoutSpaces(label.get('text'));
61+
return {
62+
id: label.get('id'),
63+
icon: IconLabels[label.get('id')]
64+
? IconLabels[label.get('id')].icon
65+
: 'icon-tag',
66+
text: string.labelsItems[idText],
67+
badge: label.get('badge') || null
68+
};
69+
});
7270
const allMailIdText = toLowerCaseWithoutSpaces(IconLabels.allmail.text);
7371
const allMailItem = {
7472
id: -1,

email_mailbox/src/utils/const.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,15 @@ export const avatarBaseUrl =
1414

1515
export const unsentText = 'This content was unsent';
1616

17+
export const sidebarItemsOrder = [
18+
LabelType.inbox.id,
19+
LabelType.sent.id,
20+
LabelType.draft.id,
21+
LabelType.starred.id,
22+
LabelType.spam.id,
23+
LabelType.trash.id
24+
];
25+
1726
export const IconLabels = {
1827
[LabelType.inbox.id]: {
1928
icon: 'icon-mailbox'

0 commit comments

Comments
 (0)