public async Task EnsureInSyncAsync(bool forceNow = false)
        {
            bool syncContacts = AppGlobalStateManager.Current.GlobalState.SyncContacts;
            bool flag         = AppGlobalStateManager.Current.LoggedInUserId != 0;

            if (!flag || !syncContacts)
            {
                await this.DeleteAllContactsAsync();
            }
            if (flag)
            {
                SavedContacts var_2_158 = await this.GetSavedList();

                if ((DateTime.UtcNow - var_2_158.SyncedDate).TotalHours >= 24.0 | forceNow)
                {
                    VKClient.Common.Backend.UsersService.Instance.GetFriendsWithRequests(new Action <VKClient.Common.Backend.BackendResult <VKClient.Audio.Base.DataObjects.AllFriendsList, ResultCode> >(async(res) =>
                    {
                        if (res.ResultCode == ResultCode.Succeeded)
                        {
                            FriendsCache.Instance.SetFriends(res.ResultData.friends, res.ResultData.requests);
                            if (syncContacts)
                            {
                                await this.SyncContactsAsync(res.ResultData.friends);
                            }
                        }
                    }
                                                                                                                                                                                                          ));
                }
            }
        }
        public async void UpdateData()
        {
            if (this._isDataUpdating)
            {
                return;
            }
            this._isDataUpdating = true;
            SavedContacts friends = await FriendsCache.Instance.GetFriends();

            this.Birthdays.Clear();
            foreach (User savedUser in friends.SavedUsers)
            {
                if (savedUser.IsBirthdayToday())
                {
                    this.Birthdays.Add(new Birthday(savedUser, "", true));
                }
            }
            foreach (User savedUser in friends.SavedUsers)
            {
                if (savedUser.IsBirthdayTomorrow())
                {
                    this.Birthdays.Add(new Birthday(savedUser, CommonResources.Tomorrow.ToUpperInvariant(), false));
                }
            }
            // ISSUE: method reference
            this.NotifyPropertyChanged <Visibility>(() => this.BlockVisibility);
            this._isDataUpdating = false;
        }
        public async void UpdateData()
        {
            if (this._isInUpdateData)
            {
                return;
            }
            this._isInUpdateData = true;
            SavedContacts friends = await FriendsCache.Instance.GetFriends();

            this._birthdays.Clear();
            foreach (User savedUser in friends.SavedUsers)
            {
                if (savedUser.IsBirthdayToday())
                {
                    this._birthdays.Add(new BirthdayInfo(savedUser, CommonResources.HasABirthdayToday));
                }
            }
            foreach (User savedUser in friends.SavedUsers)
            {
                if (savedUser.IsBirthdayTomorrow())
                {
                    this._birthdays.Add(new BirthdayInfo(savedUser, CommonResources.HasABirthdayTomorrow));
                }
            }
            this.NotifyChanged();
            this._isInUpdateData = false;
        }
        private async Task DoDeleteAllContactsAsync()
        {
            this._deleting = true;
            try
            {
                Stopwatch sw = Stopwatch.StartNew();
                await(await ContactStore.CreateOrOpenAsync()).DeleteAsync();
                await SocialManager.DeprovisionAsync();

                SavedContacts savedList = await this.GetSavedList();

                DateTime dateTime = DateTime.MinValue;
                savedList.SyncedDate = dateTime;
                savedList.SavedUsers.Clear();
                await this.EnsurePersistSavedContactsAsync();

                sw.Stop();
                sw = (Stopwatch)null;
            }
            catch (Exception ex)
            {
                Logger.Instance.Error("ContactsManager failed to delete all contacts", ex);
            }
            finally
            {
                this._deleting = false;
            }
        }
