Ejemplo n.º 1
0
        /// <summary>
        /// Отправка сообщения
        /// </summary>
        async void OnSendTapped(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(EditorMsg.Text))
            {
                return;
            }

            string SendText = EditorMsg.Text;

            EditorMsg.Text = null;

            // Временное сообщение
            MessageThread msg = new MessageThread()
            {
                post_time    = DateTime.Now,
                message_html = "Отправляем...",
                from         = new From()
                {
                    fname = "Bot Messenger", sname = "", login = "", profile_id = PlatformInvoke.profile_id
                }
            };

            // Показываемм сообщение
            MessageDB.Add(msg);
            navigationDrawerList.ScrollTo(MessageDB[MessageDB.Count - 1], ScrollToPosition.MakeVisible, false);

            // Находим индекс сообщения
            int indexMSG = MessageDB.IndexOf(msg);

            // Запрос в API
            var sdk         = new SDK.Threads();
            var msgResponse = await sdk.Send(ThreadID, SendText);

            // Обновляем сообщение
            if (msgResponse != null)
            {
                MessageDB[indexMSG] = msgResponse;
            }
            else
            {
                MessageDB[indexMSG] = new MessageThread()
                {
                    post_time    = DateTime.Now,
                    message_html = "Не удалось отправить сообщение :(<br />" + SendText,
                    from         = new From()
                    {
                        fname = "Bot Messenger => Ошибка запроса", sname = "", login = "******", profile_id = PlatformInvoke.profile_id
                    }
                };
            }
        }
Ejemplo n.º 2
0
        async void GetNewMessage(FilterMSG filter)
        {
            var sdk = new SDK.Threads();

            Refresh : try
            {
                // Обновляем список ListView
                if (filter == FilterMSG.Refrash)
                {
                    IsLoadAllMessage = false;
                    MessageMainDB.Clear();
                }

                // Если уже все выведено
                if (IsLoadAllMessage == true)
                {
                    return;
                }

                // Получаем новые диалоги
                var Messages = await sdk.Show(page, Math.Max(PlatformInvoke.Settings.CountMsgToPage, (short)25));

                if (Messages.Count == 0)
                {
                    IsLoadAllMessage = true;
                    return;
                }

                // Выводим диалоги
                foreach (var item in Messages)
                {
                    item.BackgroundColor = ((MessageMainDB.Count % 2) == 0) ? Color.FromHex("#f7f8f9") : Color.FromHex("#ecedf1");
                    MessageMainDB.Add(item);
                }

                page++;
            }
            catch (Exception ex)
            {
                var res = await DisplayAlert("Ошибка запроса", ex.Message, "Обновить", "Отмена");

                if (res)
                {
                    goto Refresh;
                }
            }

            LoadIndicator.IsRunning = false;
            LoadIndicator.IsVisible = false;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Загрузка сообщений
        /// </summary>
        /// <param name="comand">FirstLoad/Refrash/GetAllMessage</param>
        async void LoadNewMessage(MessageComand comand)
        {
            try
            {
                #region Обновление базы "MessageHideDB"
                if (comand == MessageComand.Refrash)
                {
                    // Чистим текущие сообщения
                    MessageDB.Clear();
                    LoadIndicator.IsRunning            = true;
                    LoadIndicator.IsVisible            = true;
                    Resources["HeightButtonToMoreMSG"] = Device.OS == TargetPlatform.Android ? 42 : 35;
                    Resources["IsViewButtonToMoreMSG"] = true;
                    Resources["TextButtonToMoreMSG"]   = $"Показать еще";

                    // Получаем все сообщения c API
                    var sdk = new SDK.Threads();
                    MessageHideDB = await sdk.Show(ThreadID);
                }
                #endregion


                // Пользовательское количиство сообщений
                int CountMsgToDialog = PlatformInvoke.Settings.CountMsgToDialog <= 10 ? 40 : PlatformInvoke.Settings.CountMsgToDialog;

                // Высчитываем количиство смс для подзагрузки
                int position   = (MessageHideDB.Count - MessageDB.Count) - 1;
                int MaxLoadMSG = Math.Min(CountMsgToDialog - 1, position);
                if (MaxLoadMSG >= 0)
                {
                    // Выводим сообщения
                    for (int i = position; i >= position - MaxLoadMSG; i--)
                    {
                        MessageDB.Insert(0, MessageHideDB[i]);
                    }

                    // Скролим к сообщению
                    if (comand == MessageComand.Refrash)
                    {
                        navigationDrawerList.ScrollTo(MessageDB[MessageDB.Count - 1], ScrollToPosition.MakeVisible, false);
                    }
                    else
                    {
                        navigationDrawerList.ScrollTo(MessageDB[Math.Min(MaxLoadMSG + 1, MessageDB.Count)], ScrollToPosition.End, false);
                    }

                    // Обновляем данные
                    position   = MessageHideDB.Count - MessageDB.Count;
                    MaxLoadMSG = Math.Min(CountMsgToDialog, position);

                    // Меняем текст кнопки "MoreMSG"
                    Resources["TextButtonToMoreMSG"] = $"Показать еще {MaxLoadMSG} из {position}";
                }

                // Прячем кнопку загрузить еще
                if (MessageHideDB.Count == MessageDB.Count)
                {
                    Resources["IsViewButtonToMoreMSG"] = false;
                    Resources["HeightButtonToMoreMSG"] = 0;
                }

                // Прячем текст загрузки
                LoadIndicator.IsRunning = false;
                LoadIndicator.IsVisible = false;
            }
            catch (Exception ex)
            {
                LoadIndicator.IsRunning = false;
                LoadIndicator.IsVisible = false;
                MessageDB.Add(new MessageThread()
                {
                    from = new From()
                    {
                        fname = "Bot Messenger => Ошибка запроса", sname = "", login = "******", profile_id = PlatformInvoke.profile_id
                    },
                    post_time    = DateTime.Now,
                    message_html = ex.Message
                });
            }
        }