arnaucube
arnaucube/openEventsPlatformAppPublic Self-hosted repository
openEventsPlatformApp/plugins/cordova-plugin-x-socialsharing/src/wp8/SocialSharing.cs
plugins/cordova-plugin-x-socialsharing/src/wp8/SocialSharing.csRaw
  1using Microsoft.Phone.Tasks;
  2
  3using WPCordovaClassLib.Cordova;
  4using WPCordovaClassLib.Cordova.Commands;
  5using WPCordovaClassLib.Cordova.JSON;
  6
  7using Newtonsoft.Json;
  8
  9namespace Cordova.Extension.Commands
 10{
 11    public class SocialSharing : BaseCommand
 12    {
 13
 14        public void available(string jsonArgs)
 15        {
 16            DispatchCommandResult(new PluginResult(PluginResult.Status.OK));
 17        }
 18
 19        public void share(string jsonArgs)
 20        {
 21
 22            var options = JsonHelper.Deserialize<string[]>(jsonArgs);
 23
 24            var message = options[0];
 25            var title = options[1];
 26            var files = JsonHelper.Deserialize<string[]>(options[2]);
 27            var link = options[3];
 28
 29            if (link != null && !"null".Equals(link))
 30            {
 31                ShareLinkTask shareLinkTask = new ShareLinkTask();
 32                shareLinkTask.Title = title;
 33                shareLinkTask.LinkUri = new System.Uri(link, System.UriKind.Absolute);
 34                shareLinkTask.Message = message;
 35                shareLinkTask.Show();
 36            }
 37            else if (files != null && files.Length > 0)
 38            {
 39                ShareLinkTask shareLinkTask = new ShareLinkTask();
 40                shareLinkTask.Title = title;
 41                shareLinkTask.LinkUri = new System.Uri(files[0], System.UriKind.Absolute);
 42                shareLinkTask.Message = message;
 43                shareLinkTask.Show();
 44            }
 45            else
 46            {
 47                var shareStatusTask = new ShareStatusTask { Status = message };
 48                shareStatusTask.Show();
 49            }
 50            // unfortunately, there is no way to tell if something was shared, so just invoke the successCallback
 51            DispatchCommandResult(new PluginResult(PluginResult.Status.OK));
 52        }
 53
 54        public void canShareViaEmail(string jsonArgs)
 55        {
 56            DispatchCommandResult(new PluginResult(PluginResult.Status.OK));
 57        }
 58
 59        // HTML and attachments are currently not supported on WP8
 60        public void shareViaEmail(string jsonArgs)
 61        {
 62            var options = JsonHelper.Deserialize<string[]>(jsonArgs);
 63            EmailComposeTask draft = new EmailComposeTask();
 64            draft.Body = options[0];
 65            draft.Subject = options[1];
 66            if (!"null".Equals(options[2]))
 67            {
 68                draft.To = string.Join(",", options[2]);
 69            }
 70            if (!"null".Equals(options[3]))
 71            {
 72                draft.Cc = string.Join(",", options[3]);
 73            }
 74            if (!"null".Equals(options[4]))
 75            {
 76                draft.Bcc = string.Join(",", options[4]);
 77            }
 78            draft.Show();
 79            DispatchCommandResult(new PluginResult(PluginResult.Status.OK, true));
 80        }
 81		
 82		 public void shareViaSMS(string jsonArgs)
 83        {
 84            var options = JsonHelper.Deserialize<string[]>(jsonArgs);
 85
 86            SmsComposeTask smsComposeTask = new SmsComposeTask();
 87
 88			smsComposeTask.To = options[1];
 89            SMSMessageClass m = JsonConvert.DeserializeObject<SMSMessageClass>(options[0]);
 90            smsComposeTask.Body = m.message;
 91
 92			smsComposeTask.Show();
 93
 94			DispatchCommandResult(new PluginResult(PluginResult.Status.OK, true));
 95        }
 96    }
 97
 98    public class SMSMessageClass
 99    {
100        public string message { get; set; }
101    }
102
103}