render header and footer only once. fixes #788

This commit is contained in:
Danny Coates 2018-03-12 10:15:11 -07:00
parent 94714ecb62
commit 3e6a88d31d
No known key found for this signature in database
GPG Key ID: 4C442633C62E00CB
3 changed files with 52 additions and 36 deletions

View File

@ -110,21 +110,21 @@ export default function(state, emitter) {
} }
await delay(1000); await delay(1000);
await fadeOut('.page'); await fadeOut('.page');
openLinksInNewTab(links, false);
emitter.emit('pushState', `/share/${ownedFile.id}`); emitter.emit('pushState', `/share/${ownedFile.id}`);
} catch (err) { } catch (err) {
// eslint-disable-next-line no-console
console.error(err);
if (err.message === '0') { if (err.message === '0') {
//cancelled. do nothing //cancelled. do nothing
metrics.cancelledUpload({ size, type }); metrics.cancelledUpload({ size, type });
return render(); render();
} else {
// eslint-disable-next-line no-console
console.error(err);
state.raven.captureException(err);
metrics.stoppedUpload({ size, type, err });
emitter.emit('pushState', '/error');
} }
state.raven.captureException(err);
metrics.stoppedUpload({ size, type, err });
emitter.emit('pushState', '/error');
} finally { } finally {
openLinksInNewTab(links, false);
state.uploading = false; state.uploading = false;
state.transfer = null; state.transfer = null;
} }
@ -188,17 +188,18 @@ export default function(state, emitter) {
if (err.message === '0') { if (err.message === '0') {
// download cancelled // download cancelled
state.transfer.reset(); state.transfer.reset();
return render(); render();
} else {
// eslint-disable-next-line no-console
console.error(err);
state.transfer = null;
const location = err.message === '404' ? '/404' : '/error';
if (location === '/error') {
state.raven.captureException(err);
metrics.stoppedDownload({ size, err });
}
emitter.emit('pushState', location);
} }
// eslint-disable-next-line no-console
console.error(err);
state.transfer = null;
const location = err.message === '404' ? '/404' : '/error';
if (location === '/error') {
state.raven.captureException(err);
metrics.stoppedDownload({ size, err });
}
emitter.emit('pushState', location);
} finally { } finally {
openLinksInNewTab(links, false); openLinksInNewTab(links, false);
} }

View File

@ -2,7 +2,7 @@ const html = require('choo/html');
const assets = require('../../../common/assets'); const assets = require('../../../common/assets');
module.exports = function(state) { module.exports = function(state) {
return html`<footer class="footer"> const footer = html`<footer class="footer">
<div class="legalSection"> <div class="legalSection">
<a <a
href="https://www.mozilla.org" href="https://www.mozilla.org"
@ -61,4 +61,11 @@ module.exports = function(state) {
</a> </a>
</div> </div>
</footer>`; </footer>`;
// HACK
// We only want to render this once because we
// toggle the targets of the links with utils/openLinksInNewTab
footer.isSameNode = function(target) {
return target && target.nodeName && target.nodeName === 'FOOTER';
};
return footer;
}; };

View File

@ -15,24 +15,32 @@ const browser = browserName();
module.exports = function(state) { module.exports = function(state) {
const feedbackUrl = `https://qsurvey.mozilla.com/s3/txp-firefox-send?ver=${version}&browser=${browser}`; const feedbackUrl = `https://qsurvey.mozilla.com/s3/txp-firefox-send?ver=${version}&browser=${browser}`;
return html`<header class="header"> const header = html`
<div class="logo"> <header class="header">
<a class="logo__link" href="/"> <div class="logo">
<img <a class="logo__link" href="/">
src="${assets.get('send_logo.svg')}" <img
alt="Send"/> src="${assets.get('send_logo.svg')}"
<h1 class="logo__title">Send</h1> alt="Send"/>
</a> <h1 class="logo__title">Send</h1>
<div class="logo__subtitle"> </a>
<a class="logo__subtitle-link" href="https://testpilot.firefox.com">Firefox Test Pilot</a> <div class="logo__subtitle">
<div>${state.translate('siteSubtitle')}</div> <a class="logo__subtitle-link" href="https://testpilot.firefox.com">Firefox Test Pilot</a>
<div>${state.translate('siteSubtitle')}</div>
</div>
</div> </div>
</div> <a href="${feedbackUrl}"
<a href="${feedbackUrl}" rel="noreferrer noopener"
rel="noreferrer noopener" class="feedback"
class="feedback" target="_blank">${state.translate('siteFeedback')}</a>
target="_blank">${state.translate('siteFeedback')}</a> </header>`;
</header>`; // HACK
// We only want to render this once because we
// toggle the targets of the links with utils/openLinksInNewTab
header.isSameNode = function(target) {
return target && target.nodeName && target.nodeName === 'HEADER';
};
return header;
}; };
function browserName() { function browserName() {