viraljs
Version:
P2P distributed application made easy
112 lines (92 loc) • 3.31 kB
JavaScript
window.onbeforeunload = function(e) {
return ('After closing the tab you will stop seeding application to the people near you.');
}
var sentByData = {};
var appId = location.href.indexOf('localhost') !== -1 ? '1214376798578200' : '1194624743886739';
if (typeof ViralContainer !== 'undefined') {
console.log('And our meta is...');
console.log(ViralContainer.meta || 'No meta information');
sentByData = ViralContainer.meta;
} else {
sentByData = {
name: 'Express server with ViralJS middleware',
avatar: 'http://publicdomainvectors.org/photos/1313181674.png',
id: 0
};
}
function statusChangeCallback(response) {
// The response object is returned with a status field that lets the
// app know the current login status of the person.
// Full docs on the response object can be found in the documentation
// for FB.getLoginStatus().
if (response.status === 'connected') {
// Logged into your app and Facebook.
testAPI();
} else if (response.status === 'not_authorized') {
// The person is logged into Facebook, but not your app.
document.getElementById('status').innerHTML = 'Please log ' +
'into this app.';
} else {
// The person is not logged into Facebook, so we're not sure if
// they are logged into this app or not.
document.getElementById('status').innerHTML = 'Please log ' +
'into Facebook.';
}
}
function checkLoginState() {
console.log('checkLoginState');
FB.getLoginStatus(function (response) {
statusChangeCallback(response);
});
}
window.fbAsyncInit = function () {
console.log('fbAsyncInit ' + appId);
FB.init({
appId: appId,
xfbml: true,
version: 'v2.2',
cookie: true
});
//debugger;
var timeoutId = setTimeout(testAPI, 3000);
FB.getLoginStatus(function (response) {
clearTimeout(timeoutId);
statusChangeCallback(response);
});
};
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {
return;
}
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
function testAPI() {
console.log('Welcome! Fetching your information.... ');
FB.api('/me', function (response) {
FB.api('/me/picture', function (imageResponse) {
console.log('Successful login for: ' + response.name);
console.log('Id: ' + response.id);
var thisUserData = {
avatar: imageResponse.data.url,
name: response.name,
id: response.id
};
ViralContainer.writeMeta(thisUserData);
ViralContainer.socket.on('connectionsGraph', function (data) {
console.log('Received graph data');
drawGraph(data);
});
ViralContainer.socket.emit('addConnection', {
a: sentByData,
b: thisUserData
});
if (sentByData) {
console.log('You received application from ' + sentByData.name);
}
});
});
}