Exemple #1
0
 public ChatPage(Friend friend, ChatBook chatBook)
 {
     InitializeComponent();
     Friend         = friend;
     BindingContext = App.Container.Resolve <ChatViewModel>(
         new TypedParameter(typeof(Friend), friend),
         new TypedParameter(typeof(ChatBook), chatBook));
 }
Exemple #2
0
        public ChatViewModel(Friend friend, ChatBook chatBook, IChatService chatService, IRealmStore realmStore)
        {
            _friend      = friend;
            _chatBook    = chatBook;
            _chatService = chatService;
            _realmStore  = realmStore;

            PostMessageCommand = new Command <string>(PostMessage);
        }
Exemple #3
0
        /// <summary>
        /// Discover new matching friends from the backend.
        /// </summary>
        public async Task DiscoverFriendsAsync(List <LocalContact> contacts)
        {
            //Find unassociated contacts
            var contactsFromFriends  = Friends.Select(f => f.LocalContact);
            var unassociatedContacts = contacts
                                       .Except(contactsFromFriends, new ContactComparer(ContactComparer.CompareBy.PhoneNumber)).ToList();

            var friends = await _friendsService
                          .FetchFriends(unassociatedContacts.Select(f => f.NormalizedPhoneNumber));

            if (friends == null)
            {
                return;
            }

            foreach (var friend in friends)
            {
                if (Friends.Contains(friend, new FriendsComparer()))
                {
                    continue;
                }

                friend.LocalContact = unassociatedContacts
                                      .SingleOrDefault(c => c.NormalizedPhoneNumber == friend.PhoneNumber);

                //Persist friend
                await _keyValueStore.Insert(friend);

                Friends.Add(friend);

                //Persist chatbook
                var chatbook = new ChatBook()
                {
                    FriendKey = friend.Key
                };
                await _realmStore.AddAsync(chatbook);

                OnPropertyChanged(nameof(Friends));
            }
        }