Exemple #5
0
        public async void GetData(GenericCollectionViewModel <List <User>, Group <FriendHeader> > caller, int offset, int count, Action <BackendResult <List <User>, ResultCode> > callback)
        {
            SavedContacts friends = await FriendsCache.Instance.GetFriends();

            if ((DateTime.UtcNow - friends.SyncedDate).TotalMinutes < 60.0)
            {
                List <User> resultData = (List <User>)null;
                if (friends.SavedUsers != null)
                {
                    resultData = this._sexFilter > 0 ? friends.SavedUsers.Where <User>((Func <User, bool>)(u => u.sex == this._sexFilter)).ToList <User>() : friends.SavedUsers;
                }
                this._allFriendsRaw = resultData;
                callback(new BackendResult <List <User>, ResultCode>(ResultCode.Succeeded, resultData));
            }
            else
            {
                UsersService.Instance.GetFriendsForCurrentUser((Action <BackendResult <List <User>, ResultCode> >)(res =>
                {
                    if (res.ResultCode == ResultCode.Succeeded)
                    {
                        List <User> userList = (List <User>)null;
                        if (res.ResultData != null)
                        {
                            userList = this._sexFilter > 0 ? res.ResultData.Where <User>((Func <User, bool>)(u => u.sex == this._sexFilter)).ToList <User>() : res.ResultData;
                        }
                        this._allFriendsRaw = userList;
                    }
                    callback(res);
                }));
            }
        }
Exemple #6
0
 void OnContactSearchCompleted(object sender, ContactsSearchEventArgs e)
 {
     try
     {
         Contacts = new List <UserContact>();
         var allContacts = new List <Contact>(e.Results.Where(x => x.PhoneNumbers.Count() > 0).OrderBy(c => c.DisplayName));
         foreach (Contact contact in allContacts)
         {
             UserContact SavedContact = new UserContact()
             {
                 Contact = contact
             };
             if (SavedContacts.Any(x => x.PhoneNumber == contact.PhoneNumbers.ElementAt(0).PhoneNumber))
             {
                 SavedContact.IsSelected = true;
             }
             else
             {
                 SavedContact.IsSelected = false;
             }
             Contacts.Add(SavedContact);
         }
     }
     catch (System.Exception ex)
     {
         MessageBox.Show("Error in retrieving contacts : " + ex.Message);
     }
 }
