コード例 #1
0
        public MessagesPage()
        {
            InitializeComponent();

            _viewModel = DataContext as MessagesPageViewModel;

            _navigationHelper            = new NavigationHelper(this);
            _navigationHelper.LoadState += NavigationHelper_LoadState;
            _navigationHelper.SaveState += NavigationHelper_SaveState;
        }
コード例 #2
0
 public MessagesPage()
 {
     InitializeComponent();
     BindingContext = new MessagesPageViewModel();
     MessagingCenter.Subscribe <MessagesPageViewModel>(new MessagesPageViewModel(), "ButtonClicked",
                                                       (sender) =>
     {
         DisplayAlert("Heyooo", "The button was clicked", "OK", "Nay");
     });
 }
コード例 #3
0
        public MessagesPage()
        {
            InitializeComponent();

            Title = "Chat";

            BindingContext = new MessagesPageViewModel();

            MessagingCenter.Subscribe <ScrollListViewMessage>(this, "ScrollToBottom", message =>
            {
                var item = ((ObservableCollection <MessageViewModel>)(this.MessagesListView.ItemsSource)).Last();
                MessagesListView.ScrollTo(item, ScrollToPosition.End, false);
            });
        }
コード例 #4
0
 private async void LstChannels_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     if (lstChannels.SelectedItem != null)
     {
         MessagesPageViewModel vm = lstChannels.SelectedItem as MessagesPageViewModel;
         if (vm.PlayerAdvert != null)
         {
             //PlayerAdvert advert = vm.PlayerAdvert;
             //advert.
             await Navigation.PushAsync(new ChatPage(vm));
         }
         else
         {
             await Navigation.PushAsync(new ChatPage(vm));
         }
         lstChannels.SelectedItem = null;
     }
 }
コード例 #5
0
        public async Task <MessagesPageViewModel> GetMessages([FromForm] GetMessagesModel model)
        {
            MessagesPageViewModel responseModel;

            if (model.MessagesIds.IsNullOrEmpty())
            {
                responseModel = await _loadMessagesService.GetMessagesPageAsync(model.ConversationId, model.ConversationType, model.PageNumber.GetValueOrDefault(), messagesLimit);
            }
            else
            {
                var messages = await _loadMessagesService.GetMessagesByIdAsync(model.MessagesIds, model.ConversationType, model.ConversationId, null)
                               .ConfigureAwait(false);

                responseModel = new MessagesPageViewModel {
                    Messages = MessageConverter.GetMessagesVm(messages, null)
                };
            }
            return(responseModel);
        }
コード例 #6
0
 private async void TapGestureRecognizer_Tapped(object sender, EventArgs e)
 {
     if (mainPlayerAdvert.UserId != currentUser.Id)
     {
         MessagesPageViewModel model = new MessagesPageViewModel()
         {
             currentUser    = currentUser,
             PlayerAdvert   = mainPlayerAdvert,
             OpponentAdvert = null,
             channelUser1   = mainPlayerAdvert.User,
             currentChannel = null,
             channelUser2   = null,
         };
         await Navigation.PushAsync(new ChatPage(model));
     }
     else
     {
         await DisplayAlert("Upps!", "Kendinizle konuşamazsınız.Felsefi olarak bakıyorsanız başka tabii :)", "OK");
     }
 }
コード例 #7
0
        /// <summary>
        /// Populates the page with content passed during navigation.  Any saved state is also
        /// provided when recreating a page from a prior session.
        /// </summary>
        private async void NavigationHelper_LoadState(object sender, LoadStateEventArgs e)
        {
            // restore state from previous session
            if (e.PageState != null && e.PageState.ContainsKey("MessagesPageViewModel"))
            {
                _viewModel = e.PageState["MessagesPageViewModel"] as MessagesPageViewModel;
                return;
            }

            var item = e.NavigationParameter as SlackItem;

            if (item == null)
            {
                return;
            }

            _viewModel.ChannelId   = item.UniqueId;
            _viewModel.ChannelName = item.Description;

            await _viewModel.RefreshMessages();
        }
コード例 #8
0
        //User otherUser = new User();

        public ChatPage(MessagesPageViewModel model)
        {
            InitializeComponent();

            NavigationPage navPage = App.Current.MainPage as NavigationPage;

            navPage.BarBackgroundColor = Color.FromHex("#2dbefc");
            navPage.BarTextColor       = Color.White;
            activityControl.MakeVisible(ActivityLayout, activity);



            //model.currentChannel = messageService.GetChannel(model.currentChannel.Id);


            layoutMain.IsVisible = false;
            GetChannelMessages(model);
            //if (model.ChannelId != 0 && model.currentChannel != null)
            //{
            //    GetChannelMessages(model);
            //}
            //else
            //{
            //    messagesPageViewModel = model;
            //}
            currentUser = App.Current.Properties["loggedUser"] as User;

            _username = currentUser.Email;
            //messagesPageViewModel = model;
            this.Title = model.otherUserName;

            //SIGNALR
            client.Connect(_username);
            client.ConnectionError   += Client_ConnectionError;
            client.OnMessageReceived += Client_OnMessageReceived;
            this.BindingContext       = ChatPageViewModels;
        }
