Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 3
0
        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));
            }
        }
Ejemplo n.º 4
0
        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());
        }