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

Commit

Permalink
Merge pull request #8848 from fcampo/v1.0.1
Browse files Browse the repository at this point in the history
  • Loading branch information
Fernando Campo committed Mar 27, 2013
2 parents ba4feb2 + cb14aba commit 45780e8
Show file tree
Hide file tree
Showing 8 changed files with 139 additions and 32 deletions.
1 change: 1 addition & 0 deletions apps/communications/dialer/index.html
Expand Up @@ -43,6 +43,7 @@
<script defer src="/dialer/js/recents.js"></script>
<script defer src="/dialer/js/telephony_helper.js"></script>
<script defer src="/dialer/js/ussd.js"></script>
<script defer src="/dialer/js/newsletter_manager.js"></script>
-->
</head>
<body role="application">
Expand Down
3 changes: 2 additions & 1 deletion apps/communications/dialer/js/dialer.js
Expand Up @@ -452,7 +452,8 @@ window.addEventListener('load', function startup(evt) {
loader.load(['/contacts/js/fb/fb_data.js',
'/contacts/js/fb/fb_contact_utils.js',
'/shared/style/confirm.css',
'/contacts/js/confirm_dialog.js']);
'/contacts/js/confirm_dialog.js',
'/dialer/js/newsletter_manager.js']);
});
});

Expand Down
51 changes: 51 additions & 0 deletions apps/communications/dialer/js/newsletter_manager.js
@@ -0,0 +1,51 @@
'use strict';

var NewsletterManager = {
load: function nlm_load() {
loader.load('/shared/js/async_storage.js',
function finishLoading() {
NewsletterManager.start();
});
},

start: function nlm_start() {
var self = this;
window.asyncStorage.getItem('newsletter_email', function gotItem(item) {
if (item) { // FTU saved the email when no connection available
if (navigator.onLine) {
self.sendNewsletter(item);
} else {
window.addEventListener('online', self.sendNewsletter(item));
}
}
});
},

sendNewsletter: function nlm_sendNewsletter(emailAddress) {
loader.load('/ftu/js/basket-client.js', function basketLoaded() {
Basket.send(emailAddress, function itemSent(err, data) {
if (data && data.status == 'ok') {
window.asyncStorage.removeItem('newsletter_email');
window.removeEventListener('online', sendNewsletter);
}
});
});
}
};


