|
|
|
// 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').on('click', function () {$('#avatar-file').trigger('click');});
|
|
|
|
$('#avatar-file').on('change', handleAvatarFileSelect);
|
|
|
|
$('.submit-changes').on('click', saveProfile);
|
|
|
|
$('.cancel-changes').on('click', $.MAL.goHome);
|
|
|
|
|
|
|
|
initUser(function() {
|
|
|
|
if (!defaultScreenName) {
|
|
|
|
alert(polyglot.t('username_undefined'));
|
|
|
|
$.MAL.goLogin();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
checkNetworkStatusAndAskRedirect();
|
|
|
|
|
|
|
|
loadFollowing(function() {
|
|
|
|
twisterFollowingO = TwisterFollowing(defaultScreenName);
|
|
|
|
verifyUserAlreadyInBlockchain();
|
|
|
|
initMentionsCount();
|
|
|
|
initDMsCount();
|
|
|
|
});
|
|
|
|
|
|
|
|
$('.profile-card-main h2').text('@' + defaultScreenName);
|
|
|
|
loadAvatarForEdit();
|
|
|
|
loadProfileForEdit();
|
|
|
|
|
|
|
|
$('.secret-key-container').hide();
|
|
|
|
|
|
|
|
$('.toggle-priv-key').on('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(event) {
|
|
|
|
var files = event.target.files; // FileList object
|
|
|
|
var file = files[0];
|
|
|
|
|
|
|
|
// Only process image files.
|
|
|
|
if (file.type.match('image.*')) {
|
|
|
|
var reader = new FileReader();
|
|
|
|
|
|
|
|
reader.onload = function(event) {
|
|
|
|
var img = new Image();
|
|
|
|
img.onload = function() {
|
|
|
|
var MAXWidthHeight = 64;
|
|
|
|
var ratio = MAXWidthHeight / Math.max(this.width, this.height);
|
|
|
|
var canvas = document.createElement('canvas');
|
|
|
|
canvas.width = Math.round(this.width * ratio);
|
|
|
|
canvas.height = Math.round(this.height * ratio);
|
|
|
|
canvas.getContext('2d').drawImage(this, 0, 0, canvas.width, canvas.height);
|
|
|
|
|
|
|
|
var imgURL = undefined;
|
|
|
|
for (var quality = 1.0; (!imgURL || imgURL.length > 4096) && quality > 0.1; quality -= 0.01) {
|
|
|
|
imgURL = canvas.toDataURL('image/jpeg', quality);
|
|
|
|
}
|
|
|
|
$('.profile-card-photo.forEdition').attr('src', imgURL);
|
|
|
|
}
|
|
|
|
img.src = event.target.result;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Read in the image file as a data URL.
|
|
|
|
reader.readAsDataURL(file);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function verifyUserAlreadyInBlockchain() {
|
|
|
|
$.MAL.disableButton($('.submit-changes'));
|
|
|
|
|
|
|
|
dumpPubkey(defaultScreenName, function(args, pubkey) {
|
|
|
|
if (pubkey.length > 0) {
|
|
|
|
follow('twister', true, function() {
|
|
|
|
$.MAL.enableButton($('.submit-changes'));
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
if (!newUserWarnDisplayed) {
|
|
|
|
alert(polyglot.t('user_not_yet_accepted'));
|
|
|
|
newUserWarnDisplayed = true;
|
|
|
|
}
|
|
|
|
setTimeout(verifyUserAlreadyInBlockchain, 5000);
|
|
|
|
}
|
|
|
|
}, {});
|
|
|
|
}
|
|
|
|
|
|
|
|
function localizePlaceholders() {
|
|
|
|
$('.input-name').attr('placeholder', polyglot.t('Full name here'));
|
|
|
|
$('.input-description').attr('placeholder', polyglot.t('Describe yourself'));
|
|
|
|
$('.input-city').attr('placeholder', polyglot.t('Location'));
|
|
|
|
$('.input-website').attr('placeholder', polyglot.t('website'));
|
|
|
|
$('.input-tox').attr('placeholder', polyglot.t('Tox address'));
|
|
|
|
$('.input-bitmessage').attr('placeholder', polyglot.t('Bitmessage address'));
|
|
|
|
}
|
|
|
|
|
|
|
|
$(localizePlaceholders);
|