public void Handle(UploadingCanceledEventArgs args)
        {
            var message = args.Item.Owner as TLMessage;

            if (message != null)
            {
                var photo = message.Media as TLMessageMediaPhoto;
                if (photo != null)
                {
                    message.Media.UploadingProgress = 0.0;
                    message.Status = MessageStatus.Failed;
                }

                var document = message.Media as TLMessageMediaDocument;
                if (document != null)
                {
                    message.Media.UploadingProgress = 0.0;
                    message.Status = MessageStatus.Failed;
                }

                var video = message.Media as TLMessageMediaVideo;
                if (video != null)
                {
                    message.Media.UploadingProgress = 0.0;
                    message.Status = MessageStatus.Failed;
                }

                UploadTypingManager.CancelTyping();
            }
        }
        public void Handle(UploadingCanceledEventArgs args)
        {
            var owner        = args.Item.Owner;
            var messageLayer = owner as TLDecryptedMessageLayer;

            if (messageLayer != null)
            {
                owner = messageLayer.Message;
            }

            var message = owner as TLDecryptedMessage;

            if (message != null)
            {
                var photo = message.Media as TLDecryptedMessageMediaPhoto;
                if (photo != null)
                {
                    message.Media.UploadingProgress = 0.0;
                    message.Status = MessageStatus.Failed;
                }

                var video = message.Media as TLDecryptedMessageMediaVideo;
                if (video != null)
                {
                    message.Media.UploadingProgress = 0.0;
                    message.Status = MessageStatus.Failed;
                }

                var document = message.Media as TLDecryptedMessageMediaDocument;
                if (document != null)
                {
                    message.Media.UploadingProgress = 0.0;
                    message.Status = MessageStatus.Failed;
                }

                var audio = message.Media as TLDecryptedMessageMediaAudio;
                if (audio != null)
                {
                    message.Media.UploadingProgress = 0.0;
                    message.Status = MessageStatus.Failed;
                }
                message.NotifyOfPropertyChange(() => message.Status);
            }
        }