model.latestOnce('foldersSlice', function latestFolderSlice() { function onCorrectFolder() { function onPushed() { waitForAppMessage = false; } // Remove previous cards because the card stack could get // weird if inserting a new card that would not normally be // at that stack level. Primary concern: going to settings, // then trying to add a reader or message list card at that // stack level. More importantly, the added card could have // a "back" operation that does not mean "back to previous // state", but "back in application flowchart". Message // list is a good known jump point, so do not needlessly // wipe that one out if it is the current one. if (!isCurrentCardMessageList()) { Cards.removeAllCards(); } if (type === 'message_list') { showMessageList({ onPushed: onPushed }); } else if (type === 'message_reader') { headerCursor.setCurrentMessageBySuid(data.messageSuid); Cards.pushCard(type, 'default', 'immediate', { messageSuid: data.messageSuid, onPushed: onPushed }); } else { console.error('unhandled notification type: ' + type); } } var acctsSlice = model.acctsSlice, accountId = data.accountId; if (model.account.id === accountId) { // folderType will often be 'inbox' (in the case of a new message // notification) or 'outbox' (in the case of a "failed send" // notification). return model.selectFirstFolderWithType(folderType, onCorrectFolder); } else { var newAccount; acctsSlice.items.some(function(account) { if (account.id === accountId) { newAccount = account; return true; } }); if (newAccount) { model.changeAccount(newAccount, function() { model.selectFirstFolderWithType(folderType, onCorrectFolder); }); } } });
model.latestOnce('acctsSlice', function(acctsSlice) { var account = acctsSlice.items[acctsSlice.items.length - 1]; model.changeAccount(account, function() { pushStartCard('message_list', { // If waiting to complete an activity, do so after pushing the // message list card. onPushed: activityContinued }); }); });
model.latestOnce('foldersSlice', function latestFolderSlice() { function onCorrectFolder() { function onPushed() { waitForAppMessage = false; } if (type === 'message_list') { showMessageList({ onPushed: onPushed }); } else if (type === 'message_reader') { headerCursor.setCurrentMessageBySuid(data.messageSuid); if (!Cards.pushOrTellCard(type, 'default', 'immediate', { messageSuid: data.messageSuid, onPushed: onPushed })) { // Existing card used, so just clean up waiting state. onPushed(); } } else { console.error('unhandled notification type: ' + type); } } var acctsSlice = model.acctsSlice, accountId = data.accountId; if (model.account.id === accountId) { return model.selectInbox(onCorrectFolder); } else { var newAccount; acctsSlice.items.some(function(account) { if (account.id === accountId) { newAccount = account; return true; } }); if (newAccount) { model.changeAccount(newAccount, onCorrectFolder); } } });