// Token: 0x0600145E RID: 5214 RVA: 0x0007C3A4 File Offset: 0x0007A5A4
 internal FolderContentChangeNotificationHandler(UserContext userContext, MailboxSession mailboxSession, OwaStoreObjectId contextFolderId, OwaStoreObjectId dataFolderId, QueryResult result, EmailPayload emailPayload, ListViewContents2 listView, PropertyDefinition[] subscriptionProperties, Dictionary <PropertyDefinition, int> propertyMap, SortBy[] sortBy, FolderVirtualListViewFilter folderFilter, bool isConversationView) : base(userContext, mailboxSession)
 {
     if (result == null)
     {
         throw new ArgumentNullException("result");
     }
     this.listView = listView;
     this.subscriptionProperties = subscriptionProperties;
     this.contextFolderId        = contextFolderId;
     this.dataFolderId           = dataFolderId;
     this.result                    = result;
     this.payload                   = emailPayload;
     this.propertyMap               = propertyMap;
     this.sortBy                    = sortBy;
     this.folderFilter              = folderFilter;
     this.isConversationView        = isConversationView;
     this.mailboxSessionDisplayName = mailboxSession.DisplayName;
     this.InitializeCachedObjectsThatNeedMailboxSession();
 }
        // Token: 0x06000FA2 RID: 4002 RVA: 0x00061B7C File Offset: 0x0005FD7C
        public void SubscribeForFolderContentChanges(MailboxSession sessionIn, OwaStoreObjectId contextFolderId, OwaStoreObjectId dataFolderId, QueryResult queryResult, ListViewContents2 listView, PropertyDefinition[] subscriptionProperties, Dictionary <PropertyDefinition, int> propertyMap, SortBy[] sortBy, FolderVirtualListViewFilter folderFilter, bool isConversationView)
        {
            MailboxSession mailboxSession = this.userContext.MailboxSession;

            this.SubscribeForFolderChanges(contextFolderId, sessionIn);
            if (queryResult == null)
            {
                return;
            }
            if (sessionIn == mailboxSession)
            {
                FolderContentChangeNotificationHandler folderContentChangeNotificationHandler = null;
                this.folderContentChangeNotificationHandlers.TryGetValue(contextFolderId, out folderContentChangeNotificationHandler);
                if (folderContentChangeNotificationHandler != null && folderContentChangeNotificationHandler.NeedReinitSubscriptions)
                {
                    this.RemoveFolderContentChangeSubscription(contextFolderId);
                    folderContentChangeNotificationHandler = null;
                }
                if (folderContentChangeNotificationHandler == null)
                {
                    this.ClearOldFolderContentChangeSubscriptions();
                    this.InitializeConnectionDroppedHandler();
                    folderContentChangeNotificationHandler = new FolderContentChangeNotificationHandler(this.userContext, mailboxSession, contextFolderId, dataFolderId, queryResult, this.omnhLoggedUser.EmailPayload, listView, subscriptionProperties, propertyMap, sortBy, folderFilter, isConversationView);
                    try
                    {
                        if (!folderContentChangeNotificationHandler.TrySubscribe(this.connectionDroppedNotificationHandler))
                        {
                            ExTraceGlobals.NotificationsCallTracer.TraceError((long)this.GetHashCode(), "Failed to create a folder content change subscription.");
                            folderContentChangeNotificationHandler.Dispose();
                            folderContentChangeNotificationHandler = null;
                            return;
                        }
                        this.folderContentChangeNotificationHandlers[contextFolderId] = folderContentChangeNotificationHandler;
                        folderContentChangeNotificationHandler = null;
                        return;
                    }
                    finally
                    {
                        if (folderContentChangeNotificationHandler != null)
                        {
                            folderContentChangeNotificationHandler.Dispose();
                            folderContentChangeNotificationHandler = null;
                        }
                    }
                }
                folderContentChangeNotificationHandler.MissedNotifications = false;
            }
        }