public void Update(UIView container, ShareResponseModel shareResponse, ChallengeModel challenge, ChallengeDetailBaseViewController ctrl = null)
        {
            ResponseCode = shareResponse?.ResponseCode ?? 0;
            Controller   = ctrl;

            //CGRect cell = TableView.RectForRowAtIndexPath(NSIndexPath.FromIndex(0));
            Container = container;
            (Container as UIButton).TouchUpInside += CloseAction;
            btnCloseBgBottom.TouchUpInside        += CloseAction;
            btnCloseBg.TouchUpInside += CloseAction;

            RoundImage.Image = UIImage.FromBundle("IconScoreTransactions");
            //Commit
            float  backgroundToOverlayWidthRatio = 0.9227f;     //from spec
            nfloat width = container.Frame.Width * backgroundToOverlayWidthRatio;
            //float backgroundHeightToWidthRatio = 0.9529f;       //from spec
            //nfloat height = width * backgroundHeightToWidthRatio;
            nfloat height = TableView.Frame.Y + CellHeight + 200;     //cell.Height;
            nfloat x      = (container.Frame.Width - width) / 2.0f;   //center in overlay
            nfloat y      = (container.Frame.Height - height) / 2.0f; //center in overlay

            Frame = new CGRect(x, y, width, height);

            //ChallengeImage.SetNeedsLayout();

            /*
             * TableView.Source = new FeedTableSource();
             * TableView.RowHeight = UITableView.AutomaticDimension;
             * TableView.EstimatedRowHeight = 130.0f;
             * TableView.ReloadData();
             */
            MessageText.Text = shareResponse.ResponseMessage;
            PointsText.Text  = shareResponse.ResponseCode > 0 && challenge.PointValue > 0 ? challenge.PointValue + " pts added to your account" : "";
            AddTriangularView();
        }
        public void ShareTemplateRefreshed(ShareResponseModel shareResponse)
        {
            if (shareResponse != null && shareResponse.ShareTemplate != null)
            {
                ShareTemplate = shareResponse.ShareTemplate;
            }

            RemoveOverlay();
        }
Ejemplo n.º 3
0
 public void ShareTemplateRefreshed(ShareResponseModel shareResponse)
 {
     if (shareResponse != null && shareResponse.ShareTemplate != null)
     {
         ShareTemplate       = shareResponse.ShareTemplate;
         ReferralString.Text = ShareTemplate.ReferralString;
         //ShareMessage.Text = ShareTemplate.PostTitle;
     }
     RemoveOverlay();
 }
Ejemplo n.º 4
0
        public void PostShareResponse(ShareResponseModel shareResponse)
        {
            UIView overlay = Platform.AddOverlay(UIColor.FromRGBA(36, 209, 180, 153));  //from spec

            if (overlay != null)
            {
                ChallengeCompleteView challengeComplete = ChallengeCompleteView.Create();
                overlay.AddSubview(challengeComplete);
                challengeComplete.Update(overlay, shareResponse, Challenge, this);
            }
        }
Ejemplo n.º 5
0
        public void PostShareCompleteResponse(ShareResponseModel shareResponse)
        {
            if (shareResponse.ResponseCode > 0 && String.IsNullOrEmpty(shareResponse.ResponseMessage))
            {
                shareResponse.ResponseMessage = "Congratulations!\r\nChallenge Completed!";
            }
            SubmitChallengeComplete(SubmitButton, shareResponse);

            //SubmitChallengeComplete(SubmitButton, null);

            //UIView overlay = Platform.AddOverlay(shareResponse.ResponseCode > 0);  //from spec
            //if (overlay != null)
            //{
            //    ChallengeCompleteView challengeComplete = ChallengeCompleteView.Create();
            //    overlay.AddSubview(challengeComplete);
            //    challengeComplete.Update(overlay, shareResponse, Challenge);
            //}
        }
        private async void SendInviteMessage(ShareResponseModel model)
        {
            var smsService = Mvx.Resolve <ISmsService>();

            _alertService.ShowAlertMessage("What kind of message?", new List <ConfigurableAlertAction> {
                new ConfigurableAlertAction {
                    Text = "WhatsApp", OnClickHandler = new Action(() => { smsService.SendSmsToWatsApp(string.Empty, $"{model.ShareTemplate.InviteText} {model.ShareTemplate.ActionLink}"); })
                },
                new ConfigurableAlertAction {
                    Text = "SMS", OnClickHandler = new Action(async() => {
                        await _navigationService.Navigate <ContactsPickerViewModel>();
                        _messenger.Publish(new MessengerActionHandlerModel(this, model));
                    })
                },
                new ConfigurableAlertAction {
                    Text = "Cancel", OnClickHandler = new Action(() => { })
                },
            });
        }
