diff --git a/submodules/myOffice/myOffice.js b/submodules/myOffice/myOffice.js index bc70205..b80f82b 100644 --- a/submodules/myOffice/myOffice.js +++ b/submodules/myOffice/myOffice.js @@ -946,58 +946,72 @@ define(function(require) { emergencyAddress2Input = popupTemplate.find('.caller-id-emergency-address2'), emergencyCityInput = popupTemplate.find('.caller-id-emergency-city'), emergencyStateInput = popupTemplate.find('.caller-id-emergency-state'), + editableFeatures = [ 'e911', 'cnam' ], loadNumberDetails = function(number, popupTemplate) { - var allowedFeatures = [], - callback = function(features) { - popupTemplate.find('.number-feature').hide(); - _.each(features, function(featureName) { - popupTemplate.find('.number-feature[data-feature="' + featureName + '"]').slideDown(); + monster.waterfall([ + function getNumberData(waterfallCallback) { + if (!number) { + return waterfallCallback(null, null); + } + + self.myOfficeGetNumber(number, function(numberData) { + waterfallCallback(null, numberData); }); - }; + }, + function getAllowedFeatures(numberData, waterfallCallback) { + if (_.isNil(numberData)) { + return waterfallCallback(null, numberData, []); + } - if (number) { - self.myOfficeGetNumber(number, function(numberData) { - var availableFeatures = numberData.hasOwnProperty('_read_only') && numberData._read_only.hasOwnProperty('features_available') ? numberData._read_only.features_available : [], - activatedFeatures = numberData.hasOwnProperty('_read_only') && numberData._read_only.hasOwnProperty('features') ? numberData._read_only.features : [], - allFeatures = availableFeatures.concat(activatedFeatures), - hasE911 = allFeatures.indexOf('e911') >= 0, - hasCNAM = allFeatures.indexOf('cnam') >= 0; - - if (hasE911) { - if (monster.util.isNumberFeatureEnabled('e911')) { - allowedFeatures.push('e911'); - - if ('e911' in numberData) { - emergencyZipcodeInput.val(numberData.e911.postal_code); - emergencyAddress1Input.val(numberData.e911.street_address); - emergencyAddress2Input.val(numberData.e911.extended_address); - emergencyCityInput.val(numberData.e911.locality); - emergencyStateInput.val(numberData.e911.region); - } else { - emergencyZipcodeInput.val(''); - emergencyAddress1Input.val(''); - emergencyAddress2Input.val(''); - emergencyCityInput.val(''); - emergencyStateInput.val(''); - } + var availableFeatures = monster.util.getNumberFeatures(numberData), + allowedFeatures = _.intersection(availableFeatures, editableFeatures); + + waterfallCallback(null, numberData, allowedFeatures); + }, + function fillFormFields(numberData, allowedFeatures, waterfallCallback) { + if (_.isEmpty(allowedFeatures)) { + return waterfallCallback(null, allowedFeatures); + } + + var hasE911 = _.includes(allowedFeatures, 'e911'), + hasCNAM = _.includes(allowedFeatures, 'cnam'), + isE911Enabled = monster.util.isNumberFeatureEnabled('e911'); + + if (hasE911 && isE911Enabled) { + if (_.has(numberData, 'e911')) { + emergencyZipcodeInput.val(numberData.e911.postal_code); + emergencyAddress1Input.val(numberData.e911.street_address); + emergencyAddress2Input.val(numberData.e911.extended_address); + emergencyCityInput.val(numberData.e911.locality); + emergencyStateInput.val(numberData.e911.region); + } else { + emergencyZipcodeInput.val(''); + emergencyAddress1Input.val(''); + emergencyAddress2Input.val(''); + emergencyCityInput.val(''); + emergencyStateInput.val(''); } } if (hasCNAM) { - allowedFeatures.push('cnam'); - - if ('cnam' in numberData) { + if (_.has(numberData, 'cnam')) { callerIdNameInput.val(numberData.cnam.display_name); } else { callerIdNameInput.val(''); } } - callback && callback(allowedFeatures); + waterfallCallback(null, allowedFeatures); + } + ], function hideOrShowFeatureSections(err, allowedFeatures) { + _.each(editableFeatures, function(featureName) { + var $featureSection = popupTemplate.find('.number-feature[data-feature="' + featureName + '"]'), + isFeatureAllowed = _.includes(allowedFeatures, featureName), + action = isFeatureAllowed ? 'slideDown' : 'slideUp'; + + $featureSection[action](); }); - } else { - callback && callback(allowedFeatures); - } + }); }; popupTemplate.find('.cancel-link').on('click', function() {