Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
parent
93e3a48004
commit
b38dea0597
25901 changed files with 9982925 additions and 369 deletions
|
|
@ -0,0 +1,84 @@
|
|||
/* global LazyLoader, Basket, Promise */
|
||||
|
||||
'use strict';
|
||||
|
||||
var NewsletterManager = {
|
||||
start: function() {
|
||||
return new Promise(function (resolve, reject) {
|
||||
LazyLoader.load('/shared/js/basket_client.js', function basketLoaded() {
|
||||
Basket.getDataStore().then(function gotDS(store) {
|
||||
store.get(1).then(function(itemRetrieved) {
|
||||
if (typeof itemRetrieved === 'undefined' ||
|
||||
itemRetrieved.emailSent) {
|
||||
// either no item stored or it was already sent
|
||||
resolve();
|
||||
} else {
|
||||
// try to send the email
|
||||
sendWhenOnline(itemRetrieved.newsletter_email)
|
||||
.then(function () {
|
||||
resolve();
|
||||
})
|
||||
.catch(function () {
|
||||
reject();
|
||||
});
|
||||
}
|
||||
});
|
||||
}).catch(function promiseFailed(error) {
|
||||
var errMsg = 'Something failed: ' + error;
|
||||
console.error(errMsg);
|
||||
reject(new Error(errMsg));
|
||||
});
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
sendNewsletter: function(emailAddress) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
LazyLoader.load('/shared/js/basket_client.js', function basketLoaded() {
|
||||
Basket.send(emailAddress, function itemSent(err, data) {
|
||||
if (err) {
|
||||
var errMsg = 'Error sending data: ' + err;
|
||||
console.error(errMsg);
|
||||
reject(new Error(errMsg));
|
||||
}
|
||||
|
||||
if (data && data.status === 'ok') {
|
||||
// Once is sent, we update the DataStore
|
||||
Basket.getDataStore().then(function gotDS(store) {
|
||||
var newObj = {
|
||||
'emailSent': true
|
||||
};
|
||||
store.put(newObj, 1);
|
||||
resolve();
|
||||
}).catch(function error(err) {
|
||||
var errMsg = 'Error getting the datastore: ' + err;
|
||||
console.error(errMsg);
|
||||
reject(new Error(errMsg));
|
||||
});
|
||||
} else {
|
||||
reject(
|
||||
new Error('Error on server answer: ' + JSON.stringify(data))
|
||||
);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
function sendWhenOnline(email) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
if (navigator.onLine) {
|
||||
// send it inmediately
|
||||
NewsletterManager.sendNewsletter(email).then(resolve).catch(reject);
|
||||
} else {
|
||||
// wait for connection
|
||||
window.addEventListener('online', function online() {
|
||||
window.removeEventListener('online', online);
|
||||
NewsletterManager.sendNewsletter(email);
|
||||
});
|
||||
reject();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
Loading…
Reference in a new issue