Ejemplo n.º 7
0
        private void SendInviteMessage(ShareResponseModel model)
        {
            if (model?.ShareTemplate == null)
            {
                return;
            }

            _shareTemplateModel = model.ShareTemplate;

            var alertController = UIAlertController.Create("", "What kind of message?", UIAlertControllerStyle.ActionSheet);


            // Add Actions
            alertController.AddAction(UIAlertAction.Create("WhatsApp", UIAlertActionStyle.Default, SendInitationViaWatsApp));
            alertController.AddAction(UIAlertAction.Create("SMS", UIAlertActionStyle.Default, SendInvitationViaSms));
            alertController.AddAction(UIAlertAction.Create("Cancel", UIAlertActionStyle.Cancel, alert => Console.WriteLine("Cancel sending message")));

            // Show the alert
            NavigationController.PresentViewController(alertController, true, null);
        }
        private void SendInviteMessage(ShareResponseModel model)
        {
            var _messageService = new PlatformServices.SmsService();
            var alertController = UIAlertController.Create("", "What kind of message?", UIAlertControllerStyle.ActionSheet);

            var rootViewController = UIApplication.SharedApplication.KeyWindow.RootViewController as UINavigationController;

            // Add Actions
            alertController.AddAction(UIAlertAction.Create("WhatsApp", UIAlertActionStyle.Default, new Action <UIAlertAction>((handler) =>
            {
                _messageService.SendSmsToWatsApp("", $"{model.ShareTemplate.InviteText} {model.ShareTemplate.ActionLink}");
            })));

            alertController.AddAction(UIAlertAction.Create("SMS", UIAlertActionStyle.Default, new Action <UIAlertAction>((handler) =>
            {
                UIStoryboard board          = UIStoryboard.FromName("Challenges", null);
                UIViewController controller = (UIViewController)board.InstantiateViewController("ContactViewController");
                rootViewController.PushViewController(controller, true);
            })));

            alertController.AddAction(UIAlertAction.Create("Cancel", UIAlertActionStyle.Cancel, alert => Console.WriteLine("Cancel sending message")));
            rootViewController.PresentViewController(alertController, true, null);
        }
        public async void SendOpenGraph(object source, ChallengeModel model, string message = null)
        {
            ShareTemplateModel shareTemplate = null;
            ShareResponseModel shareResponse = null;

            await SL.Manager.RefreshShareTemplate(model.ShareTemplateURL, (response) =>
            {
                shareTemplate = response?.ShareTemplate;
                shareResponse = response;
            });

            NSUrl url = new NSUrl(shareTemplate?.PostHref ?? model.ShareImage);

            if (string.IsNullOrEmpty(url?.AbsoluteString))
            {
                new UIAlertView("Sharing Error", string.IsNullOrEmpty(shareResponse?.ResponseMessage) ? "Sorry. No url come from server" : shareResponse.ResponseMessage, source as IUIAlertViewDelegate, "Ok").Show();
                return;
            }

            ShareDialog dialog = new ShareDialog();

            dialog.SetShouldFailOnDataError(true);
            dialog.FromViewController = source as UIViewController;
            dialog.SetDelegate(source as ISharingDelegate ?? new FBSharingDelegate());

            NSString[] keys;
            NSObject[] objects;

            string imgUrl = null;

            try
            {
                if (!string.IsNullOrEmpty(model.ShareImage))
                {
                    await ImageService.Instance.LoadUrl(model.ShareImage).IntoAsync(new UIImageView());

                    imgUrl = model.ShareImage;
                }
            }
            catch (Exception) { }

            if (string.IsNullOrEmpty(imgUrl))
            {
                keys = new NSString[] {
                    new NSString("og:type"),
                    new NSString("og:url"),
                    new NSString("og:title"),
                    new NSString("og:description"),
                };
                objects = new NSObject[] {
                    NSObject.FromObject("article"),
                    NSObject.FromObject(url),
                    NSObject.FromObject(string.IsNullOrEmpty(shareTemplate?.PostTitle) ? url.AbsoluteString : shareTemplate.PostTitle),
                    NSObject.FromObject(string.IsNullOrEmpty(message) ? shareTemplate?.PostDescription ?? " " : message),
                };
            }
            else
            {
                keys = new NSString[] {
                    new NSString("og:type"),
                    new NSString("og:url"),
                    new NSString("og:title"),
                    new NSString("og:description"),
                    new NSString("og:image"),
                };
                objects = new NSObject[]
                {
                    NSObject.FromObject("article"),
                    NSObject.FromObject(url),
                    NSObject.FromObject(string.IsNullOrEmpty(shareTemplate?.PostTitle) ? url.AbsoluteString : shareTemplate.PostTitle),
                    NSObject.FromObject(string.IsNullOrEmpty(message) ? shareTemplate?.PostDescription ?? " " : message),
                    NSObject.FromObject(imgUrl),
                };
            }

            var propesties       = new NSDictionary <NSString, NSObject>(keys, objects);
            var openGraph        = ShareOpenGraphObject.ObjectWithProperties(propesties);
            var action           = ShareOpenGraphAction.Action("news.publishes", openGraph, "article");
            var contentOpenGraph = new ShareOpenGraphContent
            {
                Action = action,
                PreviewPropertyName = "article"
            };

            dialog.SetShareContent(contentOpenGraph);
            dialog.Mode = ShareDialogMode.Web;

            dialog.Show();

            if (dialog.Mode == ShareDialogMode.Web)
            {
                StylishFbWebDialog();
            }
        }
