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:
OverSu 2026-09-30 23:13:03 +02:00
commit b38dea0597
25901 changed files with 9982925 additions and 369 deletions

View file

@ -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();
}
});
}