Exemple #7
0
        private async Task DoDeleteAllContactsAsync()
        {
            this._deleting = true;
            try
            {
                Stopwatch stopwatch = Stopwatch.StartNew();
                await(await ContactStore.CreateOrOpenAsync()).DeleteAsync();
                await SocialManager.DeprovisionAsync();

                SavedContacts arg_1E1_0 = await this.GetSavedList();

                arg_1E1_0.SyncedDate = DateTime.MinValue;
                arg_1E1_0.SavedUsers.Clear();
                await this.EnsurePersistSavedContactsAsync();

                stopwatch.Stop();
                stopwatch = null;
            }
            catch (Exception var_4_272)
            {
                Logger.Instance.Error("ContactsManager failed to delete all contacts", var_4_272);
            }
            finally
            {
                int num = 0;
                if (num < 0)
                {
                    this._deleting = false;
                }
            }
        }
        public async void GetData(GenericCollectionViewModel <List <User>, Group <FriendHeader> > caller, int offset, int count, Action <BackendResult <List <User>, ResultCode> > callback)
        {
            if (this.OwnFriends)
            {
                switch (this._mode)
                {
                case FriendsViewModel.Mode.Friends:
                    bool          isCachedFriendsLoaded = false;
                    SavedContacts friends = (SavedContacts)await FriendsCache.Instance.GetFriends();

                    if (!this._allFriendsVM.Refresh && (DateTime.UtcNow - friends.SyncedDate).TotalMinutes < 60.0)
                    {
                        callback(new BackendResult <List <User>, ResultCode>(ResultCode.Succeeded, friends.SavedUsers));
                        this.RequestsViewModel = friends.Requests;
                        isCachedFriendsLoaded  = true;
                    }
                    this._helperGetCurrentUserFriends.RunAction((Action <BackendResult <List <User>, ResultCode> >)(result =>
                    {
                        if (isCachedFriendsLoaded)
                        {
                            return;
                        }
                        callback(result);
                    }), this._getAllFriendsCalled);
                    this._helperGetFriendsRequests.RunAction((Action <BackendResult <List <User>, ResultCode> >)(result =>
                    {
                        if (isCachedFriendsLoaded)
                        {
                            return;
                        }
                        //callback(result);
                    }), this._getAllFriendsCalled);
                    break;

                case FriendsViewModel.Mode.Lists:
                    this._helperFriendsFromList.RunAction(callback, this._getAllFriendsCalled);
                    break;
                }
            }
            else
            {
                this._helperGetFriendsAndMutual.RunAction((Action <BackendResult <FriendsAndMutualFriends, ResultCode> >)(backendResult =>
                {
                    if (backendResult.ResultCode == ResultCode.Succeeded)
                    {
                        callback(new BackendResult <List <User>, ResultCode>()
                        {
                            ResultData = backendResult.ResultData.friends,
                            ResultCode = ResultCode.Succeeded
                        });
                    }
                    else
                    {
                        callback(new BackendResult <List <User>, ResultCode>(backendResult.ResultCode));
                    }
                }), this._getAllFriendsCalled);
            }
            this._getAllFriendsCalled = true;
        }
        public async void GetData(GenericCollectionViewModel <List <User>, BirthdayInfo> caller, int offset, int count, Action <BackendResult <List <User>, ResultCode> > callback)
        {
            if (offset != 0)
            {
                return;
            }
            SavedContacts friends = await FriendsCache.Instance.GetFriends();

            callback(new BackendResult <List <User>, ResultCode>(ResultCode.Succeeded, friends.SavedUsers));
        }
        public async void GetData(GenericCollectionViewModel <List <User>, Group <FriendHeader> > caller, int offset, int count, Action <BackendResult <List <User>, ResultCode> > callback)
        {
            if (this._pickUserMode == PickUserMode.PickForStickerPackGift)
            {
                StoreService.Instance.GetFriendsList(this._productId, (Action <BackendResult <List <User>, ResultCode> >)(result =>
                {
                    if (result.ResultCode == ResultCode.Succeeded)
                    {
                        this._allFriendsRaw = result.ResultData;
                    }
                    Action <BackendResult <List <User>, ResultCode> > action = callback;
                    if (action == null)
                    {
                        return;
                    }
                    BackendResult <List <User>, ResultCode> backendResult = result;
                    action(backendResult);
                }));
            }
            else
            {
                SavedContacts friends = (SavedContacts)await FriendsCache.Instance.GetFriends();

                if ((DateTime.UtcNow - friends.SyncedDate).TotalMinutes < 60.0)
                {
                    List <User> resultData = null;
                    if (friends.SavedUsers != null)
                    {
                        resultData = this._sexFilter > 0 ? (List <User>)Enumerable.ToList <User>(Enumerable.Where <User>(friends.SavedUsers, (Func <User, bool>)(u => u.sex == this._sexFilter))) : friends.SavedUsers;
                    }
                    this._allFriendsRaw = resultData;
                    callback(new BackendResult <List <User>, ResultCode>(ResultCode.Succeeded, resultData));
                }
                else
                {
                    UsersService.Instance.GetFriendsForCurrentUser((Action <BackendResult <List <User>, ResultCode> >)(res =>
                    {
                        if (res.ResultCode == ResultCode.Succeeded)
                        {
                            List <User> userList = null;
                            if (res.ResultData != null)
                            {
                                userList = this._sexFilter > 0 ? (List <User>)Enumerable.ToList <User>(Enumerable.Where <User>(res.ResultData, (Func <User, bool>)(u => u.sex == this._sexFilter))) : res.ResultData;
                            }
                            this._allFriendsRaw = userList;
                        }
                        callback(res);
                    }));
                }
            }
        }
 private async Task <SavedContacts> GetSavedList()
 {
     if (this._savedContacts == null)
     {
         this._savedContacts = new SavedContacts();
         try
         {
             int num = await CacheManager.TryDeserializeAsync((IBinarySerializable)this._savedContacts, ContactsManager.SAVED_CONTACTS_FILE_ID, CacheManager.DataType.CachedData) ? 1 : 0;
         }
         catch
         {
         }
     }
     this._needPersist = true;
     return(this._savedContacts);
 }
        public async Task SyncContactsAsync(List <User> friendsList)
        {
            if (this._synching || this._deleting)
            {
                return;
            }
            this._synching = true;
            friendsList    = friendsList.Take <User>(ContactsManager.MAX_FRIENDS_TO_SYNC).ToList <User>();
            long initiallyLoggedInUser = AppGlobalStateManager.Current.LoggedInUserId;

            try
            {
                SavedContacts savedContacts = await this.GetSavedList();

                List <User>         savedList = savedContacts.SavedUsers;
                Func <User, string> getKey    = (Func <User, string>)(u => u.uid.ToString());

                List <Tuple <User, User> > updatedUsersTuples;
                List <User> createdUsers;
                List <User> deletedUsers;

                ListUtils.GetListChanges <User>(savedList, friendsList, getKey, (Func <User, User, bool>)((u1, u2) =>
                {
                    if (ContactsManager.AreStringsEqualOrNullEmpty(u1.first_name, u2.first_name) && ContactsManager.AreStringsEqualOrNullEmpty(u1.last_name, u2.last_name) && (ContactsManager.AreStringsEqualOrNullEmpty(u1.mobile_phone, u2.mobile_phone) && ContactsManager.AreStringsEqualOrNullEmpty(u1.home_phone, u2.home_phone)) && (ContactsManager.AreStringsEqualOrNullEmpty(u1.site, u2.site) && ContactsManager.AreStringsEqualOrNullEmpty(u1.bdate, u2.bdate)))
                    {
                        return(ContactsManager.AreStringsEqualOrNullEmpty(u1.photo_max, u2.photo_max));
                    }
                    return(false);
                }), out updatedUsersTuples, out createdUsers, out deletedUsers);

                Logger.Instance.Info("ContactsManager got {0} updated users, {1} new users, {2} deleted users", updatedUsersTuples.Count, createdUsers.Count, deletedUsers.Count);
                int totalCountToSync = createdUsers.Count;
                int currentSyncing   = 0;
                if (initiallyLoggedInUser != AppGlobalStateManager.Current.LoggedInUserId || !AppGlobalStateManager.Current.GlobalState.SyncContacts)
                {
                    await this.DoDeleteAllContactsAsync();
                }
                else
                {
                    ContactStore contactStore = await ContactStore.CreateOrOpenAsync();

                    await this.EnsureProvisioned(contactStore);

                    StoredContact meContact = await contactStore.FindContactByRemoteIdAsync(ContactsManager.GetRemoteId(AppGlobalStateManager.Current.GlobalState.LoggedInUser));

                    if (meContact != null)
                    {
                        await this.SetContactProperties(meContact, AppGlobalStateManager.Current.GlobalState.LoggedInUser, (User)null);

                        await meContact.SaveAsync();
                    }
                    contactStore.CreateContactQuery();
                    foreach (Tuple <User, User> tuple in updatedUsersTuples)
                    {
                        User updUser      = tuple.Item2;
                        User originalUser = tuple.Item1;
                        if (initiallyLoggedInUser != AppGlobalStateManager.Current.LoggedInUserId || !AppGlobalStateManager.Current.GlobalState.SyncContacts)
                        {
                            await this.DoDeleteAllContactsAsync();

                            return;
                        }
                        try
                        {
                            StoredContact contact = await contactStore.FindContactByRemoteIdAsync(ContactsManager.GetRemoteId(updUser));

                            await this.SetContactProperties(contact, updUser, originalUser);

                            if (contact != null)
                            {
                                await contact.SaveAsync();
                            }
                            contact = null;
                        }
                        catch (Exception ex)
                        {
                            Logger.Instance.Error("Failed to update contact for user " + updUser.Name, ex);
                        }
                        updUser      = (User)null;
                        originalUser = (User)null;
                    }
                    //List<Tuple<User, User>>.Enumerator enumerator1 = new List<Tuple<User, User>>.Enumerator();
                    foreach (User user in createdUsers)
                    {
                        User newUser = user;
                        ++currentSyncing;
                        if (initiallyLoggedInUser != AppGlobalStateManager.Current.LoggedInUserId || !AppGlobalStateManager.Current.GlobalState.SyncContacts)
                        {
                            await this.DoDeleteAllContactsAsync();

                            return;
                        }
                        try
                        {
                            if (await contactStore.FindContactByRemoteIdAsync(ContactsManager.GetRemoteId(newUser)) == null)
                            {
                                Stopwatch sw = Stopwatch.StartNew();
                                this.FireSyncStatusChanged(currentSyncing, totalCountToSync);
                                Logger.Instance.Info("ContactsManager begin creating user");
                                StoredContact contact = new StoredContact(contactStore);
                                await this.SetContactProperties(contact, newUser, null);

                                await contact.SaveAsync();

                                Logger.Instance.Info("ContactsManager end creating user");
                                sw.Stop();
                                long num = 500L - sw.ElapsedMilliseconds;
                                if (num > 0L)
                                {
                                    await Task.Delay((int)num);
                                }
                                sw      = null;
                                contact = null;
                            }
                            savedList.Add(newUser);
                        }
                        catch (Exception ex)
                        {
                            Logger.Instance.Error("Failed to create contact for user " + newUser.Name, ex);
                        }
                        newUser = null;
                    }
                    //List<User>.Enumerator enumerator2 = new List<User>.Enumerator();
                    foreach (User user in deletedUsers)
                    {
                        User deletedUser = user;
                        if (initiallyLoggedInUser != AppGlobalStateManager.Current.LoggedInUserId || !AppGlobalStateManager.Current.GlobalState.SyncContacts)
                        {
                            await this.DoDeleteAllContactsAsync();

                            return;
                        }
                        try
                        {
                            StoredContact contactByRemoteIdAsync = await contactStore.FindContactByRemoteIdAsync(ContactsManager.GetRemoteId(deletedUser));

                            if (contactByRemoteIdAsync != null)
                            {
                                await contactStore.DeleteContactAsync(contactByRemoteIdAsync.Id);
                            }
                            savedList.Remove(deletedUser);
                        }
                        catch (Exception ex)
                        {
                            Logger.Instance.Error("Failed to delete contact for user " + deletedUser.Name, ex);
                        }
                        deletedUser = null;
                    }
                    //enumerator2 = new List<User>.Enumerator();
                    savedContacts.SyncedDate = DateTime.UtcNow;
                    await this.EnsurePersistSavedContactsAsync();

                    savedContacts      = null;
                    savedList          = null;
                    deletedUsers       = null;
                    createdUsers       = null;
                    updatedUsersTuples = null;
                    contactStore       = null;
                    meContact          = null;
                }
            }
            catch (Exception ex)
            {
                Logger.Instance.Error("Failed to sync contacts. ", ex);
            }
            finally
            {
                this._synching = false;
                this.FireSyncStatusChanged(0, 0);
            }
        }
