summaryrefslogtreecommitdiff
path: root/StoneIsland/plugins/cordova-plugin-x-socialsharing/src/wp8/SocialSharing.cs
blob: 1a16512731011b6c1b77ffe47984544e1f39dd0d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
using Microsoft.Phone.Tasks;

using WPCordovaClassLib.Cordova;
using WPCordovaClassLib.Cordova.Commands;
using WPCordovaClassLib.Cordova.JSON;

using Newtonsoft.Json;

namespace Cordova.Extension.Commands
{
    public class SocialSharing : BaseCommand
    {

        public void available(string jsonArgs)
        {
            DispatchCommandResult(new PluginResult(PluginResult.Status.OK));
        }

        public void share(string jsonArgs)
        {

            var options = JsonHelper.Deserialize<string[]>(jsonArgs);

            var message = options[0];
            var title = options[1];
            var files = JsonHelper.Deserialize<string[]>(options[2]);
            var link = options[3];

            if (!"null".Equals(link))
            {
                ShareLinkTask shareLinkTask = new ShareLinkTask();
                shareLinkTask.Title = title;
                shareLinkTask.LinkUri = new System.Uri(link, System.UriKind.Absolute);
                shareLinkTask.Message = message;
                shareLinkTask.Show();
            }
            else if (files != null && files.Length > 0)
            {
                ShareLinkTask shareLinkTask = new ShareLinkTask();
                shareLinkTask.Title = title;
                shareLinkTask.LinkUri = new System.Uri(files[0], System.UriKind.Absolute);
                shareLinkTask.Message = message;
                shareLinkTask.Show();
            }
            else
            {
                var shareStatusTask = new ShareStatusTask { Status = message };
                shareStatusTask.Show();
            }
            // unfortunately, there is no way to tell if something was shared, so just invoke the successCallback
            DispatchCommandResult(new PluginResult(PluginResult.Status.OK));
        }

        public void canShareViaEmail(string jsonArgs)
        {
            DispatchCommandResult(new PluginResult(PluginResult.Status.OK));
        }

        // HTML and attachments are currently not supported on WP8
        public void shareViaEmail(string jsonArgs)
        {
            var options = JsonHelper.Deserialize<string[]>(jsonArgs);
            EmailComposeTask draft = new EmailComposeTask();
            draft.Body = options[0];
            draft.Subject = options[1];
            if (!"null".Equals(options[2]))
            {
                draft.To = string.Join(",", options[2]);
            }
            if (!"null".Equals(options[3]))
            {
                draft.Cc = string.Join(",", options[3]);
            }
            if (!"null".Equals(options[4]))
            {
                draft.Bcc = string.Join(",", options[4]);
            }
            draft.Show();
            DispatchCommandResult(new PluginResult(PluginResult.Status.OK, true));
        }
		
		 public void shareViaSMS(string jsonArgs)
        {
            var options = JsonHelper.Deserialize<string[]>(jsonArgs);

            SmsComposeTask smsComposeTask = new SmsComposeTask();

			smsComposeTask.To = options[1];
            SMSMessageClass m = JsonConvert.DeserializeObject<SMSMessageClass>(options[0]);
            smsComposeTask.Body = m.message;

			smsComposeTask.Show();

			DispatchCommandResult(new PluginResult(PluginResult.Status.OK, true));
        }
    }

    public class SMSMessageClass
    {
        public string message { get; set; }
    }

}