diff --git a/web/app/assets/javascripts/facebook_rest.js b/web/app/assets/javascripts/facebook_rest.js new file mode 100644 index 000000000..3301e0a7b --- /dev/null +++ b/web/app/assets/javascripts/facebook_rest.js @@ -0,0 +1,40 @@ +(function(context,$) { + + /** + * Javascript wrappers for the REST API + */ + + "use strict"; + + + context.JK = context.JK || {}; + context.JK.FacebookRest = function() { + + var self = this; + var logger = context.JK.logger; + + // https://developers.facebook.com/docs/reference/api/post + function post(options) { + var d = $.Deferred(); + + FB.api( + 'https://graph.facebook.com/me/feed', + 'post', + options, + function(response) { + if (!response || response.error) { + d.reject(response) + } else { + d.resolve(response); + } + } + ) + + return d; + } + + this.post = post; + + return this; + }; +})(window,jQuery); \ No newline at end of file diff --git a/web/app/assets/javascripts/shareDialog.js b/web/app/assets/javascripts/shareDialog.js index cfa10cb41..b6d24aaf8 100644 --- a/web/app/assets/javascripts/shareDialog.js +++ b/web/app/assets/javascripts/shareDialog.js @@ -5,6 +5,31 @@ context.JK.ShareDialog = function(app, entityId, entityType) { var logger = context.JK.logger; var rest = context.JK.Rest(); + var facebookRest = context.JK.FacebookRest(); + var facebookHelper = null; + + function handleShareWithFacebook() { + facebookHelper.promptLogin() + .done(function(response) { + if(response.status == "connected") { + facebookRest.post({ + access_token: response.authResponse.accessToken, + message: 'A Message', + caption: 'A Caption', + description: 'A description', + link: 'http://staging.jamkazam.com', + name: 'JamKazam', + picture: 'http://staging.jamkazam.com/assets/logo.png' + }) + .done(function(response) { + alert("zong") + }) + .fail(function(response) { + console.log("failed %o", response); + }) + } + }) + } function socialShare() { var shareWithFacebook = $('.share-with-facebook').is(':checked'); @@ -13,6 +38,14 @@ if(!shareWithFacebook && !shareWithGoogle && !shareWithTwitter) { $('.share-options').addClass('error') + return; + } + else { + $('.share-options').removeClass('error') + } + + if(shareWithFacebook) { + handleShareWithFacebook(); } } function registerEvents(onOff) { @@ -91,7 +124,7 @@ } function beforeShow() { - $('.share-with-selectors').removeClass('error'); + $('.share-options').removeClass('error'); registerEvents(true); } @@ -99,7 +132,9 @@ registerEvents(false); } - function initialize(facebookHelper){ + function initialize(_facebookHelper){ + facebookHelper = _facebookHelper; + var dialogBindings = { 'beforeShow' : beforeShow, 'afterHide': afterHide diff --git a/web/app/assets/javascripts/web/web.js b/web/app/assets/javascripts/web/web.js index e59c4512b..716eacba8 100644 --- a/web/app/assets/javascripts/web/web.js +++ b/web/app/assets/javascripts/web/web.js @@ -16,6 +16,7 @@ //= require utils //= require ga //= require jam_rest +//= require facebook_rest //= require landing/init //= require landing/signup //= require web/downloads diff --git a/web/app/views/clients/_shareDialog.html.erb b/web/app/views/clients/_shareDialog.html.erb index 917bf4415..a1f923473 100644 --- a/web/app/views/clients/_shareDialog.html.erb +++ b/web/app/views/clients/_shareDialog.html.erb @@ -8,12 +8,12 @@