public async void Sync(Action callback = null) { ContactsSyncManager.c__DisplayClass9_0 stateMachine = new ContactsSyncManager.c__DisplayClass9_0(); stateMachine._4__this = this; stateMachine.callback = callback; if (!AppGlobalStateManager.Current.GlobalState.AllowSendContacts || this._isSynching) { if (stateMachine.callback == null) { return; } stateMachine.callback(); } else { this._isSynching = true; ContactsSyncManager.c__DisplayClass9_0 cDisplayClass90_2 = stateMachine; List <string> stringList = cDisplayClass90_2.phoneNumbers; List <string> phoneContactsAsync = await ContactsSyncManager.GetPhoneContactsAsync(); cDisplayClass90_2.phoneNumbers = phoneContactsAsync; cDisplayClass90_2 = null; if (stateMachine.phoneNumbers == null) { if (stateMachine.callback != null) { stateMachine.callback(); } this._isSynching = false; } else { ContactsCache contactsCache = await ContactsSyncManager.RetrieveContactsAsync(); if (!ContactsSyncManager.AreListsEqual(stateMachine.phoneNumbers, contactsCache.PhoneNumbers)) { AccountService.Instance.LookupContacts("phone", "", stateMachine.phoneNumbers, new Action <BackendResult <LookupContactsResponse, ResultCode> >(stateMachine.b__0)); } this._isSynching = false; if (stateMachine.callback == null) { return; } stateMachine.callback(); } } }
void IAsyncStateMachine.MoveNext() { int num1 = this._1__state; try { TaskAwaiter <List <string> > awaiter1; TaskAwaiter <ContactsCache> awaiter2; if (num1 != 0) { if (num1 != 1) { this._8__1 = new ContactsSyncManager.c__DisplayClass9_0(); this._8__1._4__this = this._4__this; this._8__1.callback = this.callback; if (!AppGlobalStateManager.Current.GlobalState.AllowSendContacts || this._4__this._isSynching) { if (this._8__1.callback != null) { this._8__1.callback(); goto label_21; } else { goto label_21; } } else { this._4__this._isSynching = true; this._7__wrap1 = this._8__1; List <string> stringList = this._7__wrap1.phoneNumbers; awaiter1 = ContactsSyncManager.GetPhoneContactsAsync().GetAwaiter(); if (!awaiter1.IsCompleted) { this._1__state = 0; this.u__1 = awaiter1; this.t__builder.AwaitUnsafeOnCompleted <TaskAwaiter <List <string> >, ContactsSyncManager.d__9>(ref awaiter1, ref this); return; } } } else { awaiter2 = this.u__2; this.u__2 = new TaskAwaiter <ContactsCache>(); this._1__state = -1; goto label_16; } } else { awaiter1 = this.u__1; this.u__1 = new TaskAwaiter <List <string> >(); this._1__state = -1; } List <string> result1 = awaiter1.GetResult(); awaiter1 = new TaskAwaiter <List <string> >(); this._7__wrap1.phoneNumbers = result1; this._7__wrap1 = null; if (this._8__1.phoneNumbers == null) { if (this._8__1.callback != null) { this._8__1.callback(); } this._4__this._isSynching = false; goto label_21; } else { awaiter2 = ContactsSyncManager.RetrieveContactsAsync().GetAwaiter(); if (!awaiter2.IsCompleted) { this._1__state = 1; this.u__2 = awaiter2; this.t__builder.AwaitUnsafeOnCompleted <TaskAwaiter <ContactsCache>, ContactsSyncManager.d__9>(ref awaiter2, ref this); return; } } label_16: ContactsCache result2 = awaiter2.GetResult(); awaiter2 = new TaskAwaiter <ContactsCache>(); if (!ContactsSyncManager.AreListsEqual(this._8__1.phoneNumbers, result2.PhoneNumbers)) { AccountService.Instance.LookupContacts("phone", "", this._8__1.phoneNumbers, new Action <BackendResult <LookupContactsResponse, ResultCode> >(this._8__1.b__0)); } this._4__this._isSynching = false; if (this._8__1.callback != null) { this._8__1.callback(); } } catch (Exception ex) { this._1__state = -2; this.t__builder.SetException(ex); return; } label_21: this._1__state = -2; this.t__builder.SetResult(); }