@@ -89,7 +89,7 @@ var Gmail = function() {
89
89
var dom = api . dom . inbox_content ( ) ;
90
90
var box = dom . find ( "[gh=tl]" ) . find ( '.nn' ) ;
91
91
92
- return box . length == 0 ;
92
+ return box . length == 0 ;
93
93
}
94
94
95
95
@@ -126,13 +126,13 @@ var Gmail = function() {
126
126
127
127
api . dom . email_subject = function ( ) {
128
128
var e = $ ( ".hP" ) ;
129
-
129
+
130
130
for ( var i = 0 ; i < e . length ; i ++ ) {
131
131
if ( $ ( e [ i ] ) . is ( ':visible' ) ) {
132
132
return $ ( e [ i ] ) ;
133
133
}
134
134
} ;
135
-
135
+
136
136
return $ ( ) ;
137
137
}
138
138
@@ -153,10 +153,10 @@ var Gmail = function() {
153
153
if ( api . get . current_page ( ) != null && ! api . check . is_preview_pane ( ) ) {
154
154
return false ;
155
155
}
156
-
156
+
157
157
var items = $ ( '.ii.gt' ) ;
158
158
var ids = [ ] ;
159
-
159
+
160
160
for ( var i = 0 ; i < items . length ; i ++ ) {
161
161
var mail_id = items [ i ] . getAttribute ( 'class' ) . split ( ' ' ) [ 2 ] ;
162
162
if ( mail_id != 'undefined' && mail_id != undefined ) {
@@ -165,7 +165,7 @@ var Gmail = function() {
165
165
}
166
166
}
167
167
}
168
-
168
+
169
169
return ids . length > 0 ;
170
170
}
171
171
@@ -195,7 +195,7 @@ var Gmail = function() {
195
195
}
196
196
return [ ] ;
197
197
}
198
-
198
+
199
199
api . get . compose_ids = function ( ) {
200
200
var ret = [ ] ;
201
201
var dom = $ ( ".AD [name=draft]" ) ;
@@ -531,7 +531,7 @@ var Gmail = function() {
531
531
532
532
533
533
api . tools . parse_actions = function ( params ) {
534
-
534
+
535
535
if ( params . url . act == 'fup' || params . url . act == 'fuv' || typeof params . body == "object" ) {
536
536
// a way to stop observers when files are being uploaded. See issue #22
537
537
return ;
@@ -576,7 +576,7 @@ var Gmail = function() {
576
576
'refresh' : 'refresh' ,
577
577
'rtr' : 'restore_message_in_thread' ,
578
578
'open_email' : 'open_email' ,
579
- 'toggle_threads' : 'toggle_threads'
579
+ 'toggle_threads' : 'toggle_threads'
580
580
}
581
581
582
582
if ( typeof params . url . ik == 'string' ) {
@@ -902,7 +902,7 @@ var Gmail = function() {
902
902
top . css ( 'visibility' , 'visible' ) . fadeTo ( time , 0 , function ( ) {
903
903
$ ( this ) . css ( "visibility" , "hidden" ) ;
904
904
$ ( this ) . css ( "opacity" , "" ) ;
905
- } ) ;
905
+ } ) ;
906
906
}
907
907
else {
908
908
top . css ( 'visibility' , 'visible' ) ;
@@ -974,6 +974,107 @@ var Gmail = function() {
974
974
}
975
975
976
976
977
+ api . get . displayed_email_data = function ( ) {
978
+ var email_data = api . get . email_data ( ) ;
979
+ var displayed_email_data = { } ;
980
+
981
+ if ( api . check . is_conversation_view ( ) ) {
982
+ displayed_email_data = email_data ;
983
+
984
+ var threads = displayed_email_data . threads ;
985
+ var total_threads = displayed_email_data . total_threads ;
986
+
987
+ var hash = window . location . hash . split ( '#' ) [ 1 ] || '' ;
988
+ var is_in_trash = ( hash . indexOf ( 'trash' ) === 0 ) ;
989
+
990
+ for ( id in threads ) {
991
+ var email = threads [ id ] ;
992
+ var keep_email = ( is_in_trash ) ? email . is_deleted : ! email . is_deleted ;
993
+
994
+ if ( ! keep_email ) {
995
+ delete threads [ id ] ;
996
+ total_threads . splice ( total_threads . indexOf ( id ) , 1 ) ;
997
+ displayed_email_data . total_emails -- ;
998
+ // TODO: remove people involved only in this email.
999
+ }
1000
+ }
1001
+ }
1002
+ else { // Supposing only one displayed email.
1003
+ for ( id in email_data . threads ) {
1004
+ var displayed_email_element = $ ( '.ii.gt[class*="' + id + '"]' ) ;
1005
+
1006
+ if ( displayed_email_element . length > 0 ) {
1007
+ var email = email_data . threads [ id ] ;
1008
+
1009
+ displayed_email_data . first_email = id ;
1010
+ displayed_email_data . last_email = id ;
1011
+ displayed_email_data . subject = email_data . subject ;
1012
+
1013
+ displayed_email_data . threads = { } ;
1014
+ displayed_email_data . threads [ id ] = email ;
1015
+ displayed_email_data . total_emails = 1 ;
1016
+ displayed_email_data . total_threads = [ id ] ;
1017
+
1018
+ displayed_email_data . people_involved = [ ] ;
1019
+
1020
+ displayed_email_data . people_involved . push (
1021
+ [ email . from , email . from_email ]
1022
+ ) ;
1023
+
1024
+ email . to . forEach ( function ( recipient ) {
1025
+ var address = api . tools . extract_email_address ( recipient ) ;
1026
+ var name = api . tools . extract_name ( recipient . replace ( address , '' ) ) || '' ;
1027
+
1028
+ displayed_email_data . people_involved . push (
1029
+ [ name , address ]
1030
+ ) ;
1031
+ } ) ;
1032
+
1033
+ break ;
1034
+ }
1035
+ }
1036
+ }
1037
+
1038
+ return displayed_email_data ;
1039
+ }
1040
+
1041
+
1042
+ api . check . is_conversation_view = function ( ) {
1043
+ var flag_name = 'bx_vmb' ;
1044
+ var flag_value = undefined ;
1045
+
1046
+ var array_with_flag = api . tracker . globals [ 17 ] [ 5 ] [ 1 ] ;
1047
+
1048
+ for ( var i = 0 ; i < array_with_flag . length ; i ++ ) {
1049
+ var current = array_with_flag [ i ] ;
1050
+
1051
+ if ( current [ 0 ] === flag_name ) {
1052
+ flag_value = current [ 1 ] ;
1053
+
1054
+ break ;
1055
+ }
1056
+ }
1057
+
1058
+ return flag_value === '0' || flag_value === undefined ;
1059
+ }
1060
+
1061
+
1062
+ api . tools . extract_email_address = function ( str ) {
1063
+ var regex = / [ \+ a - z 0 - 9 . _ - ] + @ [ a - z 0 - 9 . _ - ] + \. [ a - z 0 - 9 . _ - ] + / gi;
1064
+ var matches = ( str ) ? str . match ( regex ) : undefined ;
1065
+
1066
+ return ( matches ) ? matches [ 0 ] : undefined ;
1067
+ }
1068
+
1069
+
1070
+ api . tools . extract_name = function ( str ) {
1071
+ var regex = / [ a - z ' . _ - \s ] + / gi;
1072
+ var matches = ( str ) ? str . match ( regex ) : undefined ;
1073
+
1074
+ return ( matches && matches [ 0 ] ) ? matches [ 0 ] . trim ( ) : undefined ;
1075
+ }
1076
+
1077
+
977
1078
api . tools . i18n = function ( label ) {
978
1079
var locale = api . tracker . globals [ 17 ] [ 9 ] [ 8 ] ;
979
1080
var dictionary ;
0 commit comments