public void CloseEditor()
        {
            _isOpen = false;
            NotifyOfPropertyChange(() => IsOpen);

            _currentItem = null;
        }
        private void CheckChannelMessage(TLMessage25 message)
        {
            var channel = With as TLChannel;

            if (IsChannelMessage || (channel != null && channel.IsBroadcast))
            {
                var message36 = message as TLMessage36;
                if (message36 != null)
                {
                    if (channel != null && !channel.Signatures)
                    {
                        message36.FromId = new TLInt(-1);
                    }
                    message36.Views = new TLInt(1);
                }
            }

            var channel44 = channel as TLChannel44;

            if (channel44 != null && channel44.IsBroadcast && channel44.Silent)
            {
                var message48 = message as TLMessage48;
                if (message48 != null && message48.Out.Value)
                {
                    message48.Silent = true;
                }
            }
        }
        private static TLString GetFirstName(TLMessage25 message)
        {
            if (message != null)
            {
                var fromUser = message.FwdFrom as TLUserBase;
                if (fromUser != null)
                {
                    return(fromUser.FirstName);
                }

                var fromChat = message.FwdFrom as TLChannel;
                if (fromChat != null)
                {
                    return(fromChat.Title);
                }

                var fromChatForbidden = message.FwdFrom as TLChannelForbidden;
                if (fromChatForbidden != null)
                {
                    return(fromChatForbidden.Title);
                }
            }

            return(null);
        }
        public static string GetFirstName(TLMessage25 message)
        {
            var message48 = message as TLMessage48;

            if (message48 != null)
            {
                if (message48.FwdHeader != null)
                {
                    var cacheService = InMemoryCacheService.Instance;
                    var channelId    = message48.FwdHeader.ChannelId;
                    if (channelId != null)
                    {
                        var channel = cacheService.GetChat(message48.FwdHeader.ChannelId) as TLChannel;
                        if (channel != null)
                        {
                            return(channel.Title.ToString());
                        }
                    }
                    else
                    {
                        var userId = message48.FwdHeader.FromId;
                        if (userId != null)
                        {
                            var fromUser = cacheService.GetUser(message48.FwdHeader.FromId);
                            if (fromUser != null)
                            {
                                return(TLUserBase.GetFirstName(fromUser.FirstName, fromUser.LastName, fromUser.Phone));
                            }
                        }
                    }
                }
            }

            if (message != null)
            {
                var fromUser = message.FwdFrom as TLUserBase;
                if (fromUser != null)
                {
                    return(TLUserBase.GetFirstName(fromUser.FirstName, fromUser.LastName, fromUser.Phone));
                }

                var fromChat = message.FwdFrom as TLChannel;
                if (fromChat != null)
                {
                    return(fromChat.Title.ToString());
                }

                var fromChatForbidden = message.FwdFrom as TLChannelForbidden;
                if (fromChatForbidden != null)
                {
                    return(fromChatForbidden.Title.ToString());
                }
            }

            return(null);
        }
Example #5
0
        private void CheckChannelMessage(TLMessage25 message)
        {
            var channel = With as TLChannel;

            if (IsChannelMessage || (channel != null && channel.IsBroadcast))
            {
                var message36 = message as TLMessage36;
                if (message36 != null)
                {
                    message36.FromId = new TLInt(-1);
                    message36.Views  = new TLInt(1);
                }
            }
        }
        private void ContinueSendPhoto(TLMessage25 message)
        {
            BeginOnUIThread(() =>
            {
                var previousMessage = InsertSendingMessage(message);
                IsEmptyDialog       = Items.Count == 0 && LazyItems.Count == 0;

                BeginOnThreadPool(() =>
                                  CacheService.SyncSendingMessage(
                                      message, previousMessage,
                                      TLUtils.InputPeerToPeer(Peer, StateService.CurrentUserId),
                                      m => SendPhotoInternal(message)));
            });
        }
Example #7
0
        private void SendDocumentInternal(TLMessage25 message, object o)
