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

            ContinueAction.SafeInvoke(_currentItem);
        }
        public void Done()
        {
            _isOpen = false;
            NotifyOfPropertyChange(() => IsOpen);

            var logString = new StringBuilder();

            logString.AppendLine("photos");
            var messages    = new List <TLMessage>();
            var randomIndex = new Dictionary <long, long>();

            foreach (var item in Items)
            {
                if (item.IsButton)
                {
                    continue;
                }

                if (item.Message != null)
                {
                    if (item.Message.RandomIndex == 0)
                    {
                        logString.AppendLine(string.Format("random_id=0 msg={0} original_file_name={1}", item.Message, item.File.Name));
                        continue;
                    }

                    if (randomIndex.ContainsKey(item.Message.RandomIndex))
                    {
                        logString.AppendLine(string.Format("random_id exists msg={0} original_file_name={1}", item.Message, item.File.Name));
                        continue;
                    }

                    randomIndex[item.Message.RandomIndex] = item.Message.RandomIndex;

                    var mediaPhoto   = item.Message.Media as TLMessageMediaPhoto28;
                    var photo        = mediaPhoto.Photo as TLPhoto28;
                    var size         = photo.Sizes.First() as TLPhotoSize;
                    var fileLocation = size.Location;
                    var fileName     = String.Format("{0}_{1}_{2}.jpg",
                                                     fileLocation.VolumeId,
                                                     fileLocation.LocalId,
                                                     fileLocation.Secret);

                    item.Message.Media.UploadingProgress = 0.001;

                    messages.Add(item.Message);
                    logString.AppendLine(string.Format("msg={0} file_name={1}", item.Message, fileName));
                }
                else
                {
                    logString.AppendLine(string.Format("empty msg original_file_name={0}", item.File.Name));
                }
            }

#if MULTIPLE_PHOTOS
            Log.Write(logString.ToString());
#endif

            ContinueAction.SafeInvoke(messages);
        }
Example #3
0
        public void AttachVenue(TLMessageMediaVenue mediaVenue)
        {
            if (mediaVenue == null)
            {
                return;
            }

            CloseEditor(true);
            ContinueAction.SafeInvoke(mediaVenue);
        }
Example #4
0
        public void AttchLocation(GeoCoordinate location)
        {
            if (location == null)
            {
                return;
            }
            if (location.Latitude == 0.0 && location.Longitude == 0.0)
            {
                return;
            }

            var mediaGeo = new TLMessageMediaGeo
            {
                Geo = new TLGeoPoint {
                    Lat = new TLDouble(location.Latitude), Long = new TLDouble(location.Longitude)
                }
            };

            CloseEditor();
            ContinueAction.SafeInvoke(mediaGeo);
        }