// starting when we get a chance
loader.load('/shared/js/l10n.js', function localized() {

navigator.mozL10n.ready(function loadWhenIdle() {
var idleObserver = {
time: 5,
onidle: function() {
NewsletterManager.load();
navigator.removeIdleObserver(idleObserver);
}
};
navigator.addIdleObserver(idleObserver);
});

});
1 change: 0 additions & 1 deletion apps/communications/ftu/index.html
Expand Up @@ -354,7 +354,6 @@ <h2 data-l10n-id="about-other"> Other </h2>
</p>
<section id="newsletter-form">
<input type="email" data-l10n-id="emailAddress" placeholder="Email address" id="newsletter-input"></input>
<button class="recommend" data-l10n-id="done" id="newsletter-button">Done</butto>
</section>
<section id="newsletter-success-screen">
<p data-l10n-id="email-successfully-added">
Expand Down
20 changes: 17 additions & 3 deletions apps/communications/ftu/js/basket-client.js
Expand Up @@ -8,16 +8,21 @@ var Basket = {
newsletterId: 'firefox-os',
callback: null,
xhr: null,
itemId: 'newsletter_email',

responseHandler: function() {
responseHandler: function b_responseHandler() {
if (this.xhr.readyState === 4) {
if (this.xhr.status === 200) {
if (typeof this.callback === 'function') {
this.callback(null, JSON.parse(this.xhr.responseText));
}
} else {
if (typeof this.callback === 'function') {
this.callback(JSON.parse(this.xhr.responseText));
if (this.xhr.responseText) {
this.callback(JSON.parse(this.xhr.responseText));
} else {
this.callback('Unknown error');
}
}
}
}
Expand All @@ -32,12 +37,21 @@ var Basket = {
* is result of operation or null
* in the error case.
*/
send: function(email, callback) {
send: function b_send(email, callback) {
this.callback = callback;
this.xhr = new XMLHttpRequest({mozSystem: true});
this.xhr.onreadystatechange = this.responseHandler.bind(this);
this.xhr.open('POST', this.basketUrl, true);
this.xhr.send('email=' + email + '&newsletters=' + this.newsletterId);
},

store: function b_store(email, callback) {
var self = this;
window.asyncStorage.setItem(this.itemId, email, function stored() {
if (callback)
callback();
});
}

};

17 changes: 11 additions & 6 deletions apps/communications/ftu/js/navigation.js
Expand Up @@ -101,16 +101,22 @@ var Navigation = {
}
},


forward: function n_forward(event) {
var self = this;
var goToStepForward = function() {
self.previousStep = self.currentStep;
self.currentStep++;
if (self.currentStep > numSteps) {
UIManager.activationScreen.classList.remove('show');
UIManager.finishScreen.classList.add('show');
Tutorial.init();
// Try to send Newsletter here
UIManager.sendNewsletter(function newsletterSent(result) {
if (result) { // sending process ok, we advance
UIManager.activationScreen.classList.remove('show');
UIManager.finishScreen.classList.add('show');
Tutorial.init();
} else { // error on sending, we stay where we are
self.currentStep--;
}
});
return;
}
self.manageStep();
Expand Down Expand Up @@ -185,8 +191,7 @@ var Navigation = {
fbOption.classList.remove('disabled');
return;
}
if (WifiManager.api.connection.status === 'connected' ||
DataMobile.isDataAvailable) {
if (window.navigator.onLine) {
fbOption.classList.remove('disabled');
} else {
fbOption.classList.add('disabled');
Expand Down
75 changes: 55 additions & 20 deletions apps/communications/ftu/js/ui.js
Expand Up @@ -62,7 +62,6 @@ var UIManager = {
'offline-error-dialog',
// Browser privacy newsletter subscription
'newsletter-form',
'newsletter-button',
'newsletter-input',
'newsletter-success-screen',
'offline-newsletter-error-dialog',
Expand Down Expand Up @@ -131,32 +130,19 @@ var UIManager = {
if (err.desc.indexOf('email address') > -1) {
this.invalidEmailErrorDialog.classList.add('visible');
} else {
// Display 'no connection' dialog on error
this.offlineNewsletterErrorDialog.classList.add('visible');
// Store locally
Basket.store(this.newsletterInput.value, function stored() {
UIManager.newsletterSuccessScreen.classList.add('visible');
});
}

return;
}
// if properly sent, remove stored email (in case of any)
window.asyncStorage.removeItem('newsletter_email');
this.newsletterForm.classList.add('hidden');
this.newsletterSuccessScreen.classList.add('visible');
};

this.newsletterButton.addEventListener('click', function() {
if (WifiManager.isConnected || DataMobile.isDataAvailable) {
if (
this.newsletterInput.checkValidity() &&
this.newsletterInput.value.length > 0
) {
utils.overlay.show(_('email-loading'), 'spinner');
Basket.send(this.newsletterInput.value, basketCallback.bind(this));
} else {
this.invalidEmailErrorDialog.classList.add('visible');
}
} else {
this.offlineNewsletterErrorDialog.classList.add('visible');
}
}.bind(this));

this.offlineNewsletterErrorDialog
.querySelector('button')
.addEventListener('click',
Expand Down Expand Up @@ -188,6 +174,55 @@ var UIManager = {
this.onOfflineDialogButtonClick.bind(this));
},

sendNewsletter: function ui_sendNewsletter(callback) {
var self = this;
var emailValue = self.newsletterInput.value;
if (emailValue == '') {
return callback(true);
} else {
utils.overlay.show(_('email-loading'), 'spinner');
if (self.newsletterInput.checkValidity()) {
if (window.navigator.onLine) {
Basket.send(emailValue, function emailSent(err, data) {
if (err) {
if (err.desc && err.desc.indexOf('email address') > -1) {
ConfirmDialog.show(_('invalid-email-dialog-title'),
_('invalid-email-dialog-text'),
{
title: _('cancel'),
callback: function ok() {
ConfirmDialog.hide();
}
});
utils.overlay.hide();
return callback(false);
} else {
Basket.store(emailValue);
}
}
utils.overlay.hide();
return callback(true);
});
} else {
Basket.store(emailValue);
utils.overlay.hide();
return callback(true);
}
} else {
utils.overlay.hide();
ConfirmDialog.show(_('invalid-email-dialog-title'),
_('invalid-email-dialog-text'),
{
title: _('cancel'),
callback: function ok() {
ConfirmDialog.hide();
}
});
return callback(false);
}
}
},

initTZ: function ui_initTZ() {
// Initialize the timezone selector, see /shared/js/tz_select.js
var tzRegion = document.getElementById('tz-region');
Expand Down
3 changes: 2 additions & 1 deletion apps/communications/manifest.webapp
Expand Up @@ -80,7 +80,8 @@
"time": {},
"audio-channel-telephony":{},
"audio-channel-ringer":{},
"browser":{}
"browser":{},
"idle":{}
},
"orientation": "portrait-primary",
"activities": {
Expand Down

0 comments on commit 45780e8

Please sign in to comment.