Ejemplo n.º 10
0
        public async void ShareFacebookChallenge(object source, ChallengeModel model, string message = null)
        {
            ShareTemplateModel shareTemplate = null;
            ShareResponseModel shareResponse = null;
            await SL.Manager.RefreshShareTemplate(model.ShareTemplateURL, (response) =>
            {
                shareTemplate = response?.ShareTemplate;
                shareResponse = response;
            });

            NSUrl url = new NSUrl(shareTemplate?.PostHref ?? model.ShareImage);

            ShareDialog dialog = new ShareDialog();

            dialog.SetShouldFailOnDataError(true);
            dialog.FromViewController = source as UIViewController;
            dialog.SetDelegate(source as ISharingDelegate ?? new FBSharingDelegate());

            if (string.IsNullOrEmpty(message) && model.FBShareType == "image")
            {
                UIImageView imageView = new UIImageView();
                try
                {
                    await ImageService.Instance.LoadUrl(model.ShareImage).IntoAsync(imageView);
                }
                catch (Exception)
                {
                    try
                    {
                        await ImageService.Instance.LoadUrl(model.Image).IntoAsync(imageView);
                    }
                    catch (Exception)
                    {
                    }
                }

                dialog.SetShareContent(new SharePhotoContent()
                {
                    Photos = new SharePhoto[] { SharePhoto.From(imageView.Image, true) }
                });
                dialog.Mode = ShareDialogMode.Native;
            }
            else if (string.IsNullOrEmpty(message) && (model.FBShareType == "link" || model.FBShareType == null))
            {
                ShareLinkContent contentLink = new ShareLinkContent();
                if (string.IsNullOrEmpty(url?.AbsoluteString))
                {
                    new UIAlertView("Sharing Error", string.IsNullOrEmpty(shareResponse?.ResponseMessage) ? "Sorry. No url come from server" : shareResponse.ResponseMessage, source as IUIAlertViewDelegate, "Ok").Show();
                    return;
                }
                contentLink.SetContentUrl(url);

                dialog.SetShareContent(contentLink);
                dialog.Mode = ShareDialogMode.Web;
            }
            else
            {
                SendOpenGraph(source, model, message);
                return;
            }

            if (!dialog.CanShow())
            {
                SendOpenGraph(source, model, message);
                return;
            }
            dialog.Show();

            if (dialog.Mode == ShareDialogMode.Web)
            {
                StylishFbWebDialog();
            }
        }
 public Task SendOpenGraph(object source, ChallengeModel model, string message = null, byte[] data = null, Action <ChallengesFacebookShareResponseType> viewModelResponse = null, ShareTemplateModel shareTemplate = null, ShareResponseModel shareResponse = null)
 {
     throw new NotImplementedException();
 }
 public MessengerActionHandlerModel(object sender, ShareResponseModel model) : base(sender)
 {
     Model = model;
 }
