コード例 #1
0
ファイル: ContactViewModel.cs プロジェクト: wyxy2005/bluceNet
 public ContactViewModel(User user, ContactViewModel parent)
 {
     User = user;
     IsOnline = user.Online;
     Status = user.Online ? "Online" : "Offline";
     _parent = parent;
 }
コード例 #2
0
ファイル: MainViewModel.cs プロジェクト: wyxy2005/bluceNet
        private void InitializeConnection(string url, Cookie authCookie)
        {
            _connection = new HubConnection(url) { CookieContainer = new CookieContainer() };
            _connection.CookieContainer.Add(authCookie);

            // Get a reference to the chat proxy
            _chat = new Chat(_connection);

            // Start the connection
            _connection.Start().ContinueWith(task =>
            {
                if (task.IsFaulted)
                {
                    // Show a connection error here
                }
                else
                {
                    // Get a list of users and add it to the view model
                    _chat.GetUsers().ContinueWith(getUsersTask =>
                    {
                        if (getUsersTask.IsFaulted)
                        {
                            // Show a connection error here
                        }
                        else
                        {
                            var result = getUsersTask.Result;
                            Me = new ContactViewModel(result.Single(u => u.Name == Name));
                            Me.OpenChatEvent += OnOpenChat;

                            // Exclude current user from Contact list
                            var contacts = from User user in result
                                           where !user.Name.Equals(Me.User.Name, StringComparison.OrdinalIgnoreCase)
                                           select new ContactViewModel(user, Me);

                            Contacts = new ObservableCollection<ContactViewModel>(contacts);
                        }
                    });
                }
            });

            // Fire events on the ui thread
            _chat.UserOffline += user => _syncContext.Post(_ => OnUserStatusChange(user), null);
            _chat.UserOnline += user => _syncContext.Post(_ => OnUserStatusChange(user), null);
            _chat.Message += message => _syncContext.Post(_ => OnMessage(message), null);
        }