/// <summary> /// Merges information we already have with information about verified phone numbers from VK. /// </summary> private void _GetUserInfo(IList <UserInfo> usersInfo) { try { foreach (var info in usersInfo) { var friend = App.Current.EntityService.Friends.FirstOrDefault(x => x.Uid == info.Uid); if (friend == null) { continue; // Skip. } // Save cool number. friend.VerifiedPhone = info.VerifiedPhone; // Compare phone numbers and update contact with existent contact info. foreach (var contact in App.Current.EntityService.Contacts) { if (_IsEquals(contact.VerifiedPhone, friend.VerifiedPhone)) // Custom equality method for phone numbers. { contact.Photo = friend.Photo; // image in view model contact.Uid = friend.Uid; contact.FullName = friend.FullName; contact.NeedRequest = false; // It was true by default. break; } } } } catch (Exception ex) { Debug.WriteLine("_GetUserInfo failed: " + ex.Message); } Dispatcher.BeginInvoke(() => { // Save sync time. App.Current.LastContactsSync = DateTime.Now; // Push changes into view. GlobalIndicator.Instance.Text = string.Empty; GlobalIndicator.Instance.IsLoading = false; try { _model = new ContactsByFirstName(App.Current.EntityService.Contacts.ToList()); FriendsPanel.ItemsSource = _model; } catch (Exception ex) { Debug.WriteLine("_GetUserInfo failed in ContactsPage: " + ex.Message); } InviteFriendButton.Visibility = Visibility.Visible; FriendsPanel.Visibility = Visibility.Visible; SyncContactsDescription.Visibility = Visibility.Collapsed; SyncContactsButton.Visibility = Visibility.Collapsed; }); }
public ContactsPage() { InitializeComponent(); _CreateBar(); _contactsCache = new ContactsCache(); _UpdateNotificationButtons(); App.Current.EntityService.StateCounter.PropertyChanged += StateCounter_PropertyChanged; App.Current.EntityService.StateCounter.UnreadMids.CollectionChanged += UnreadMids_CollectionChanged; if (App.Current.IsFirstRun || App.Current.LastContactsSync == DateTime.MinValue) // Is first run or never synced { SyncContactsDescription.Visibility = Visibility.Visible; SyncContactsButton.Visibility = Visibility.Visible; InviteFriendButton.Visibility = Visibility.Collapsed; FriendsPanel.Visibility = Visibility.Collapsed; // Empty list. } else { // Build View Model. InviteFriendButton.Visibility = Visibility.Visible; FriendsPanel.Visibility = Visibility.Visible; SyncContactsDescription.Visibility = Visibility.Collapsed; SyncContactsButton.Visibility = Visibility.Collapsed; var contacts = _contactsCache.GetItems(); App.Current.EntityService.Contacts.Clear(); foreach (var contact in contacts) { var friend = App.Current.EntityService.Friends.FirstOrDefault(x => x.Uid == contact.Uid); if (friend != null) contact.Photo = friend.Photo; else { if (App.Current.EntityService.CurrentUser.UserInfo.Uid == contact.Uid) contact.Photo = App.Current.EntityService.CurrentUser.Photo; else contact.Photo = App.Current.EntityService.DefaultAvatar; } App.Current.EntityService.Contacts.Add(contact); } _model = new ContactsByFirstName(App.Current.EntityService.Contacts.ToList()); FriendsPanel.ItemsSource = _model; // In a background get info about new contacts appeared in contacts book...let it be one time per 5 days TimeSpan span = TimeSpan.FromTicks(DateTime.Now.Ticks - App.Current.LastContactsSync.Ticks); if (span.Days > 5) _SearchAllContactsOnPhone(_UpdateContacts); } App.Current.IsFirstRun = false; }
public ContactsPage() { InitializeComponent(); _CreateBar(); _contactsCache = new ContactsCache(); _UpdateNotificationButtons(); App.Current.EntityService.StateCounter.PropertyChanged += StateCounter_PropertyChanged; App.Current.EntityService.StateCounter.UnreadMids.CollectionChanged += UnreadMids_CollectionChanged; if (App.Current.IsFirstRun || App.Current.LastContactsSync == DateTime.MinValue) // Is first run or never synced { SyncContactsDescription.Visibility = Visibility.Visible; SyncContactsButton.Visibility = Visibility.Visible; InviteFriendButton.Visibility = Visibility.Collapsed; FriendsPanel.Visibility = Visibility.Collapsed; // Empty list. } else { // Build View Model. InviteFriendButton.Visibility = Visibility.Visible; FriendsPanel.Visibility = Visibility.Visible; SyncContactsDescription.Visibility = Visibility.Collapsed; SyncContactsButton.Visibility = Visibility.Collapsed; var contacts = _contactsCache.GetItems(); App.Current.EntityService.Contacts.Clear(); foreach (var contact in contacts) { var friend = App.Current.EntityService.Friends.FirstOrDefault(x => x.Uid == contact.Uid); if (friend != null) { contact.Photo = friend.Photo; } else { if (App.Current.EntityService.CurrentUser.UserInfo.Uid == contact.Uid) { contact.Photo = App.Current.EntityService.CurrentUser.Photo; } else { contact.Photo = App.Current.EntityService.DefaultAvatar; } } App.Current.EntityService.Contacts.Add(contact); } _model = new ContactsByFirstName(App.Current.EntityService.Contacts.ToList()); FriendsPanel.ItemsSource = _model; // In a background get info about new contacts appeared in contacts book...let it be one time per 5 days TimeSpan span = TimeSpan.FromTicks(DateTime.Now.Ticks - App.Current.LastContactsSync.Ticks); if (span.Days > 5) { _SearchAllContactsOnPhone(_UpdateContacts); } } App.Current.IsFirstRun = false; }
/// <summary> /// Merges information we already have with information about verified phone numbers from VK. /// </summary> private void _GetUserInfo(IList<UserInfo> usersInfo) { try { foreach (var info in usersInfo) { var friend = App.Current.EntityService.Friends.FirstOrDefault(x => x.Uid == info.Uid); if (friend == null) continue; // Skip. // Save cool number. friend.VerifiedPhone = info.VerifiedPhone; // Compare phone numbers and update contact with existent contact info. foreach (var contact in App.Current.EntityService.Contacts) { if (_IsEquals(contact.VerifiedPhone, friend.VerifiedPhone)) // Custom equality method for phone numbers. { contact.Photo = friend.Photo; // image in view model contact.Uid = friend.Uid; contact.FullName = friend.FullName; contact.NeedRequest = false; // It was true by default. break; } } } } catch (Exception ex) { Debug.WriteLine("_GetUserInfo failed: " + ex.Message); } Dispatcher.BeginInvoke(() => { // Save sync time. App.Current.LastContactsSync = DateTime.Now; // Push changes into view. GlobalIndicator.Instance.Text = string.Empty; GlobalIndicator.Instance.IsLoading = false; try { _model = new ContactsByFirstName(App.Current.EntityService.Contacts.ToList()); FriendsPanel.ItemsSource = _model; } catch (Exception ex) { Debug.WriteLine("_GetUserInfo failed in ContactsPage: " + ex.Message); } InviteFriendButton.Visibility = Visibility.Visible; FriendsPanel.Visibility = Visibility.Visible; SyncContactsDescription.Visibility = Visibility.Collapsed; SyncContactsButton.Visibility = Visibility.Collapsed; }); }