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);
        }
        public void Done()
        {
            _isOpen = false;
            NotifyOfPropertyChange(() => IsOpen);

            ContinueAction.SafeInvoke(_currentItem);
        }
Example #3
0
 public static int CreateContinueRequest(FlatBufferBuilder builder,
                                         ContinueAction action = 0,
                                         uint target_address   = 0)
 {
     builder.StartObject(2);
     ContinueRequest.AddTargetAddress(builder, target_address);
     ContinueRequest.AddAction(builder, action);
     return(ContinueRequest.EndContinueRequest(builder));
 }
Example #4
0
   public static int CreateContinueRequest(FlatBufferBuilder builder,
 ContinueAction action = 0,
 uint target_address = 0)
   {
       builder.StartObject(2);
       ContinueRequest.AddTargetAddress(builder, target_address);
       ContinueRequest.AddAction(builder, action);
       return ContinueRequest.EndContinueRequest(builder);
   }
Example #5
0
        public void AttachVenue(TLMessageMediaVenue mediaVenue)
        {
            if (mediaVenue == null)
            {
                return;
            }

            CloseEditor(true);
            ContinueAction.SafeInvoke(mediaVenue);
        }
Example #6
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 #7
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);
        }
Example #8
0
        private static void OnScheduledWork(object state)
        {
            Scheduler scheduler = (Scheduler)state;
            bool      flag      = FxTrace.Trace.ShouldTraceToTraceSource(TraceEventLevel.Informational);
            Guid      empty     = Guid.Empty;
            Guid      newId     = Guid.Empty;

            if (flag)
            {
                empty = DiagnosticTrace.ActivityId;
                newId = scheduler.callbacks.WorkflowInstanceId;
                FxTrace.Trace.SetAndTraceTransfer(newId, true);
                if (scheduler.resumeTraceRequired && TD.WorkflowActivityResumeIsEnabled())
                {
                    TD.WorkflowActivityResume(newId.ToString());
                }
            }
            scheduler.callbacks.ThreadAcquired();
            RequestedAction continueAction = Scheduler.continueAction;
            bool            flag2          = false;

            while (object.ReferenceEquals(continueAction, Scheduler.continueAction))
            {
                if (scheduler.IsIdle || scheduler.isPausing)
                {
                    flag2 = true;
                    break;
                }
                System.Activities.Runtime.WorkItem firstWorkItem = scheduler.firstWorkItem;
                if ((scheduler.workItemQueue != null) && (scheduler.workItemQueue.Count > 0))
                {
                    scheduler.firstWorkItem = scheduler.workItemQueue.Dequeue();
                }
                else
                {
                    scheduler.firstWorkItem = null;
                }
                continueAction = scheduler.callbacks.ExecuteWorkItem(firstWorkItem);
            }
            bool flag3       = false;
            bool isCompleted = false;

            if (flag2 || object.ReferenceEquals(continueAction, abortAction))
            {
                scheduler.isPausing = false;
                scheduler.isRunning = false;
                scheduler.NotifyWorkCompletion();
                flag3 = true;
                if (flag)
                {
                    isCompleted = scheduler.callbacks.IsCompleted;
                }
                scheduler.callbacks.SchedulerIdle();
            }
            else if (!object.ReferenceEquals(continueAction, yieldSilentlyAction))
            {
                NotifyUnhandledExceptionAction action2 = (NotifyUnhandledExceptionAction)continueAction;
                scheduler.isRunning = false;
                scheduler.NotifyWorkCompletion();
                flag3 = true;
                if (flag)
                {
                    isCompleted = scheduler.callbacks.IsCompleted;
                }
                scheduler.callbacks.NotifyUnhandledException(action2.Exception, action2.Source);
            }
            if (flag)
            {
                if (flag3)
                {
                    if (isCompleted)
                    {
                        if (TD.WorkflowActivityStopIsEnabled())
                        {
                            TD.WorkflowActivityStop(newId.ToString());
                        }
                    }
                    else if (TD.WorkflowActivitySuspendIsEnabled())
                    {
                        TD.WorkflowActivitySuspend(newId.ToString());
                    }
                }
                DiagnosticTrace.ActivityId = empty;
            }
        }
Example #9
0
 public static void AddAction(FlatBufferBuilder builder, ContinueAction action)
 {
     builder.AddSbyte(0, (sbyte)(action), 0);
 }
Example #10
0
 public static void AddAction(FlatBufferBuilder builder, ContinueAction action)
 {
     builder.AddSbyte(0, (sbyte)(action), 0);
 }
        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);
        }
 private static void OnScheduledWork(object state)
 {
     Scheduler scheduler = (Scheduler) state;
     bool flag = FxTrace.Trace.ShouldTraceToTraceSource(TraceEventLevel.Informational);
     Guid empty = Guid.Empty;
     Guid newId = Guid.Empty;
     if (flag)
     {
         empty = DiagnosticTrace.ActivityId;
         newId = scheduler.callbacks.WorkflowInstanceId;
         FxTrace.Trace.SetAndTraceTransfer(newId, true);
         if (scheduler.resumeTraceRequired && TD.WorkflowActivityResumeIsEnabled())
         {
             TD.WorkflowActivityResume(newId.ToString());
         }
     }
     scheduler.callbacks.ThreadAcquired();
     RequestedAction continueAction = Scheduler.continueAction;
     bool flag2 = false;
     while (object.ReferenceEquals(continueAction, Scheduler.continueAction))
     {
         if (scheduler.IsIdle || scheduler.isPausing)
         {
             flag2 = true;
             break;
         }
         System.Activities.Runtime.WorkItem firstWorkItem = scheduler.firstWorkItem;
         if ((scheduler.workItemQueue != null) && (scheduler.workItemQueue.Count > 0))
         {
             scheduler.firstWorkItem = scheduler.workItemQueue.Dequeue();
         }
         else
         {
             scheduler.firstWorkItem = null;
         }
         continueAction = scheduler.callbacks.ExecuteWorkItem(firstWorkItem);
     }
     bool flag3 = false;
     bool isCompleted = false;
     if (flag2 || object.ReferenceEquals(continueAction, abortAction))
     {
         scheduler.isPausing = false;
         scheduler.isRunning = false;
         scheduler.NotifyWorkCompletion();
         flag3 = true;
         if (flag)
         {
             isCompleted = scheduler.callbacks.IsCompleted;
         }
         scheduler.callbacks.SchedulerIdle();
     }
     else if (!object.ReferenceEquals(continueAction, yieldSilentlyAction))
     {
         NotifyUnhandledExceptionAction action2 = (NotifyUnhandledExceptionAction) continueAction;
         scheduler.isRunning = false;
         scheduler.NotifyWorkCompletion();
         flag3 = true;
         if (flag)
         {
             isCompleted = scheduler.callbacks.IsCompleted;
         }
         scheduler.callbacks.NotifyUnhandledException(action2.Exception, action2.Source);
     }
     if (flag)
     {
         if (flag3)
         {
             if (isCompleted)
             {
                 if (TD.WorkflowActivityStopIsEnabled())
                 {
                     TD.WorkflowActivityStop(newId.ToString());
                 }
             }
             else if (TD.WorkflowActivitySuspendIsEnabled())
             {
                 TD.WorkflowActivitySuspend(newId.ToString());
             }
         }
         DiagnosticTrace.ActivityId = empty;
     }
 }