MDL-57139 mod_lti: ensure promise best practices

This commit is contained in:
Dan Poltawski 2017-01-10 11:07:34 +00:00
parent 7efdac5fc3
commit 1fea12b0eb
2 changed files with 43 additions and 46 deletions

View file

@ -46,31 +46,28 @@ define(
* @param {object} postData The data to be sent for the content item selection request. * @param {object} postData The data to be sent for the content item selection request.
*/ */
init: function(url, postData) { init: function(url, postData) {
var dialogueTitle = '';
str.get_string('selectcontent', 'lti').then(function(title) {
dialogueTitle = title;
var context = { var context = {
url: url, url: url,
postData: postData postData: postData
}; };
var bodyPromise = templates.render('mod_lti/contentitem', context);
var body = templates.render('mod_lti/contentitem', context);
if (dialogue) { if (dialogue) {
// Set dialogue body. // Set dialogue body.
dialogue.setBody(body); dialogue.setBody(bodyPromise);
// Display the dialogue. // Display the dialogue.
dialogue.show(); dialogue.show();
} else { return;
ModalFactory.create({ }
title: dialogueTitle,
body: body, str.get_string('selectcontent', 'lti').then(function(title) {
return ModalFactory.create({
title: title,
body: bodyPromise,
large: true large: true
}).done(function(modal) { });
}).then(function(modal) {
dialogue = modal; dialogue = modal;
// Display the dialogue.
dialogue.show();
// On hide handler. // On hide handler.
modal.getRoot().on(ModalEvents.hidden, function() { modal.getRoot().on(ModalEvents.hidden, function() {
// Empty modal contents when it's hidden. // Empty modal contents when it's hidden.
@ -79,9 +76,11 @@ define(
// Fetch notifications. // Fetch notifications.
notification.fetchNotifications(); notification.fetchNotifications();
}); });
});
} // Display the dialogue.
}); modal.show();
return;
}).catch(notification.exception);
} }
}; };

View file

@ -477,21 +477,19 @@ define(['jquery', 'core/ajax', 'core/notification', 'core/templates', 'mod_lti/t
state: toolType.constants.state.configured state: toolType.constants.state.configured
}); });
promise.done(function(toolTypeData) { promise.then(function(toolTypeData) {
stopLoading(element); stopLoading(element);
announceSuccess(element);
var announcePromise = announceSuccess(element); return toolTypeData;
var renderPromise = templates.render('mod_lti/tool_card', toolTypeData); }).then(function(toolTypeData) {
return templates.render('mod_lti/tool_card', toolTypeData);
$.when(renderPromise, announcePromise).then(function(renderResult) { }).then(function(renderResult) {
var html = renderResult[0]; var html = renderResult[0];
var js = renderResult[1]; var js = renderResult[1];
templates.replaceNode(element, html, js); templates.replaceNode(element, html, js);
}); return;
}); }).catch(function() {
promise.fail(function() {
stopLoading(element); stopLoading(element);
announceFailure(element); announceFailure(element);
}); });