Ejemplo n.º 13
0
        public async Task SendOpenGraph(object source, ChallengeModel model, string message = null, byte[] data = null, Action <ChallengesFacebookShareResponseType> viewModelResponse = null, ShareTemplateModel shareTemplate = null, ShareResponseModel shareResponse = null)
        {
            ViewModelResponse = viewModelResponse;
            ShareDialog dialog = new ShareDialog(source as Activity);

            dialog.RegisterCallback((source as MainActivity).CallBackManager, this);
            if (shareTemplate == null || shareResponse == null)
            {
                await SL.Manager.RefreshShareTemplate(model.ShareTemplateURL, (response) =>
                {
                    ShareTemplate = response?.ShareTemplate;
                    shareResponse = response;
                });
            }
            else
            {
                ShareTemplate = shareTemplate;
            }

            OpenGraphWasTry = true;
            var openGraphBuilder = new ShareOpenGraphObject.Builder();

            openGraphBuilder.PutString("og:type", "object");
            openGraphBuilder.PutString("og:title", string.IsNullOrEmpty(ShareTemplate?.PostTitle) ? ShareTemplate?.PostHref : ShareTemplate.PostTitle);
            openGraphBuilder.PutString("og:description", string.IsNullOrEmpty(message) ? ShareTemplate?.PostDescription ?? " " : message);
            //openGraphBuilder.PutString("og:url", ShareTemplate?.PostHref ?? model.ShareImage);
            if (model != null && (model.FBShareType == "image" || !string.IsNullOrEmpty(model.ShareImage)))
            {
                openGraphBuilder.PutString("og:image", model.ShareImage);
            }
            if (model != null && (model.FBShareType == "link" || model.FBShareType == null))
            {
                openGraphBuilder.PutString("og:url", ShareTemplate?.PostHref ?? model.ShareImage);
            }
            ShareOpenGraphObject openGraph = openGraphBuilder.Build();
            ShareOpenGraphAction action    = new ShareOpenGraphAction.Builder()
                                             .SetActionType("news.publishes")
                                             .PutObject("object", openGraph)
                                             .JavaCast <ShareOpenGraphAction.Builder>()
                                             .Build();
            ShareOpenGraphContent contentOpenGraph = new ShareOpenGraphContent.Builder()
                                                     .SetPreviewPropertyName("object")
                                                     .SetAction(action)
                                                     .Build();

            dialog.Show(contentOpenGraph, ShareDialog.Mode.Web);
            //ShareDialog.Show(source as Activity, contentOpenGraph);
        }
Ejemplo n.º 14
0
        public async Task ShareFacebookChallenge(object source, ChallengeModel model, string message = null, byte[] data = null, Action <ChallengesFacebookShareResponseType> viewModelResponse = null)
        {
            OpenGraphWasTry   = false;
            ViewModelResponse = viewModelResponse;
            Activity          = source as Activity;
            Model             = model;
            ShareTemplateModel shareTemplate = null;
            ShareResponseModel shareResponse = null;
            await SL.Manager.RefreshShareTemplate(Model.ShareTemplateURL, (response) =>
            {
                shareTemplate = response?.ShareTemplate;
                shareResponse = response;
            });

            try
            {
                ShareDialog dialog = new ShareDialog(Activity);
                dialog.RegisterCallback((Activity as MainActivity).CallBackManager, this);
                if (string.IsNullOrEmpty(message) && Model.FBShareType == "image")
                {
                    if (data == null && !string.IsNullOrEmpty(Model.Image))
                    {
                        data = await ImageUrlToByteArrayLocalConverter.ReadImageUrlToBytesArray(Model.Image);
                    }
                    if (data == null)
                    {
                        return;
                    }
                    var bitmapImage = await BitmapFactory.DecodeByteArrayAsync(data, 0, data.Length);

                    var photoBuilder = new SharePhoto.Builder();
                    photoBuilder.SetUserGenerated(true);
                    var sharePhoto            = photoBuilder.SetBitmap(bitmapImage);
                    SharePhotoContent content = new SharePhotoContent.Builder().AddPhoto(sharePhoto.Build()).Build();
                    if (dialog.CanShow(content, ShareDialog.Mode.Web))
                    {
                        dialog.Show(content, ShareDialog.Mode.Web);
                        return;
                    }
                }
                if (string.IsNullOrEmpty(message) && (Model.FBShareType == null || Model.FBShareType == "link"))
                {
                    var uri = Android.Net.Uri.Parse(shareTemplate?.PostHref ?? Model.ShareImage);

                    var linkBuilder = new ShareLinkContent.Builder();
                    linkBuilder.SetContentUrl(Android.Net.Uri.Parse(shareTemplate?.PostHref ?? Model.ShareImage));
                    ShareLinkContent content = linkBuilder.Build();

                    if (dialog.CanShow(content, ShareDialog.Mode.Web))
                    {
                        dialog.Show(content, ShareDialog.Mode.Web);
                        return;
                    }
                }

                ViewModelResponse(ChallengesFacebookShareResponseType.NativeUninstallApp);
            }
            catch (System.Exception ex)
            {
                await SendOpenGraph(Activity, Model, message, null, null, shareTemplate, shareResponse);
            }
            return;
        }
Ejemplo n.º 15
0
 public void PostEngagementCompleteResponse(ShareResponseModel shareResponse) =>
 SubmitChallengeComplete(SubmitButton, shareResponse);
Ejemplo n.º 16
0
 public void Update(UIView container, ShareResponseModel shareResponse, ChallengeModel challenge)
 {
     Container = container;
 }