@@ -19,11 +19,6 @@ define(function(require) {
1919 require ( 'views/helper' ) ;
2020
2121 Radio . ui . on ( 'folder:show' , loadFolder ) ;
22- Radio . ui . on ( 'message:load' , function ( account , folder , messageId ,
23- options ) {
24- //FIXME: don't rely on global state vars
25- loadMessage ( account , messageId , options ) ;
26- } ) ;
2722
2823 var composerVisible = false ;
2924
@@ -35,7 +30,6 @@ define(function(require) {
3530 */
3631 function loadFolder ( account , folder , noSelect ) {
3732 Radio . ui . trigger ( 'composer:leave' ) ;
38- Radio . ui . trigger ( 'messagecontent:show' ) ;
3933
4034 if ( require ( 'state' ) . messagesLoading !== null ) {
4135 require ( 'state' ) . messagesLoading . abort ( ) ;
@@ -46,29 +40,26 @@ define(function(require) {
4640
4741 // Set folder active
4842 Radio . folder . trigger ( 'setactive' , account , folder ) ;
43+ Radio . ui . trigger ( 'content:loading' ) ;
4944 Radio . ui . trigger ( 'messagesview:messages:reset' ) ;
50- $ ( '#mail-messages' )
51- . addClass ( 'icon-loading' ) ;
5245
5346 $ ( '#load-new-mail-messages' ) . hide ( ) ;
5447 $ ( '#load-more-mail-messages' ) . hide ( ) ;
5548
5649 if ( noSelect ) {
5750 $ ( '#emptycontent' ) . show ( ) ;
58- $ ( '#mail-message' ) . removeClass ( 'icon-loading' ) ;
5951 require ( 'state' ) . currentAccount = account ;
6052 require ( 'state' ) . currentFolder = folder ;
6153 Radio . ui . trigger ( 'messagesview:message:setactive' , null ) ;
62- $ ( '#mail-messages' ) . removeClass ( 'icon-loading' ) ;
6354 require ( 'state' ) . currentlyLoading = null ;
6455 } else {
6556 require ( 'communication' ) . fetchMessageList ( account , folder , {
6657 onSuccess : function ( messages , cached ) {
58+ Radio . ui . trigger ( 'messagecontent:show' ) ;
6759 require ( 'state' ) . currentlyLoading = null ;
6860 require ( 'state' ) . currentAccount = account ;
6961 require ( 'state' ) . currentFolder = folder ;
7062 Radio . ui . trigger ( 'messagesview:message:setactive' , null ) ;
71- $ ( '#mail-messages' ) . removeClass ( 'icon-loading' ) ;
7263
7364 // Fade out the message composer
7465 $ ( '#mail_new_message' ) . prop ( 'disabled' , false ) ;
@@ -83,7 +74,7 @@ define(function(require) {
8374 } ) ;
8475
8576 var messageId = messages [ 0 ] . id ;
86- loadMessage ( account , messageId ) ;
77+ Radio . message . trigger ( 'load' , account , folder , messageId ) ;
8778 // Show 'Load More' button if there are
8879 // more messages than the pagination limit
8980 if ( messages . length > 20 ) {
@@ -93,7 +84,6 @@ define(function(require) {
9384 }
9485 } else {
9586 $ ( '#emptycontent' ) . show ( ) ;
96- $ ( '#mail-message' ) . removeClass ( 'icon-loading' ) ;
9787 }
9888 $ ( '#load-new-mail-messages' )
9989 . fadeIn ( )
@@ -204,83 +194,13 @@ define(function(require) {
204194 Radio . ui . trigger ( 'composer:show' , data ) ;
205195 }
206196
207- /**
208- * @param {Account } account
209- * @param {number } messageId
210- * @param {object } options
211- * @returns {undefined }
212- */
213- function loadMessage ( account , messageId , options ) {
214- options = options || { } ;
215- var defaultOptions = {
216- force : false
217- } ;
218- _ . defaults ( options , defaultOptions ) ;
219-
220- // Do not reload email when clicking same again
221- if ( require ( 'state' ) . currentMessageId === messageId ) {
222- return ;
223- }
224-
225- Radio . ui . trigger ( 'composer:leave' ) ;
226-
227- if ( ! options . force && composerVisible ) {
228- return ;
229- }
230- // Abort previous loading requests
231- if ( require ( 'state' ) . messageLoading !== null ) {
232- require ( 'state' ) . messageLoading . abort ( ) ;
233- }
234-
235- // check if message is a draft
236- var draftsFolder = account . get ( 'specialFolders' ) . drafts ;
237- var draft = draftsFolder === require ( 'state' ) . currentFolder . get ( 'id' ) ;
238-
239- // close email first
240- // Check if message is open
241- if ( require ( 'state' ) . currentMessageId !== null ) {
242- var lastMessageId = require ( 'state' ) . currentMessageId ;
243- Radio . ui . trigger ( 'messagesview:message:setactive' , null ) ;
244- if ( lastMessageId === messageId ) {
245- return ;
246- }
247- }
248-
249- Radio . ui . trigger ( 'message:loading' ) ;
250-
251- // Set current Message as active
252- Radio . ui . trigger ( 'messagesview:message:setactive' , messageId ) ;
253- require ( 'state' ) . currentMessageBody = '' ;
254-
255- // Fade out the message composer
256- $ ( '#mail_new_message' ) . prop ( 'disabled' , false ) ;
257-
258- require ( 'communication' ) . fetchMessage (
259- require ( 'state' ) . currentAccount ,
260- require ( 'state' ) . currentFolder ,
261- messageId ,
262- {
263- onSuccess : function ( message ) {
264- if ( draft ) {
265- Radio . ui . trigger ( 'composer:show' , message ) ;
266- } else {
267- require ( 'cache' ) . addMessage ( require ( 'state' ) . currentAccount ,
268- require ( 'state' ) . currentFolder ,
269- message ) ;
270- Radio . ui . trigger ( 'message:show' , message ) ;
271- }
272- } ,
273- onError : function ( jqXHR , textStatus ) {
274- if ( textStatus !== 'abort' ) {
275- Radio . ui . trigger ( 'error:show' , t ( 'mail' , 'Error while loading the selected message.' ) ) ;
276- }
277- }
278- } ) ;
197+ function isComposerVisible ( ) {
198+ return composerVisible ;
279199 }
280200
281201 return {
282202 saveAttachment : saveAttachment ,
283203 openForwardComposer : openForwardComposer ,
284- loadMessage : loadMessage
204+ isComposerVisible : isComposerVisible
285205 } ;
286206} ) ;
0 commit comments