private void AddMessageToDataSource(Twilio.IPMessaging.Message message)
        {
            var identity = JsonConvert.DeserializeObject <IdentityToken>(message.Author);

            // Get Agent Avatar
            if (identity.identityId != AppSettingsManager.ClientId && GravatarManager.GetImage(GravatarUser.Agent) == null)
            {
                GravatarManager.SetImage(GravatarUser.Agent, identity.picture);
            }

            // Get Customer Avatar
            if (identity.identityId == AppSettingsManager.ClientId && GravatarManager.GetImage(GravatarUser.Customer) == null)
            {
                GravatarManager.SetImage(GravatarUser.Customer, identity.picture);
            }

            var jmsg = new JMessage
                       (
                identity.identityId,
                identity.name,
                message.DateUpdatedAsDate,
                message.Body
                       );

            messages.Add(jmsg);

            SystemSoundPlayer.PlayMessageReceivedSound();
            FinishReceivingMessage(true);
            ScrollToBottom(true);
        }
        public async Task Execute(CancellationToken cancellationToken, IProgress <double> progress)
        {
            var    gravatarManager = new GravatarManager(_providerManager, _logger);
            var    users           = _userManager.Users.ToList();
            var    percentPerUser  = 100 / users.Count;
            var    numComplete     = 0;
            double currentProgress = 0;

            foreach (var user in users)
            {
                await gravatarManager.Post(user, CancellationToken.None).ConfigureAwait(false);

                numComplete++;
                currentProgress = percentPerUser * numComplete;
                progress.Report(currentProgress);
            }
        }
        public override IMessageAvatarImageDataSource GetAvatarImageData(MessagesCollectionView collectionView, NSIndexPath indexPath)
        {
            UIImage image = null;
            var     index = (int)indexPath.Item;

            if (messages[index].SenderId == AppSettingsManager.ClientId)
            {
                image = GravatarManager.GetImage(GravatarUser.Customer);
            }
            else
            {
                image = GravatarManager.GetImage(GravatarUser.Agent);
            }

            // Default is (34, 34) for diameter
            if (image != null)
            {
                return(MessagesAvatarImageFactory.CreateAvatarImage(image, 34));
            }

            return(null);
        }