public static void AwaitInCoroutine(this Task task, Action onResult, Action <Exception> onError = null, Action onCompleted = null) { if (taskAwaiter == null) { taskAwaiter = CreateTaskAwaiter(); } taskAwaiter.AwaitTask(task, onResult, onError, onCompleted); }
private void TaskAwaiter_TaskDone(object sender, EventArgs e) { _adapter.NotifyDataSetChanged(); if (!_didRefresh) { _didRefresh = true; if (((IPreferenceContainer)Activity).GetBoolean(PreferenceKeyAutoRefresh, true)) { _taskAwaiter.AwaitTask(((IInstagramAccounts)Activity).RefreshAsync()); return; } } if (_adapter.ItemCount <= 0) { ((IFragmentContainer)Activity).ShowEmptyView(); // Push LoginFragment on first run if (!_hasPushedToLoginFragment) { ((IFragmentContainer)Activity).PushFragment(new LoginFragment()); _hasPushedToLoginFragment = true; } } else if (!_tipShown) { // Show tip on first run var dialog = new MaterialAlertDialogBuilder(Activity); dialog.SetTitle(Resource.String.title_tip); dialog.SetMessage(Resource.String.msg_tip); dialog.Show(); ((IPreferenceContainer)Activity).SetBoolean(PreferenceKeyTipIsShown, true); _tipShown = true; } }
public override bool OnOptionsItemSelected(IMenuItem item) { switch (item.ItemId) { case Resource.Id.appbar_fans_item_refresh: _taskAwaiter.AwaitTask(_account.RefreshAsync()); return(true); case Resource.Id.appbar_fans_item_followall: _taskAwaiter.AwaitTask(BatchFollowAsync(_account.Data.Unfollowers.Except(_adapter.Whitelist).ToArray())); return(true); case Resource.Id.appbar_fans_item_clear_whitelist: _adapter.Whitelist.Clear(); ((IDataStorage)Activity).SaveData(GetWhitelistFileName(), _adapter.Whitelist); _adapter.Refresh(); _adapter.NotifyDataSetChanged(); if (_adapter.ItemCount > 0) { ((IFragmentContainer)Activity).ShowContentView(); } return(true); case Resource.Id.appbar_fans_item_logout: // TODO: Really? Do this??? var awaiter = new TaskAwaiter((IFragmentContainer)Activity); awaiter.TaskDone += (source, args) => { ((IFragmentContainer)Activity).PopFragment(); }; awaiter.AwaitTask(((IInstagramAccounts)Activity).LogoutAsync(_accountPosition)); return(true); default: return(base.OnOptionsItemSelected(item)); } }
public override void OnViewCreated(View view, Bundle savedInstanceState) { ((IActionBarContainer)Activity).SetTitle(Resource.String.app_name); ((IEmptyView)Activity).SetEmptyText(Resource.String.msg_no_account); ((IEmptyView)Activity).SetEmptyImage(Resource.Drawable.ic_person_add_black_48dp); _tipShown = ((IPreferenceContainer)Activity).GetBoolean(PreferenceKeyTipIsShown, false); _recyclerView = view.FindViewById <RecyclerView>(Resource.Id.fragment_recyclerview_view); _adapter = ((IInstagramAccounts)Activity).CreateAccountAdapter(this); _recyclerView.SetAdapter(_adapter); _taskAwaiter = new TaskAwaiter((IFragmentContainer)Activity); _taskAwaiter.TaskDone += TaskAwaiter_TaskDone; _taskAwaiter.Error += TaskAwaiter_Error; _taskAwaiter.AwaitTask(((IInstagramAccounts)Activity).InitializeIfNeededAsync()); }