private async Task ProcessNag(NagEx nag, NagResponseInfo responseInfo) { var response = await ShowNag(nag); if (response == NagResponse.Accept) { nag.NagAction(); } else if (response == NagResponse.Defer) { responseInfo.LaunchCount = 0; responseInfo.RegistrationTimeStamp = DateTimeOffset.UtcNow; } responseInfo.LastResponse = response; responseInfo.LastNag = DateTimeOffset.UtcNow; await PersistAsync(responseInfo, nag.Id, nag.Location); }
public async Task Register(NagEx nag, int launches) { if (nag == null) { throw new ArgumentNullException("nag"); } var responseInfo = await Load(nag.Id, nag.Location); responseInfo.LaunchCount++; if (responseInfo.ShouldNag(launches)) { await ProcessNag(nag, responseInfo); } else if (responseInfo.IsAwaitingResponse) { await PersistAsync(responseInfo, nag.Id, nag.Location); } }
private async Task <NagResponse> ShowNag(NagEx nag) { var result = MessageBoxResult.Cancel; if (nag.AllowDefer) { result = await _dialogService.PromptAsync(nag.Message, MessageBoxType.YesNoCancel, NagSettings.CustomResolver); } else { result = await _dialogService.PromptAsync(nag.Message, MessageBoxType.YesNo, NagSettings.CustomResolver); } switch (result) { case MessageBoxResult.Cancel: return(NagResponse.Defer); case MessageBoxResult.No: return(NagResponse.Decline); case MessageBoxResult.Yes: return(NagResponse.Accept); default: return(NagResponse.NoResponse); } }
public async Task Register(NagEx nag, int launches, TimeSpan duration) => await _nagHelper.Register(nag, launches, duration);
public async Task Register(NagEx nag, int launches) => await _nagHelper.Register(nag, launches);
public async Task Register(NagEx nag, TimeSpan duration) => await _nagHelper.Register(nag, duration);