Пример #1
0
        public void LoadLatest()
        {
            var resultCount = MaxNumberOfNotesInRecentList;

            if (_changedNote != null && _changeIsDeletion)
            {
                ++resultCount;
            }

            // ReSharper disable once RedundantArgumentDefaultValue
            var lastHeaders = NoteStorage.GetTopInPeriod(null, DateTime.Now, resultCount, SearchableDocumentTime.LastUpdate);

            LastUpdatedNotes = lastHeaders.Select(h => NoteStorage.GetExisting(h.Id)).Where(x => x != null).ToList();

            if (lastHeaders.Count > LastUpdatedNotes.Count)
            {
                Log.WarnFormat("Fulltext index out of sync: rebuild it");
            }

            // FT index is updated asynchronously, so when we've just created new note it may not be returned
            if (_changedNote != null)
            {
                if (!_changeIsDeletion && !LastUpdatedNotes.Contains(_changedNote))
                {
                    LastUpdatedNotes.Insert(0, _changedNote);
                }
                else if (_changeIsDeletion && LastUpdatedNotes.Contains(_changedNote))
                {
                    LastUpdatedNotes.Remove(_changedNote);
                }
            }

            if (LastUpdatedNotes.Count > MaxNumberOfNotesInRecentList)
            {
                LastUpdatedNotes.RemoveAt(LastUpdatedNotes.Count - 1);
            }
        }