From 1fea12b0ebefce42b44e9b459d90aa7a73663502 Mon Sep 17 00:00:00 2001 From: Dan Poltawski Date: Tue, 10 Jan 2017 11:07:34 +0000 Subject: [PATCH] MDL-57139 mod_lti: ensure promise best practices --- mod/lti/amd/src/contentitem.js | 65 ++++++++++++------------- mod/lti/amd/src/tool_card_controller.js | 24 +++++---- 2 files changed, 43 insertions(+), 46 deletions(-) diff --git a/mod/lti/amd/src/contentitem.js b/mod/lti/amd/src/contentitem.js index 42e9808c402..a6dad9222b5 100644 --- a/mod/lti/amd/src/contentitem.js +++ b/mod/lti/amd/src/contentitem.js @@ -46,42 +46,41 @@ define( * @param {object} postData The data to be sent for the content item selection request. */ init: function(url, postData) { - var dialogueTitle = ''; + var context = { + url: url, + postData: postData + }; + var bodyPromise = templates.render('mod_lti/contentitem', context); + + if (dialogue) { + // Set dialogue body. + dialogue.setBody(bodyPromise); + // Display the dialogue. + dialogue.show(); + return; + } + str.get_string('selectcontent', 'lti').then(function(title) { - dialogueTitle = title; - var context = { - url: url, - postData: postData - }; + return ModalFactory.create({ + title: title, + body: bodyPromise, + large: true + }); + }).then(function(modal) { + dialogue = modal; + // On hide handler. + modal.getRoot().on(ModalEvents.hidden, function() { + // Empty modal contents when it's hidden. + modal.setBody(''); - var body = templates.render('mod_lti/contentitem', context); - if (dialogue) { - // Set dialogue body. - dialogue.setBody(body); - // Display the dialogue. - dialogue.show(); - } else { - ModalFactory.create({ - title: dialogueTitle, - body: body, - large: true - }).done(function(modal) { - dialogue = modal; + // Fetch notifications. + notification.fetchNotifications(); + }); - // Display the dialogue. - dialogue.show(); - - // On hide handler. - modal.getRoot().on(ModalEvents.hidden, function() { - // Empty modal contents when it's hidden. - modal.setBody(''); - - // Fetch notifications. - notification.fetchNotifications(); - }); - }); - } - }); + // Display the dialogue. + modal.show(); + return; + }).catch(notification.exception); } }; diff --git a/mod/lti/amd/src/tool_card_controller.js b/mod/lti/amd/src/tool_card_controller.js index 99042db9fbe..4050f724f65 100644 --- a/mod/lti/amd/src/tool_card_controller.js +++ b/mod/lti/amd/src/tool_card_controller.js @@ -477,21 +477,19 @@ define(['jquery', 'core/ajax', 'core/notification', 'core/templates', 'mod_lti/t state: toolType.constants.state.configured }); - promise.done(function(toolTypeData) { + promise.then(function(toolTypeData) { stopLoading(element); + announceSuccess(element); + return toolTypeData; + }).then(function(toolTypeData) { + return templates.render('mod_lti/tool_card', toolTypeData); + }).then(function(renderResult) { + var html = renderResult[0]; + var js = renderResult[1]; - var announcePromise = announceSuccess(element); - var renderPromise = templates.render('mod_lti/tool_card', toolTypeData); - - $.when(renderPromise, announcePromise).then(function(renderResult) { - var html = renderResult[0]; - var js = renderResult[1]; - - templates.replaceNode(element, html, js); - }); - }); - - promise.fail(function() { + templates.replaceNode(element, html, js); + return; + }).catch(function() { stopLoading(element); announceFailure(element); });