Exemplo n.º 1
0
        private async void SendPhoto(IReadOnlyCollection <StorageFile> files)
        {
            //threadpool
            if (files == null || files.Count == 0)
            {
                return;
            }

            if (MultiImageEditor != null && MultiImageEditor.IsOpen)
            {
                BeginOnUIThread(async() => await MultiImageEditor.AddFiles(new List <StorageFile>(files)));

                return;
            }

            //var message = await GetPhotoMessage(files.First());

            if (MultiImageEditor == null)
            {
                MultiImageEditor = new MultiImageEditorViewModel(SendPhoto, GetUsernameHintsExternal, With)
                {
                    CurrentItem = new PhotoFile {
                        File = files.First()
                    },
                    Files           = files,
                    ContinueAction  = ContinueSendPhoto,
                    GetPhotoMessage = file =>
                    {
                        var m = GetPhotoMessage(file).Result;
                        return(m);
                    }
                };
                NotifyOfPropertyChange(() => MultiImageEditor);
            }
            else
            {
                MultiImageEditor.CurrentItem = new PhotoFile {
                    File = files.First()
                };
                MultiImageEditor.Files = files;

                BeginOnUIThread(() => MultiImageEditor.OpenEditor());
            }

            // fast preview for first item
            Execute.BeginOnThreadPool(async() =>
            {
                var message = await GetPhotoMessage(files.First());
                Execute.BeginOnUIThread(() =>
                {
                    MultiImageEditor.CurrentItem.Message = message;
                    MultiImageEditor.NotifyOfPropertyChange(() => MultiImageEditor.CurrentItem);
                    MultiImageEditor.CurrentItem.NotifyOfPropertyChange(() => MultiImageEditor.CurrentItem.Self);
                    if (files.Count == 1)
                    {
                        MultiImageEditor.IsDoneEnabled = true;
                    }
                });
            });
        }
        private async void SendPhoto(IReadOnlyCollection <StorageFile> files)
        {
            //threadpool
            if (files == null || files.Count == 0)
            {
                return;
            }

            if (MultiImageEditor != null && MultiImageEditor.IsOpen)
            {
                BeginOnUIThread(async() => await MultiImageEditor.AddFiles(new List <StorageFile>(files)));

                return;
            }

            var message = await GetPhotoMessage(files.First());

            if (MultiImageEditor == null)
            {
                MultiImageEditor = new MultiImageEditorViewModel
                {
                    CurrentItem = new PhotoFile {
                        Message = message, File = files.First()
                    },
                    Files           = files,
                    ContinueAction  = ContinueSendPhoto,
                    GetPhotoMessage = file =>
                    {
                        var m = GetPhotoMessage(file).Result;
                        return(m);
                    }
                };
                NotifyOfPropertyChange(() => MultiImageEditor);
            }
            else
            {
                MultiImageEditor.CurrentItem = new PhotoFile {
                    Message = message, File = files.First()
                };
                MultiImageEditor.Files = files;

                BeginOnUIThread(() => MultiImageEditor.OpenEditor());
            }
        }
        private async void SendPhoto(IReadOnlyCollection <StorageFile> files)
        {
            var chat = Chat as TLEncryptedChat17;

            //threadpool
            if (files == null || files.Count == 0)
            {
                return;
            }

            if (MultiImageEditor != null && MultiImageEditor.IsOpen)
            {
                BeginOnUIThread(async() => await MultiImageEditor.AddFiles(new List <StorageFile>(files)));

                return;
            }

            //var decryptedTuple = await GetPhotoMessage(files.First());

            if (MultiImageEditor == null)
            {
                MultiImageEditor = new MultiImageEditorViewModel(SendPhoto, null, Chat)
                {
                    CurrentItem = new PhotoFile {
                        File = files.First()
                    },
                    Files                    = files,
                    ContinueAction           = ContinueSendPhoto,
                    GetDecryptedPhotoMessage = file =>
                    {
                        var m = GetPhotoMessage(file).Result;
                        return(m);
                    },
                    IsCaptionEnabled = chat != null && chat.Layer.Value >= Constants.MinSecretChatWithCaptionsLayer,
                    IsSecretChat     = true
                };
                NotifyOfPropertyChange(() => MultiImageEditor);
            }
            else
            {
                MultiImageEditor.CurrentItem = new PhotoFile {
                    File = files.First()
                };
                MultiImageEditor.Files = files;

                BeginOnUIThread(() => MultiImageEditor.OpenEditor());
            }

            // fast preview for first item
            Execute.BeginOnThreadPool(async() =>
            {
                var message = await GetPhotoMessage(files.First());
                Execute.BeginOnUIThread(() =>
                {
                    MultiImageEditor.CurrentItem.DecryptedTuple = message;
                    MultiImageEditor.NotifyOfPropertyChange(() => MultiImageEditor.CurrentItem);
                    MultiImageEditor.CurrentItem.NotifyOfPropertyChange(() => MultiImageEditor.CurrentItem.Self);
                    if (files.Count == 1)
                    {
                        MultiImageEditor.IsDoneEnabled = true;
                    }
                });
            });
        }