2019-02-22-try-catch-exception-rather-than-return-codes
const MIN_USERNAME_LENGTH = 6;
const ERROR_TYPE = {
NONE: 'NONE',
NULL_USERNAME: 'NULL_USERNAME',
SHORT_USERNAME: 'SHORT_USERNAME',
UPLOAD_AVATAR: 'UPLOAD_AVATAR',
UPDATE_INFO: 'UPDATE_INFO',
}
const SUCCESSFUL_UPDATED = 'Niceeee!';
const NULL_USERNAME = 'Username can not be null';
const SHORT_USERNAME = 'You are too short!';
const FAIL_UPLOAD_AVATAR = 'Uploading avartar failed';
const FAIL_UPDATE_INFO = 'Updating info failed';
functions showAlert(contentText) {
// show alert with contentText
}
function showSuccessAlert() {
showAlert(SUCCESSFUL_UPDATED);
}
function showFailAlert(failText) {
showAlert(failText);
}
function showLoading() {
// show loading animation
}
function hideLoading() {
// hide loading animation
}
function uploadImages(imagePath) {
return new Promise((resolve, reject) => {
Client.uploadImage(
imagePath,
() => { reject(ERROR_TYPE.UPLOAD_AVATAR); }, // error
(url) => { resolve(url); }, // success
);
});
}
function updateUserInfo(username, avatarUrl) {
return new Promise((resolve, reject) => {
Client.updateUserInfo(
username,
avatarUrl,
() => { reject(ERROR_TYPE.UPDATE_INFO); }, // error
() => { resolve(); }, // success
);
});
}
function validateUsername(username) {
if (!username) {
return ERROR_TYPE.NULL_USERNAME;
}
else if (username.length < MIN_USERNAME_LENGTH) {
return ERROR_TYPE.SHORT_USERNAME;
}
return ERROR_TYPE.NONE;
}
function onUpdateButtonPressed(username, avatarPath) {
// 1. validate username
const resultValidateUsername = validateUsername(username);
if (resultValidateUsername === ERROR_TYPE.NULL_USERNAME) {
showFailAlert(NULL_USERNAME);
return;
}
if (resultValidateUsername === ERROR_TYPE.SHORT_USERNAME) {
showFailAlert(SHORT_USERNAME);
return;
}
// 2. Show loading animation
showLoading();
// 3. upload avatar
uploadImages(avatarPath)
.then(avatarUrl => {
// 4. update user's info
return updateUserInfo(username, avatarUrl);
})
.then(() => {
// 5. hide loading and show success alert
showSuccessAlert();
hideLoading();
})
.catch((err) => {
// 6. hide loading if failed
hideLoading();
if (err === ERROR_TYPE.UPLOAD_AVATAR) {
showFailAlert(FAIL_UPLOAD_AVATAR);
}
else if (err === ERROR_TYPE.UPDATE_INFO){
showFailAlert(FAIL_UPDATE_INFO);
}
});
}Last updated