Example #5
0
        public void AttachGeoLive(GeoCoordinate location, TimerSpan timer)
        {
            if (location == null)
            {
                return;
            }
            if (location.Latitude == 0.0 && location.Longitude == 0.0)
            {
                return;
            }

            var mediaGeoLive = new TLMessageMediaGeoLive
            {
                Geo = new TLGeoPoint {
                    Lat = new TLDouble(location.Latitude), Long = new TLDouble(location.Longitude)
                },
                Period = new TLInt(timer.Seconds)
            };

            CloseEditor();
            ContinueAction.SafeInvoke(mediaGeoLive);
        }
        public void Done()
        {
            _isOpen = false;
            NotifyOfPropertyChange(() => IsOpen);

            var logString = new StringBuilder();

            logString.AppendLine("photos");
            var messages    = new List <PhotoFile>();
            var randomIndex = new Dictionary <long, long>();

            var   groupedId  = IsGrouped && Items.Count(x => !x.IsButton) > 1 ? TLLong.Random() : null;
            TLInt commonDate = null;

            for (var i = 0; i < Items.Count; i++)
            {
                var item = Items[i];
                if (item.IsButton)
                {
                    continue;
                }

                if (item.Message != null)
                {
                    if (item.Message.RandomIndex == 0)
                    {
                        logString.AppendLine(string.Format("random_id=0 msg={0} original_file_name={1}", item.Message,
                                                           item.File.Name));
                        continue;
                    }

                    if (i % Constants.MaxGroupedMediaCount == 0)
                    {
                        groupedId = IsGrouped && Items.Count(x => !x.IsButton) > 1 ? TLLong.Random() : null;
                    }

                    if (randomIndex.ContainsKey(item.Message.RandomIndex))
                    {
                        logString.AppendLine(string.Format("random_id exists msg={0} original_file_name={1}",
                                                           item.Message, item.File.Name));
                        continue;
                    }

                    var message73 = item.Message as TLMessage73;
                    if (message73 != null)
                    {
                        if (commonDate == null)
                        {
                            commonDate = message73.Date;
                        }
                        message73.Date      = commonDate;
                        message73.GroupedId = groupedId;
                    }

                    randomIndex[item.Message.RandomIndex] = item.Message.RandomIndex;

                    var mediaPhoto   = item.Message.Media as TLMessageMediaPhoto28;
                    var photo        = mediaPhoto.Photo as TLPhoto28;
                    var size         = photo.Sizes.First() as TLPhotoSize;
                    var fileLocation = size.Location;
                    var fileName     = String.Format("{0}_{1}_{2}.jpg",
                                                     fileLocation.VolumeId,
                                                     fileLocation.LocalId,
                                                     fileLocation.Secret);

                    item.Message.Media.UploadingProgress = 0.001;

                    if (item.TimerSpan != null && item.TimerSpan.Seconds > 0)
                    {
                        var message25 = item.Message as TLMessage25;
                        if (message25 != null)
                        {
                            message25.NotListened = true;
                        }
                        var ttlMessageMedia = item.Message.Media as ITTLMessageMedia;
                        if (ttlMessageMedia != null)
                        {
                            ttlMessageMedia.TTLSeconds = new TLInt(item.TimerSpan.Seconds);
                        }
                    }

                    messages.Add(item);
                    logString.AppendLine(string.Format("msg={0} file_name={1}", item.Message, fileName));
                }
                else if (item.DecryptedTuple != null)
                {
                    if (item.DecryptedTuple.Item1.RandomIndex == 0)
                    {
                        logString.AppendLine(string.Format("random_id=0 msg={0} original_file_name={1}", item.DecryptedTuple.Item1, item.File.Name));
                        continue;
                    }

                    if (randomIndex.ContainsKey(item.DecryptedTuple.Item1.RandomIndex))
                    {
                        logString.AppendLine(string.Format("random_id exists msg={0} original_file_name={1}", item.DecryptedTuple.Item1, item.File.Name));
                        continue;
                    }

                    var decryptedMessage73 = item.DecryptedTuple.Item1 as TLDecryptedMessage73;
                    if (decryptedMessage73 != null)
                    {
                        if (commonDate == null)
                        {
                            commonDate = decryptedMessage73.Date;
                        }
                        decryptedMessage73.Date      = commonDate;
                        decryptedMessage73.GroupedId = groupedId;
                    }

                    randomIndex[item.DecryptedTuple.Item1.RandomIndex] = item.DecryptedTuple.Item1.RandomIndex;

                    var mediaPhoto   = ((TLDecryptedMessage)item.DecryptedTuple.Item1).Media as TLDecryptedMessageMediaPhoto;
                    var fileLocation = mediaPhoto.Photo as TLEncryptedFile;
                    var fileName     = String.Format("{0}_{1}_{2}.jpg",
                                                     fileLocation.Id,
                                                     fileLocation.DCId,
                                                     fileLocation.AccessHash);

                    mediaPhoto.StorageFile       = null;
                    mediaPhoto.UploadingProgress = 0.001;

                    messages.Add(item);
                    logString.AppendLine(string.Format("msg={0} file_name={1}", item.DecryptedTuple.Item1, fileName));
                }
                else
                {
                    logString.AppendLine(string.Format("empty msg original_file_name={0}", item.File.Name));
                }
            }

#if MULTIPLE_PHOTOS
            Log.Write(logString.ToString());
#endif

            ContinueAction.SafeInvoke(messages);
        }