Esempio n. 1
0
        private async void SendExecute()
        {
            var chats = SelectedItems.ToList();

            if (chats.Count == 0)
            {
                return;
            }

            if (!string.IsNullOrEmpty(_comment))
            {
                var formatted = GetFormattedText(_comment);

                foreach (var chat in chats)
                {
                    var response = await ProtoService.SendAsync(new SendMessage(chat.Id, 0, false, false, null, new InputMessageText(formatted, false, false)));
                }
            }

            if (_messages != null)
            {
                if (_sendAsCopy)
                {
                    foreach (var message in _messages)
                    {
                        if (!_messageFactory.CanBeCopied(message))
                        {
                            var confirm = await TLMessageDialog.ShowAsync("Polls, voice and video notes can't be forwarded as copy. Do you want to proceed anyway?", Strings.Resources.AppName, Strings.Resources.Forward, Strings.Resources.Cancel);

                            if (confirm != ContentDialogResult.Primary)
                            {
                                return;
                            }
                        }
                    }
                }

                foreach (var chat in chats)
                {
                    if (IsWithMyScore)
                    {
                        var response = await ProtoService.SendAsync(new SendMessage(chat.Id, 0, false, false, null, new InputMessageForwarded(_messages[0].ChatId, _messages[0].Id, true, false, false)));
                    }
                    else
                    {
                        var response = await ProtoService.SendAsync(new ForwardMessages(chat.Id, _messages[0].ChatId, _messages.Select(x => x.Id).ToList(), false, false, true, _sendAsCopy, _removeCaptions));
                    }
                }

                //NavigationService.GoBack();
            }
            else if (_inputMedia != null)
            {
                foreach (var chat in chats)
                {
                    var response = await ProtoService.SendAsync(new SendMessage(chat.Id, 0, false, false, null, _inputMedia));
                }

                //NavigationService.GoBack();
            }
            else if (_shareLink != null)
            {
                var formatted = new FormattedText(_shareLink.AbsoluteUri, new TextEntity[0]);

                foreach (var chat in chats)
                {
                    var response = await ProtoService.SendAsync(new SendMessage(chat.Id, 0, false, false, null, new InputMessageText(formatted, false, false)));
                }

                //NavigationService.GoBack();
            }
            else if (_inviteBot != null)
            {
                var chat = chats.FirstOrDefault();
                if (chat == null)
                {
                    return;
                }

                var response = await ProtoService.SendAsync(new SetChatMemberStatus(chat.Id, _inviteBot.Id, new ChatMemberStatusMember()));

                if (response is Ok)
                {
                    if (_inviteToken != null)
                    {
                        response = await ProtoService.SendAsync(new SendBotStartMessage(_inviteBot.Id, chat.Id, _inviteToken));

                        var service = WindowContext.GetForCurrentView().NavigationServices.GetByFrameId("Main" + ProtoService.SessionId);
                        if (service != null)
                        {
                            service.NavigateToChat(chat, accessToken: _inviteToken);
                        }
                    }
                    //NavigationService.GoBack();
                }
            }
            else if (_switchInline != null && _switchInlineBot != null)
            {
                var chat = chats.FirstOrDefault();
                if (chat == null)
                {
                    return;
                }

                var state = new Dictionary <string, object>();
                state["switch_query"] = _switchInline.Query;
                state["switch_bot"]   = _switchInlineBot.Id;

                //NavigationService.GoBack();

                var service = WindowContext.GetForCurrentView().NavigationServices.GetByFrameId("Main" + ProtoService.SessionId);
                if (service != null)
                {
                    service.NavigateToChat(chat, state: state);
                }
            }
            else if (_package != null)
            {
                var chat = chats.FirstOrDefault();
                if (chat == null)
                {
                    return;
                }

                App.DataPackages[chat.Id] = _package;

                var service = WindowContext.GetForCurrentView().NavigationServices.GetByFrameId("Main" + ProtoService.SessionId);
                if (service != null)
                {
                    service.NavigateToChat(chat);
                }
            }

            //App.InMemoryState.ForwardMessages = new List<TLMessage>(messages);
            //NavigationService.GoBackAt(0);
        }