Beispiel #1
0
        /// <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;
        }
Beispiel #3
0
        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;
            });
        }