Skip to content

Commit

Permalink
Merge pull request #305 from phfsantos/adding-windows-support
Browse files Browse the repository at this point in the history
Adding windows support
  • Loading branch information
EddyVerbruggen committed Feb 19, 2015
2 parents 6893a9b + 9ac1da9 commit 2772fa3
Show file tree
Hide file tree
Showing 2 changed files with 122 additions and 0 deletions.
8 changes: 8 additions & 0 deletions plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -72,5 +72,13 @@

<source-file src="src/wp8/SocialSharing.cs" />
</platform>

<!-- windows -->
<platform name="windows">
<js-module src="src/windows/SocialSharingProxy.js" name="SocialSharingProxy">
<merges target="" />
</js-module>
<source-file src="" />
</platform>

</plugin>
114 changes: 114 additions & 0 deletions src/windows/SocialSharingProxy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,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);

0 comments on commit 2772fa3

Please sign in to comment.