コード例 #9
0
        private async void GetChannelMessages(MessagesPageViewModel vm)
        {
            if (vm.ChannelId != 0 && vm.currentChannel != null)
            {
                ChatChannel channel = await messageService.GetChannel(vm.ChannelId);

                vm.currentChannel     = channel;
                messagesPageViewModel = vm;
            }
            else
            {
                messagesPageViewModel = vm;
            }



            if (messagesPageViewModel.ChannelId != 0 && messagesPageViewModel.currentChannel != null)
            {
                if (messagesPageViewModel.PlayerAdvert != null)
                {
                    opponentAdvert = null;
                    playerAdvert   = messagesPageViewModel.PlayerAdvert;
                }
                else if (messagesPageViewModel.OpponentAdvert != null)
                {
                    opponentAdvert = messagesPageViewModel.OpponentAdvert;
                    playerAdvert   = null;
                }
            }
            else // CHANNEL BOŞ GELMİŞSE
            {
                if (messagesPageViewModel.PlayerAdvert != null)
                {
                    //receiverEmail.Text = model.channelUser1.Email;
                    playerAdvert   = messagesPageViewModel.PlayerAdvert;
                    opponentAdvert = null;
                }
                else
                {
                    //receiverEmail.Text = model.channelUser1.Email;
                    playerAdvert   = null;
                    opponentAdvert = messagesPageViewModel.OpponentAdvert;
                }
            }

            if (messagesPageViewModel.PlayerAdvert != null && messagesPageViewModel.OpponentAdvert == null)
            {
                lblAdvertFirstLine.Text  = messagesPageViewModel.PlayerAdvert.City + " / " + messagesPageViewModel.PlayerAdvert.Town;
                lblAdvertSecondLine.Text = messagesPageViewModel.DateAndTime;
            }
            else if (messagesPageViewModel.PlayerAdvert == null && messagesPageViewModel.OpponentAdvert != null)
            {
                lblAdvertFirstLine.Text  = messagesPageViewModel.OpponentAdvert.City + " şehrinde rakip ilanı";
                lblAdvertSecondLine.Text = "";
            }



            // HEM DB HEM sıgnalr ile ilgili

            CheckProperAdvert();
            if (messagesPageViewModel.currentChannel != null)
            {
                if (messagesPageViewModel.currentChannel.Id != 0)
                {
                    mainChannel = messagesPageViewModel.currentChannel;
                    if (mainChannel.ChatChannelUsers.Count > 0)
                    {
                        if (mainChannel.ChatChannelUsers[1].ChatMessages.Count > 0 || mainChannel.ChatChannelUsers[0].ChatMessages.Count > 0)
                        {
                            List <ChatPageViewModel> tempModel = new List <ChatPageViewModel>();



                            foreach (ChatMessage msg in mainChannel.ChatChannelUsers[0].ChatMessages)
                            {
                                //allMessages.Add(msg);
                                if (mainChannel.ChatChannelUsers[0].UserId == currentUser.Id) // EĞER 0 INDEXLI CHATCHANNELUSER BEN İSEM;
                                {
                                    tempModel.Add(new ChatPageViewModel()
                                    {
                                        Message             = msg.Text,
                                        isMyMessage         = true,
                                        SenderUser          = messagesPageViewModel.currentUser,
                                        isUserChangingPoint = false,
                                        SendingTime         = msg.CreatedOn
                                    });
                                }
                                else
                                {
                                    tempModel.Add(new ChatPageViewModel()
                                    {
                                        Message             = msg.Text,
                                        isMyMessage         = false, // BEN OWNER DEĞİLİM
                                        SenderUser          = messagesPageViewModel.OtherUser,
                                        isUserChangingPoint = false,
                                        SendingTime         = msg.CreatedOn
                                    });
                                }
                                //modelList.Add(new SignalrUser() { message = msg.Text, username = "******" });
                            }
                            foreach (ChatMessage msg in mainChannel.ChatChannelUsers[1].ChatMessages)
                            {
                                //allMessages.Add(msg);
                                //modelList.Add(new SignalrUser() { message = msg.Text, username = "******" });
                                if (mainChannel.ChatChannelUsers[1].UserId == currentUser.Id) // EĞER 1 INDEXLI CHATCHANNELUSER  BEN İSEM;
                                {
                                    tempModel.Add(new ChatPageViewModel()
                                    {
                                        Message             = msg.Text,
                                        isMyMessage         = true,
                                        SenderUser          = messagesPageViewModel.currentUser,
                                        isUserChangingPoint = false,
                                        SendingTime         = msg.CreatedOn
                                    });
                                }
                                else
                                {
                                    tempModel.Add(new ChatPageViewModel()
                                    {
                                        Message             = msg.Text,
                                        isMyMessage         = false,
                                        SenderUser          = messagesPageViewModel.OtherUser,
                                        isUserChangingPoint = false,
                                        SendingTime         = msg.CreatedOn
                                    });
                                }
                            }
                            ChatPageViewModels = tempModel.OrderBy(x => x.SendingTime).ToList();
                            LastMessageOwnerId = ChatPageViewModels[0].SenderUser.Id;
                            ChatPageViewModels[0].isUserChangingPoint = true;
                            foreach (ChatPageViewModel chatPageViewModel in ChatPageViewModels)
                            {
                                if (chatPageViewModel.SenderUser.Id != LastMessageOwnerId)
                                {
                                    chatPageViewModel.isUserChangingPoint = true;
                                    LastMessageOwnerId = chatPageViewModel.SenderUser.Id;
                                }
                            }
                            colMessages.ItemsSource = ChatPageViewModels;
                            colMessages.VerticalScrollBarVisibility = ScrollBarVisibility.Never;
                            colMessages.ScrollTo(ChatPageViewModels.Last(), -1, ScrollToPosition.End, true);
                        }
                    }
                }
            }
            else
            {
                mainChannel = null;
            }
            activityControl.MakeUnVisible(ActivityLayout, activity);
            layoutMain.IsVisible = true;



            return;
        }