public async Task UpdateEntriesAsync() { await EnsureInitializedAsync(); // Update the cache with a new state and then refresh entries as it would be done on a next request. await LocalizationStateManager.UpdateAsync(new LocalizationStateDocument(), afterUpdateAsync : RefreshEntriesAsync); }
protected virtual async Task InitializeEntriesAsync() { if (_initialized) { return; } await _semaphore.WaitAsync(); try { if (!_initialized) { var state = await LocalizationStateManager.GetOrCreateImmutableAsync(); var indexes = await Session.QueryIndex <LocalizedContentItemIndex>(i => i.Published).ListAsync(); AddEntries(indexes.Select(i => new LocalizationEntry { ContentItemId = i.ContentItemId, LocalizationSet = i.LocalizationSet, Culture = i.Culture.ToLowerInvariant() })); _lastIndexId = indexes.LastOrDefault()?.Id ?? 0; _stateIdentifier = state.Identifier; _initialized = true; } } finally { _semaphore.Release(); } }
private async Task EnsureInitializedAsync() { if (!_initialized) { await InitializeEntriesAsync(); } else { var state = await LocalizationStateManager.GetOrCreateImmutableAsync(); if (_stateIdentifier != state.Identifier) { await RefreshEntriesAsync(state); } } }