Exemple #13
0
        public async Task SyncContactsAsync(List <User> friendsList)
        {
            if (!this._synching && !this._deleting)
            {
                this._synching = true;
                friendsList    = Enumerable.ToList <User>(Enumerable.Take <User>(friendsList, ContactsManager.MAX_FRIENDS_TO_SYNC));
                long loggedInUserId = AppGlobalStateManager.Current.LoggedInUserId;
                try
                {
                    SavedContacts savedContacts = await this.GetSavedList();

                    SavedContacts       savedContacts2 = savedContacts;
                    List <User>         list           = savedContacts2.SavedUsers;
                    List <User>         arg_1E7_0      = list;
                    List <User>         arg_1E7_1      = friendsList;
                    Func <User, string> arg_1E7_2      = new Func <User, string>((u) => { return(u.uid.ToString()); });

                    Func <User, User, bool> arg_1E7_3 = new Func <User, User, bool>((u1, u2) =>
                    {
                        return(ContactsManager.AreStringsEqualOrNullEmpty(u1.first_name, u2.first_name) && ContactsManager.AreStringsEqualOrNullEmpty(u1.last_name, u2.last_name) && ContactsManager.AreStringsEqualOrNullEmpty(u1.mobile_phone, u2.mobile_phone) && ContactsManager.AreStringsEqualOrNullEmpty(u1.home_phone, u2.home_phone) && ContactsManager.AreStringsEqualOrNullEmpty(u1.site, u2.site) && ContactsManager.AreStringsEqualOrNullEmpty(u1.bdate, u2.bdate) && ContactsManager.AreStringsEqualOrNullEmpty(u1.photo_max, u2.photo_max));
                    });

                    List <Tuple <User, User> > list2;
                    List <User> list3;
                    List <User> list4;
                    ListUtils.GetListChanges <User>(arg_1E7_0, arg_1E7_1, arg_1E7_2, arg_1E7_3, out list2, out list3, out list4);
                    Logger.Instance.Info("ContactsManager got {0} updated users, {1} new users, {2} deleted users", new object[]
                    {
                        list2.Count,
                        list3.Count,
                        list4.Count
                    });
                    int count = list3.Count;
                    int num   = 0;
                    if (loggedInUserId != AppGlobalStateManager.Current.LoggedInUserId || !AppGlobalStateManager.Current.GlobalState.SyncContacts)
                    {
                        await this.DoDeleteAllContactsAsync();
                    }
                    else
                    {
                        ContactStore contactStore = await ContactStore.CreateOrOpenAsync();

                        await this.EnsureProvisioned(contactStore);

                        StoredContact storedContact = await contactStore.FindContactByRemoteIdAsync(ContactsManager.GetRemoteId(AppGlobalStateManager.Current.GlobalState.LoggedInUser));

                        if (storedContact != null)
                        {
                            await this.SetContactProperties(storedContact, AppGlobalStateManager.Current.GlobalState.LoggedInUser, null);

                            await storedContact.SaveAsync();
                        }
                        contactStore.CreateContactQuery();
                        List <Tuple <User, User> > .Enumerator enumerator = list2.GetEnumerator();
                        //int num2;
                        try
                        {
                            while (enumerator.MoveNext())
                            {
                                Tuple <User, User> var_8_57F = enumerator.Current;
                                User user         = var_8_57F.Item2;
                                User originalUser = var_8_57F.Item1;
                                if (loggedInUserId != AppGlobalStateManager.Current.LoggedInUserId || !AppGlobalStateManager.Current.GlobalState.SyncContacts)
                                {
                                    await this.DoDeleteAllContactsAsync();

                                    return;
                                }
                                try
                                {
                                    StoredContact storedContact2 = await contactStore.FindContactByRemoteIdAsync(ContactsManager.GetRemoteId(user));

                                    await this.SetContactProperties(storedContact2, user, originalUser);

                                    if (storedContact2 != null)
                                    {
                                        await storedContact2.SaveAsync();
                                    }
                                    storedContact2 = null;
                                }
                                catch (Exception var_9_7B5)
                                {
                                    Logger.Instance.Error("Failed to update contact for user " + user.Name, var_9_7B5);
                                }
                                user         = null;
                                originalUser = null;
                            }
                        }
                        finally
                        {
                            //if (num2 < 0)
                            //{
                            enumerator.Dispose();
                            //}
                        }
                        enumerator = default(List <Tuple <User, User> > .Enumerator);
                        List <User> .Enumerator enumerator2 = list3.GetEnumerator();
                        try
                        {
                            while (enumerator2.MoveNext())
                            {
                                User user2 = enumerator2.Current;
                                num++;
                                if (loggedInUserId != AppGlobalStateManager.Current.LoggedInUserId || !AppGlobalStateManager.Current.GlobalState.SyncContacts)
                                {
                                    await this.DoDeleteAllContactsAsync();

                                    return;
                                }
                                try
                                {
                                    if (await contactStore.FindContactByRemoteIdAsync(ContactsManager.GetRemoteId(user2)) == null)//todo:bug?
                                    {
                                        Stopwatch stopwatch = Stopwatch.StartNew();
                                        this.FireSyncStatusChanged(num, count);
                                        Logger.Instance.Info("ContactsManager begin creating user", new object[0]);
                                        StoredContact storedContact3 = new StoredContact(contactStore);
                                        await this.SetContactProperties(storedContact3, user2, null);

                                        await storedContact3.SaveAsync();

                                        Logger.Instance.Info("ContactsManager end creating user", new object[0]);
                                        stopwatch.Stop();
                                        long var_11_AF3 = 500L - stopwatch.ElapsedMilliseconds;
                                        if (var_11_AF3 > 0L)
                                        {
                                            await Task.Delay((int)var_11_AF3);
                                        }
                                        stopwatch      = null;
                                        storedContact3 = null;
                                    }
                                    list.Add(user2);
                                }
                                catch (Exception var_12_B82)
                                {
                                    Logger.Instance.Error("Failed to create contact for user " + user2.Name, var_12_B82);
                                }
                                user2 = null;
                            }
                        }
                        finally
                        {
                            //if (num2 < 0)
                            //{
                            enumerator2.Dispose();
                            //}
                        }
                        enumerator2 = default(List <User> .Enumerator);
                        enumerator2 = list4.GetEnumerator();
                        try
                        {
                            while (enumerator2.MoveNext())
                            {
                                User user3 = enumerator2.Current;
                                if (loggedInUserId != AppGlobalStateManager.Current.LoggedInUserId || !AppGlobalStateManager.Current.GlobalState.SyncContacts)
                                {
                                    await this.DoDeleteAllContactsAsync();

                                    return;
                                }
                                try
                                {
                                    StoredContact var_13_D35 = await contactStore.FindContactByRemoteIdAsync(ContactsManager.GetRemoteId(user3));

                                    if (var_13_D35 != null)
                                    {
                                        await contactStore.DeleteContactAsync(var_13_D35.Id);
                                    }
                                    list.Remove(user3);
                                }
                                catch (Exception var_14_DBF)
                                {
                                    Logger.Instance.Error("Failed to delete contact for user " + user3.Name, var_14_DBF);
                                }
                                user3 = null;
                            }
                        }
                        finally
                        {
                            //if (num2 < 0)
                            //{
                            enumerator2.Dispose();
                            //}
                        }
                        enumerator2 = default(List <User> .Enumerator);
                        savedContacts2.SyncedDate = DateTime.UtcNow;
                        await this.EnsurePersistSavedContactsAsync();

                        savedContacts2 = null;
                        list           = null;
                        list4          = null;
                        list3          = null;
                        list2          = null;
                        contactStore   = null;
                        storedContact  = null;
                    }
                }
                catch (Exception var_15_ECB)
                {
                    Logger.Instance.Error("Failed to sync contacts. ", var_15_ECB);
                }
                finally
                {
                    //int num2;
                    //if (num2 < 0)
                    //{
                    this._synching = false;
                    this.FireSyncStatusChanged(0, 0);
                    //}
                }
            }
        }