public override void Do(ActionArgs e) { Begin(e); ActionFacebookLoginArgs arg = e as ActionFacebookLoginArgs; if (precheckToDo(e)) { if (!FacebookClient.Instance.IsUserLogedin()) { Deployment.Current.Dispatcher.BeginInvoke(() => { LoginFacebookDialog dialog = new LoginFacebookDialog(arg.AppInfo); dialog.OnComplete += dialog_OnComplete; arg.ParentLayout.Children.Add(dialog.Dialog); dialog.show(0, 0); _waiting.Add(dialog, arg); }); } else { arg.IsCancelByLogedin = true; Done(arg); } } else { Cancel(e); } }
public override void Cancel(ActionArgs e) { ActionFacebookLoginArgs arg = e as ActionFacebookLoginArgs; if (arg != null) { try { LoginFacebookDialog dialog = _waiting.FirstOrDefault(x => x.Value == arg).Key; arg.ParentLayout.Children.Remove(dialog.Dialog); arg.Result = null; } catch (Exception ex) { //throw ex; } } else { Exception ex = new Exception("Facebook login dialog error"); //throw ex; } base.Cancel(e); }
void dialog_OnComplete(object sender, LoginFacebookDialogCompleteArgs e) { LoginFacebookDialog dialog = sender as LoginFacebookDialog; if (dialog != null) { try { ActionFacebookLoginArgs arg = _waiting[dialog]; arg.ParentLayout.Children.Remove(dialog.Dialog); arg.Result = e; Done(arg); } catch (Exception ex) { //throw ex; } } else { Exception ex = new Exception("Facebook login dialog error"); //throw ex; } }