/// <summary> /// Private helper to fire <see cref="UpdateRequested"/>. /// </summary> private Task FireUpdateRequested() { RequestUpdateDescriptorEventArgs args = new RequestUpdateDescriptorEventArgs(this); UpdateRequested?.Invoke(this, args); return(args.DeferAsync()); }
/// <summary> /// Intended to be registered as a handler for <see cref="StoredFileDescriptor.UpdateRequested"/>. /// </summary> /// <param name="sender">The descriptor being updated.</param> /// <param name="args">EventArgs used to request the file to update with.</param> private async void UpdateRequestedHandler(StoredFileDescriptor sender, RequestUpdateDescriptorEventArgs args) { if (!sender.IsAppOwned) { DebugHelper.Assert(false, "This should be impossible"); return; } ITestableFile file = await this.fileService.PickFileForOpenAsync().ConfigureAwait(false); if (file != null) { DebugHelper.Trace($"Updating cached file"); ITestableFile storedFile = await GetFileAsync(sender).ConfigureAwait(false); if (await CheckShouldProceedWithUpdateAsync(storedFile, file).ConfigureAwait(false)) { await file.AsIStorageFile.CopyAndReplaceAsync(storedFile.AsIStorageFile) .AsTask().ConfigureAwait(false); await storedFile.ClearReadOnlyFlag().ConfigureAwait(false); } } }