Skip to content
This repository has been archived by the owner on Nov 3, 2021. It is now read-only.

Commit

Permalink
Bug 1131966 - Update suggestions when provider changes. r=kgrandon
Browse files Browse the repository at this point in the history
  • Loading branch information
daleharvey committed Mar 2, 2015
1 parent d02fdee commit 323d773
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 14 deletions.
35 changes: 30 additions & 5 deletions apps/search/js/providers/suggestions.js
Expand Up @@ -9,7 +9,7 @@
var suggestionsProvider = document.getElementById('suggestions-provider');
var suggestionsSelect = document.getElementById('suggestions-select');

SearchProvider.providerUpdated(function() {
function providerUpdated() {

navigator.mozL10n.setAttributes(suggestionsProvider, 'search-header', {
provider: SearchProvider('title').toUpperCase()
Expand All @@ -31,9 +31,7 @@

suggestionsSelect.innerHTML = '';
suggestionsSelect.appendChild(selectFragment);
});

SearchProvider.ready();
}

function encodeTerms(str, search) {
return str.replace('{searchTerms}', encodeURIComponent(search));
Expand All @@ -47,11 +45,31 @@

name: 'Suggestions',

currentSearch: null,

init: function() {
Provider.prototype.init.apply(this, arguments);

suggestionsSelect.addEventListener('change', function(e) {
SearchProvider.setProvider(e.target.value);
});

SearchProvider.ready().then(() => {
providerUpdated();
SearchProvider.providerUpdated(() => {
providerUpdated();
this.redoSearch();
});
});
},

redoSearch: function() {
if (!this.currentSearch) {
return;
}
this.search(this.currentSearch).then(results => {
this.render(results);
});
},

click: function(e) {
Expand All @@ -61,6 +79,8 @@
},

search: function(input, preventRemote) {

this.currentSearch = input;
this.render([input]);

if (!navigator.onLine || preventRemote) {
Expand Down Expand Up @@ -94,11 +114,16 @@
});

suggestionsWrapper.dataset.loading = false;
this.clear();
this.container.innerHTML = '';

if (ul.childNodes.length) {
this.container.appendChild(ul);
}
},

clear: function() {
Provider.prototype.clear.apply(this, arguments);
this.currentSearch = null;
}

};
Expand Down
4 changes: 2 additions & 2 deletions apps/search/test/marionette/change_providers_test.js
Expand Up @@ -50,6 +50,8 @@ marionette('Search - Switch Providers Test', function() {
home.waitForLaunch();

home.focusRocketBar();
search.triggerFirstRun(rocketbar);

rocketbar.enterText('sometext');
search.goToResults();
client.waitFor(function() {
Expand All @@ -60,8 +62,6 @@ marionette('Search - Switch Providers Test', function() {
client.helper.tapSelectOption(select, 'second');

client.switchToFrame();
home.focusRocketBar();
rocketbar.enterText('othertext');
search.goToResults();
client.waitFor(function() {
return client.findElements(search.Selectors.suggestions).length === 3;
Expand Down
18 changes: 11 additions & 7 deletions shared/js/search_provider.js
Expand Up @@ -32,6 +32,7 @@

// Allow consumers to wait for data to be initialised
var readyPromise;
var resolver;

function extend(dest, source) {
for (var k in source) {
Expand Down Expand Up @@ -97,9 +98,9 @@
provider = value;
}

if (readyPromise && isReady()) {
readyPromise();
readyPromise = null;
if (resolver && isReady()) {
resolver();
resolver = null;
}

if (updatedFun) {
Expand Down Expand Up @@ -179,8 +180,9 @@
};

SearchProvider.ready = function() {
if (isReady()) {
return Promise.resolve();

if (readyPromise) {
return readyPromise;
}

// Attempt to load cached provider configuration
Expand All @@ -200,9 +202,11 @@
}
};

return new Promise(resolve => {
readyPromise = resolve;
readyPromise = new Promise(resolve => {
resolver = resolve;
});

return readyPromise;
};

exports.SearchProvider = SearchProvider;
Expand Down

0 comments on commit 323d773

Please sign in to comment.