summaryrefslogtreecommitdiff
path: root/StoneIsland/plugins/cordova-plugin-x-socialsharing/src/windows/SocialSharingProxy.js
blob: 99e0af157cf24715a89b69287ead716391382731 (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
104
105
106
107
108
109
110
111
112
113
114
var cordova = require('cordova');

module.exports = {
    share: function (win, fail, args) {
        //Text Message
        var message = args[0];
        //Title 
        var subject = args[1];
        //File(s) Path
        var fileOrFileArray = args[2];
        //Web link
        var url = args[3];

        var doShare = function (e) {
            e.request.data.properties.title = subject?subject: "Sharing";
            if (message) e.request.data.setText(message);
            if (url) e.request.data.setWebLink(new Windows.Foundation.Uri(url));
            if (fileOrFileArray.length > 0) {
                var deferral = e.request.getDeferral();
                var storageItems = [];
                var filesCount = fileOrFileArray.length;
                for (var i = 0; i < fileOrFileArray.length; i++) {
                    Windows.Storage.StorageFile.getFileFromPathAsync(fileOrFileArray[i]).done(
                        function (file) {
                            storageItems.push(file);
                            if (!--filesCount) {
                                e.request.data.setStorageItems(storageItems);
                                deferral.complete();
                            }
                        },
                        function() {
                            if (!--filesCount) {
                                e.request.data.setStorageItems(storageItems);
                                deferral.complete();
                            }
                       }
                    );
                }
            }
        }


        var dataTransferManager = Windows.ApplicationModel.DataTransfer.DataTransferManager.getForCurrentView();

        dataTransferManager.addEventListener("datarequested", doShare);

        try {
            Windows.ApplicationModel.DataTransfer.DataTransferManager.showShareUI();
            win(true);
        } catch (err) {
            fail(err);
        }
    },

    canShareViaEmail: function (win, fail, args) {
        win(true);
    },

    shareViaEmail: function (win, fail, args) {
        //Text Message
        var message = args[0];
        //Title 
        var subject = args[1];
        //File(s) Path
        var fileOrFileArray = args[5];

        var doShare = function (e) {
            e.request.data.properties.title = subject ? subject : "Sharing";
            if (message) {
                var htmlFormat = Windows.ApplicationModel.DataTransfer.HtmlFormatHelper.createHtmlFormat(message);
                e.request.data.setHtmlFormat(htmlFormat);
            }

            if (fileOrFileArray.length > 0) {
                var deferral = e.request.getDeferral();
                var storageItems = [];
                var filesCount = fileOrFileArray.length;
                for (var i = 0; i < fileOrFileArray.length; i++) {
                    Windows.Storage.StorageFile.getFileFromPathAsync(fileOrFileArray[i]).done(
                        function (index, file) {
                            var path = fileOrFileArray[index];
                            var streamRef = Windows.Storage.Streams.RandomAccessStreamReference.createFromFile(file);
                            e.request.data.resourceMap[path] = streamRef;
                            storageItems.push(file);
                            if (!--filesCount) {
                                e.request.data.setStorageItems(storageItems);
                                deferral.complete();
                            }
                        }.bind(this, i),
                        function () {
                            if (!--filesCount) {
                                e.request.data.setStorageItems(storageItems);
                                deferral.complete();
                            }
                        }
                    );
                }
            }
        }

        var dataTransferManager = Windows.ApplicationModel.DataTransfer.DataTransferManager.getForCurrentView();

        dataTransferManager.addEventListener("datarequested", doShare);

        try {
            Windows.ApplicationModel.DataTransfer.DataTransferManager.showShareUI();
            win(true);
        } catch (err) {
            fail(err);
        }
    }
};

require("cordova/exec/proxy").add("SocialSharing", module.exports);