#endif
        {
            var document = ((TLMessageMediaDocument)message.Media).Document as TLDocument;

            if (document == null)
            {
                return;
            }

            byte[] thumbBytes = null;
            var    thumb      = document.Thumb as TLPhotoSize;

            if (thumb != null)
            {
                var thumbLocation = thumb.Location as TLFileLocation;
                if (thumbLocation != null)
                {
                    var fileName = String.Format("{0}_{1}_{2}.jpg",
                                                 thumbLocation.VolumeId,
                                                 thumbLocation.LocalId,
                                                 thumbLocation.Secret);

                    using (var store = IsolatedStorageFile.GetUserStoreForApplication())
                    {
                        using (var fileStream = store.OpenFile(fileName, FileMode.Open, FileAccess.Read))
                        {
                            thumbBytes = new byte[fileStream.Length];
                            fileStream.Read(thumbBytes, 0, thumbBytes.Length);
                        }
                    }
                }
            }

            var bytes       = document.Buffer;
            var md5Bytes    = Telegram.Api.Helpers.Utils.ComputeMD5(bytes ?? new byte[0]);
            var md5Checksum = BitConverter.ToInt64(md5Bytes, 0);

            StateService.GetServerFilesAsync(
                results =>
            {
                var serverFile = results.FirstOrDefault(result => result.MD5Checksum.Value == md5Checksum);

                if (serverFile != null)
                {
                    message.InputMedia = serverFile.Media;
                    ShellViewModel.SendMediaInternal(message, MTProtoService, StateService, CacheService);
                }
                else
                {
                    if (thumbBytes != null)
                    {
                        var thumbFileId = TLLong.Random();
                        UploadFileManager.UploadFile(thumbFileId, message.Media, thumbBytes);

                        Thread.Sleep(100);     //NOTE: без этой строки не работает. Почему???
                    }

                    var fileId                      = TLLong.Random();
                    message.Media.FileId            = fileId;
                    message.Media.UploadingProgress = 0.001;
#if WP81
                    if (file == null)
                    {
                        UploadDocumentFileManager.UploadFile(fileId, message, bytes);
                    }
                    else
                    {
                        UploadDocumentFileManager.UploadFile(fileId, message, file);
                    }
#else
                    UploadDocumentFileManager.UploadFile(fileId, message, bytes);
#endif
                }
            });
        }
Example #8
0
 private void SendDocumentInternal(TLMessage25 message, StorageFile file)
        private void SendPhotoInternal(TLMessage25 message)
        {
            var photo = ((TLMessageMediaPhoto)message.Media).Photo as TLPhoto;

            if (photo == null)
            {
                return;
            }

            var photoSize = photo.Sizes[0] as TLPhotoSize;

            if (photoSize == null)
            {
                return;
            }

            var fileLocation = photoSize.Location;

            if (fileLocation == null)
            {
                return;
            }

            byte[] bytes    = null;
            var    fileName = String.Format("{0}_{1}_{2}.jpg",
                                            fileLocation.VolumeId,
                                            fileLocation.LocalId,
                                            fileLocation.Secret);

            using (var store = IsolatedStorageFile.GetUserStoreForApplication())
            {
                using (var fileStream = store.OpenFile(fileName, FileMode.Open, FileAccess.Read))
                {
                    if (fileStream.Length > 0)
                    {
                        bytes = new byte[fileStream.Length];
                        fileStream.Read(bytes, 0, bytes.Length);
                    }
                }
            }

            if (bytes == null)
            {
                return;
            }

            var md5Bytes    = Telegram.Api.Helpers.Utils.ComputeMD5(bytes);
            var md5Checksum = BitConverter.ToInt64(md5Bytes, 0);

            StateService.GetServerFilesAsync(
                results =>
            {
                var serverFile = results.FirstOrDefault(result => result.MD5Checksum.Value == md5Checksum);

#if MULTIPLE_PHOTOS
                serverFile = null;
#endif

                if (serverFile != null)
                {
                    var media        = serverFile.Media;
                    var captionMedia = media as IInputMediaCaption;
                    if (captionMedia == null)
                    {
                        var inputMediaPhoto = serverFile.Media as TLInputMediaPhoto;
                        if (inputMediaPhoto != null)
                        {
                            var inputMediaPhoto28 = new TLInputMediaPhoto28(inputMediaPhoto, TLString.Empty);
                            captionMedia          = inputMediaPhoto28;
                            media            = inputMediaPhoto28;
                            serverFile.Media = inputMediaPhoto28;
                            StateService.SaveServerFilesAsync(results);
                        }
                        var inputMediaUploadedPhoto = serverFile.Media as TLInputMediaUploadedPhoto;
                        if (inputMediaUploadedPhoto != null)
                        {
                            var inputMediaUploadedPhoto28 = new TLInputMediaUploadedPhoto28(inputMediaUploadedPhoto, TLString.Empty);
                            captionMedia     = inputMediaUploadedPhoto28;
                            media            = inputMediaUploadedPhoto28;
                            serverFile.Media = inputMediaUploadedPhoto28;
                            StateService.SaveServerFilesAsync(results);
                        }
                    }

                    if (captionMedia != null)
                    {
                        captionMedia.Caption = ((TLMessageMediaPhoto28)message.Media).Caption ?? TLString.Empty;
                    }

                    message.InputMedia = media;
                    ShellViewModel.SendMediaInternal(message, MTProtoService, StateService, CacheService);
                }
                else
                {
                    var fileId                      = TLLong.Random();
                    message.Media.FileId            = fileId;
                    message.Media.UploadingProgress = 0.001;
                    UploadFileManager.UploadFile(fileId, message, bytes);
                }
            });
        }