Exemple #1
0
        public static async Task <UserNotificationDetailsDto[]> WaitForNotificationsAsync(this INotificationsClient notificationsClient, string appId, string userId,
                                                                                          Func <UserNotificationDetailsDto, bool> condition, TimeSpan timeout)
        {
            var result = Array.Empty <UserNotificationDetailsDto>();

            using (var cts = new CancellationTokenSource(timeout))
            {
                while (!cts.IsCancellationRequested)
                {
                    var response = await notificationsClient.GetNotificationsAsync(appId, userId, cancellationToken : cts.Token);

                    if (response.Items.Count > 0 && (condition == null || response.Items.Any(condition)))
                    {
                        result = response.Items.ToArray();
                        break;
                    }

                    await Task.Delay(50);
                }
            }

            return(result);
        }