|
|
|
// interface_profile-edit.js
|
|
|
|
// 2013 Miguel Freitas
|
|
|
|
//
|
|
|
|
// Profile editing interface (profile-edit.html)
|
|
|
|
|
|
|
|
var newUserWarnDisplayed = false;
|
|
|
|
|
|
|
|
function initProfileEdit() {
|
|
|
|
// Check for the various File API support.
|
|
|
|
if (window.File && window.FileReader && window.FileList && window.Blob) {
|
|
|
|
// Great success! All the File APIs are supported.
|
|
|
|
} else {
|
|
|
|
alert('The File APIs are not fully supported in this browser.');
|
|
|
|
}
|
|
|
|
|
|
|
|
initInterfaceCommon();
|
|
|
|
|
|
|
|
$(".profile-card-photo.forEdition").click( function() { $('#avatar-file').click(); } );
|
|
|
|
$("#avatar-file").bind( "change", handleAvatarFileSelect);
|
|
|
|
$(".submit-changes").click( saveProfile );
|
|
|
|
$(".cancel-changes").click( $.MAL.goHome );
|
|
|
|
|
|
|
|
initUser( function() {
|
|
|
|
if( !defaultScreenName ) {
|
|
|
|
alert("Username undefined, login required.");
|
|
|
|
$.MAL.goLogin();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
checkNetworkStatusAndAskRedirect(verifyUserAlreadyInBlockchain);
|
|
|
|
|
|
|
|
if( defaultScreenName ) {
|
|
|
|
loadFollowing( function() {
|
|
|
|
initMentionsCount();
|
|
|
|
initDMsCount();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
$(".profile-card-main h2").text("@" + defaultScreenName);
|
|
|
|
loadAvatarForEdit();
|
|
|
|
loadProfileForEdit();
|
|
|
|
|
|
|
|
$(".secret-key-container").hide();
|
|
|
|
|
|
|
|
$(".toggle-priv-key").click(function () {
|
|
|
|
if ($(".secret-key-container").is(":visible")) {
|
|
|
|
$(".secret-key-container").fadeOut(function () {
|
|
|
|
$(".secret-key").text('');
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
dumpPrivkey(defaultScreenName, function(args, key) {
|
|
|
|
$(".secret-key").text(key);
|
|
|
|
$(".secret-key-container").fadeIn();
|
|
|
|
}, {});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
function handleAvatarFileSelect(evt) {
|
|
|
|
var files = evt.target.files; // FileList object
|
|
|
|
var f = files[0];
|
|
|
|
|
|
|
|
// Only process image files.
|
|
|
|
if (f.type.match('image.*')) {
|
|
|
|
var reader = new FileReader();
|
|
|
|
|
|
|
|
reader.onload=function(e){
|
|
|
|
var img=new Image();
|
|
|
|
img.onload=function(){
|
|
|
|
var MAXWidthHeight=64;
|
|
|
|
var r=MAXWidthHeight/Math.max(this.width,this.height),
|
|
|
|
w=Math.round(this.width*r),
|
|
|
|
h=Math.round(this.height*r),
|
|
|
|
c=document.createElement("canvas");
|
|
|
|
c.width=w;c.height=h;
|
|
|
|
c.getContext("2d").drawImage(this,0,0,w,h);
|
|
|
|
|
|
|
|
var imgURL = undefined;
|
|
|
|
for(var q = 0.9; (!imgURL || imgURL.length > 4096) && q > 0.1; q -= 0.01) {
|
|
|
|
imgURL = c.toDataURL("image/jpeg", q);
|
|
|
|
}
|
|
|
|
$(".profile-card-photo.forEdition").attr("src", imgURL );
|
|
|
|
}
|
|
|
|
img.src=e.target.result;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Read in the image file as a data URL.
|
|
|
|
reader.readAsDataURL(f);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function verifyUserAlreadyInBlockchain()
|
|
|
|
{
|
|
|
|
$.MAL.disableButton($(".submit-changes"));
|
|
|
|
|
|
|
|
dumpPubkey(defaultScreenName, function(args, pubkey) {
|
|
|
|
//pubkey = "";
|
|
|
|
if( pubkey.length > 0 ) {
|
|
|
|
follow('twister', true, function() {
|
|
|
|
$.MAL.enableButton($(".submit-changes"));
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
if( !newUserWarnDisplayed ) {
|
|
|
|
alert("Other peers have not yet accepted this new user.\n" +
|
|
|
|
"Unfortunately it is not possible to save profile\n" +
|
|
|
|
"or send any posts in this state.\n\n" +
|
|
|
|
"Please wait a few minutes to continue.\n\n" +
|
|
|
|
"The 'Save Changes' will be automatically enabled\n" +
|
|
|
|
"when the process completes. (I promise this is\n"+
|
|
|
|
"the last time you will have to wait before using\n" +
|
|
|
|
"twister).\n\n" +
|
|
|
|
"Tip: choose your avatar in the meantime!");
|
|
|
|
newUserWarnDisplayed = true;
|
|
|
|
}
|
|
|
|
setTimeout("verifyUserAlreadyInBlockchain()", 5000);
|
|
|
|
}
|
|
|
|
}, {} );
|
|
|
|
}
|