Skip to content

Commit b13d9dc

Browse files
author
g8g3
committed
Added api.check.is_conversation_view() and api.get.displayed_email_data() for conversation view turned off.
Added `api.tools.extract_email_address(str)` and `api.tools.extract_name(str)` for utility.
1 parent 6e05b15 commit b13d9dc

File tree

1 file changed

+89
-9
lines changed

1 file changed

+89
-9
lines changed

src/gmail.js

Lines changed: 89 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ var Gmail = function() {
8989
var dom = api.dom.inbox_content();
9090
var box = dom.find("[gh=tl]").find('.nn');
9191

92-
return box.length == 0;
92+
return box.length == 0;
9393
}
9494

9595

@@ -126,13 +126,13 @@ var Gmail = function() {
126126

127127
api.dom.email_subject = function () {
128128
var e = $(".hP");
129-
129+
130130
for(var i=0; i<e.length; i++) {
131131
if($(e[i]).is(':visible')) {
132132
return $(e[i]);
133133
}
134134
};
135-
135+
136136
return $();
137137
}
138138

@@ -153,10 +153,10 @@ var Gmail = function() {
153153
if(api.get.current_page() != null && !api.check.is_preview_pane()) {
154154
return false;
155155
}
156-
156+
157157
var items = $('.ii.gt');
158158
var ids = [];
159-
159+
160160
for(var i=0; i<items.length; i++) {
161161
var mail_id = items[i].getAttribute('class').split(' ')[2];
162162
if(mail_id != 'undefined' && mail_id != undefined) {
@@ -165,7 +165,7 @@ var Gmail = function() {
165165
}
166166
}
167167
}
168-
168+
169169
return ids.length > 0;
170170
}
171171

@@ -195,7 +195,7 @@ var Gmail = function() {
195195
}
196196
return [];
197197
}
198-
198+
199199
api.get.compose_ids = function() {
200200
var ret = [];
201201
var dom = $(".AD [name=draft]");
@@ -501,7 +501,7 @@ var Gmail = function() {
501501

502502

503503
api.tools.parse_actions = function(params) {
504-
504+
505505
if(params.url.act == 'fup' || params.url.act == 'fuv' || typeof params.body == "object") {
506506
// a way to stop observers when files are being uploaded. See issue #22
507507
return;
@@ -545,7 +545,7 @@ var Gmail = function() {
545545
'poll' : 'poll',
546546
'refresh' : 'refresh',
547547
'rtr' : 'restore_message_in_thread',
548-
'open_email' : 'open_email'
548+
'open_email' : 'open_email'
549549
}
550550

551551
if(typeof params.url.ik == 'string') {
@@ -910,6 +910,86 @@ var Gmail = function() {
910910
}
911911

912912

913+
api.get.displayed_email_data = function() {
914+
var email_data = api.get.email_data();
915+
var displayed_email_data = {};
916+
917+
if (api.check.is_conversation_view()) {
918+
displayed_email_data = email_data;
919+
}
920+
else { // Supposing only one displayed email.
921+
for (id in email_data.threads) {
922+
var displayed_email_element = $('.ii.gt[class*="' + id + '"]');
923+
924+
if (displayed_email_element.length > 0) {
925+
var thread = email_data.threads[id];
926+
927+
displayed_email_data.first_email = id;
928+
displayed_email_data.last_email = id;
929+
displayed_email_data.subject = email_data.subject;
930+
931+
displayed_email_data.threads = {};
932+
displayed_email_data.threads[id] = thread;
933+
displayed_email_data.total_emails = 1;
934+
displayed_email_data.total_threads = [id];
935+
936+
displayed_email_data.people_involved = [];
937+
938+
displayed_email_data.people_involved.push(
939+
[thread.from, thread.from_email]
940+
);
941+
942+
thread.to.forEach(function(recipient) {
943+
var address = api.tools.extract_email_address(recipient);
944+
var name = api.tools.extract_name(recipient.replace(address, ''));
945+
946+
displayed_email_data.people_involved.push(
947+
[name, address]
948+
);
949+
});
950+
951+
break;
952+
}
953+
}
954+
}
955+
956+
return displayed_email_data;
957+
}
958+
959+
960+
api.check.is_conversation_view = function() {
961+
var flag = api.tracker.globals[17][5][1][57][1];
962+
var check = undefined;
963+
964+
if (flag !== undefined) {
965+
var values = {
966+
'0': true,
967+
'1': false
968+
}
969+
970+
check = values[flag];
971+
}
972+
973+
return check;
974+
}
975+
976+
977+
api.tools.extract_email_address = function(str) {
978+
var regex = /[\+a-z0-9._-]+@[a-z0-9._-]+\.[a-z0-9._-]+/gi;
979+
var matches = (str) ? str.match(regex) : undefined;
980+
981+
return (matches) ? matches[0] : undefined;
982+
}
983+
984+
985+
api.tools.extract_name = function(str) {
986+
var regex = /[a-z'._-\s]+/gi;
987+
var matches = (str) ? str.match(regex) : undefined;
988+
989+
return (matches && matches[0]) ? matches[0].trim() : undefined;
990+
}
991+
992+
913993
api.tools.i18n = function(label) {
914994
var locale = api.tracker.globals[17][9][8];
915995
var dictionary;

0 commit comments

Comments
 (0)