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(); }
public void ShareTemplateRefreshed(ShareResponseModel shareResponse) { if (shareResponse != null && shareResponse.ShareTemplate != null) { ShareTemplate = shareResponse.ShareTemplate; ReferralString.Text = ShareTemplate.ReferralString; //ShareMessage.Text = ShareTemplate.PostTitle; } RemoveOverlay(); }
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); } }
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(() => { }) }, }); }
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(); } }
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; }
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); }
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; }
public void PostEngagementCompleteResponse(ShareResponseModel shareResponse) => SubmitChallengeComplete(SubmitButton, shareResponse);
public void Update(UIView container, ShareResponseModel shareResponse, ChallengeModel challenge) { Container = container; }