only _blank links while downloading. fixed safari link after download

This commit is contained in:
Danny Coates 2017-08-05 09:40:57 -07:00
parent 432a39d313
commit 859554ce21
No known key found for this signature in database
GPG Key ID: 4C442633C62E00CB
8 changed files with 74 additions and 60 deletions

View File

@ -1,5 +1,4 @@
const testPilotGA = require('testpilot-ga'); const testPilotGA = require('testpilot-ga');
const { sendEvent } = require('./utils');
const Raven = require('raven-js'); const Raven = require('raven-js');
if (navigator.doNotTrack !== '1' && window.RAVEN_CONFIG) { if (navigator.doNotTrack !== '1' && window.RAVEN_CONFIG) {
@ -12,6 +11,37 @@ const analytics = new testPilotGA({
tid: window.GOOGLE_ANALYTICS_ID tid: window.GOOGLE_ANALYTICS_ID
}); });
function sendEvent() {
return analytics.sendEvent
.apply(analytics, arguments)
.catch(() => 0);
}
function findMetric(href) {
switch (href) {
case 'https://www.mozilla.org/':
return 'mozilla';
case 'https://www.mozilla.org/about/legal':
return 'legal';
case 'https://testpilot.firefox.com/about':
return 'about';
case 'https://testpilot.firefox.com/privacy':
return 'privacy';
case 'https://testpilot.firefox.com/terms':
return 'terms';
case 'https://www.mozilla.org/privacy/websites/#cookies':
return 'cookies';
case 'https://github.com/mozilla/send':
return 'github';
case 'https://twitter.com/FxTestPilot':
return 'twitter';
case 'https://www.mozilla.org/firefox/new/?scene=2':
return 'download-firefox';
default:
return 'other';
}
}
const ua = navigator.userAgent.toLowerCase(); const ua = navigator.userAgent.toLowerCase();
if ( if (
ua.indexOf('firefox') > -1 && ua.indexOf('firefox') > -1 &&
@ -26,5 +56,8 @@ if (
}); });
} }
window.analytics = analytics; module.exports = {
window.Raven = Raven; Raven,
sendEvent,
findMetric
}

View File

@ -1,20 +1,17 @@
require('./common'); const { Raven, findMetric, sendEvent } = require('./common');
const FileReceiver = require('./fileReceiver'); const FileReceiver = require('./fileReceiver');
const { notify, findMetric, sendEvent, gcmCompliant } = require('./utils'); const { notify, gcmCompliant } = require('./utils');
const bytes = require('bytes'); const bytes = require('bytes');
const Storage = require('./storage'); const Storage = require('./storage');
const storage = new Storage(localStorage); const storage = new Storage(localStorage);
const links = require('./links');
const $ = require('jquery'); const $ = require('jquery');
require('jquery-circle-progress'); require('jquery-circle-progress');
const Raven = window.Raven;
$(document).ready(function() { $(document).ready(function() {
gcmCompliant() gcmCompliant()
.then(function() { .then(function() {
//link back to homepage
$('.send-new').attr('href', window.location.origin);
$('.send-new').click(function() { $('.send-new').click(function() {
sendEvent('recipient', 'restarted', { sendEvent('recipient', 'restarted', {
@ -46,7 +43,8 @@ $(document).ready(function() {
function download() { function download() {
// Disable the download button to avoid accidental double clicks. // Disable the download button to avoid accidental double clicks.
$('#download-btn').attr('disabled', 'disabled'); $('#download-btn').attr('disabled', 'disabled');
links.setOpenInNewTab(true);
storage.totalDownloads += 1; storage.totalDownloads += 1;
const fileReceiver = new FileReceiver(); const fileReceiver = new FileReceiver();
@ -181,7 +179,8 @@ $(document).ready(function() {
.catch(err => { .catch(err => {
Raven.captureException(err); Raven.captureException(err);
return Promise.reject(err); return Promise.reject(err);
}); })
.then(() => links.setOpenInNewTab(false));
} }
}) })
.catch(err => { .catch(err => {

19
frontend/src/links.js Normal file
View File

@ -0,0 +1,19 @@
let links = []
document.addEventListener('DOMContentLoaded', function () {
links = document.querySelectorAll('a:not([target])')
})
function setOpenInNewTab(bool) {
if (bool === false) {
links.forEach(l => l.removeAttribute('target'));
}
else {
links.forEach(l => l.setAttribute('target', '_blank'));
}
}
module.exports = {
setOpenInNewTab
}

View File

@ -1,12 +1,10 @@
/* global MAXFILESIZE EXPIRE_SECONDS */ /* global MAXFILESIZE EXPIRE_SECONDS */
require('./common'); const { Raven, findMetric, sendEvent } = require('./common');
const FileSender = require('./fileSender'); const FileSender = require('./fileSender');
const { const {
copyToClipboard, copyToClipboard,
notify, notify,
gcmCompliant, gcmCompliant,
findMetric,
sendEvent,
ONE_DAY_IN_MS ONE_DAY_IN_MS
} = require('./utils'); } = require('./utils');
const bytes = require('bytes'); const bytes = require('bytes');
@ -16,8 +14,6 @@ const storage = new Storage(localStorage);
const $ = require('jquery'); const $ = require('jquery');
require('jquery-circle-progress'); require('jquery-circle-progress');
const Raven = window.Raven;
if (storage.has('referrer')) { if (storage.has('referrer')) {
window.referrer = storage.referrer; window.referrer = storage.referrer;
storage.remove('referrer'); storage.remove('referrer');

View File

@ -79,41 +79,10 @@ function gcmCompliant() {
} }
} }
function findMetric(href) {
switch (href) {
case 'https://www.mozilla.org/':
return 'mozilla';
case 'https://www.mozilla.org/about/legal':
return 'legal';
case 'https://testpilot.firefox.com/about':
return 'about';
case 'https://testpilot.firefox.com/privacy':
return 'privacy';
case 'https://testpilot.firefox.com/terms':
return 'terms';
case 'https://www.mozilla.org/privacy/websites/#cookies':
return 'cookies';
case 'https://github.com/mozilla/send':
return 'github';
case 'https://twitter.com/FxTestPilot':
return 'twitter';
case 'https://www.mozilla.org/firefox/new/?scene=2':
return 'download-firefox';
default:
return 'other';
}
}
function isFile(id) { function isFile(id) {
return /^[0-9a-fA-F]{10}$/.test(id); return /^[0-9a-fA-F]{10}$/.test(id);
} }
function sendEvent() {
return window.analytics.sendEvent
.apply(window.analytics, arguments)
.catch(() => 0);
}
function copyToClipboard(str) { function copyToClipboard(str) {
const aux = document.createElement('input'); const aux = document.createElement('input');
aux.setAttribute('value', str); aux.setAttribute('value', str);
@ -143,8 +112,6 @@ module.exports = {
hexToArray, hexToArray,
notify, notify,
gcmCompliant, gcmCompliant,
findMetric,
isFile, isFile,
sendEvent,
ONE_DAY_IN_MS ONE_DAY_IN_MS
}; };

View File

@ -35,5 +35,5 @@
</div> </div>
</div> </div>
<a class="send-new" data-l10n-id="sendYourFilesLink" target="_blank"></a> <a class="send-new" data-l10n-id="sendYourFilesLink" href="/"></a>
</div> </div>

View File

@ -36,7 +36,7 @@
<div class="all"> <div class="all">
<noscript> <noscript>
<h2>Firefox Send requires JavaScript</h2> <h2>Firefox Send requires JavaScript</h2>
<p><a href="https://github.com/mozilla/send/blob/master/docs/faq.md#why-does-firefox-send-require-javascript" target="_blank" rel="noreferrer noopener">Why does Firefox Send require JavaScript?</a></p> <p><a href="https://github.com/mozilla/send/blob/master/docs/faq.md#why-does-firefox-send-require-javascript" rel="noreferrer noopener">Why does Firefox Send require JavaScript?</a></p>
<p>Please enable JavaScript and try again.</p> <p>Please enable JavaScript and try again.</p>
</noscript> </noscript>
{{{body}}} {{{body}}}
@ -44,15 +44,15 @@
<div class="footer"> <div class="footer">
<div class="legal-links"> <div class="legal-links">
<a href="https://www.mozilla.org" target="_blank"><img class="mozilla-logo" src="/resources/mozilla-logo.svg"/></a> <a href="https://www.mozilla.org" target="_blank"><img class="mozilla-logo" src="/resources/mozilla-logo.svg"/></a>
<a href="https://www.mozilla.org/about/legal" data-l10n-id="footerLinkLegal" target="_blank">Legal</a> <a href="https://www.mozilla.org/about/legal" data-l10n-id="footerLinkLegal">Legal</a>
<a href="https://testpilot.firefox.com/about" data-l10n-id="footerLinkAbout" target="_blank">About Test Pilot</a> <a href="https://testpilot.firefox.com/about" data-l10n-id="footerLinkAbout">About Test Pilot</a>
<a href="/legal" data-l10n-id="footerLinkPrivacy" target="_blank">Privacy</a> <a href="/legal" data-l10n-id="footerLinkPrivacy">Privacy</a>
<a href="/legal" data-l10n-id="footerLinkTerms" target="_blank">Terms</a> <a href="/legal" data-l10n-id="footerLinkTerms">Terms</a>
<a href="https://www.mozilla.org/privacy/websites/#cookies" data-l10n-id="footerLinkCookies" target="_blank">Cookies</a> <a href="https://www.mozilla.org/privacy/websites/#cookies" data-l10n-id="footerLinkCookies">Cookies</a>
</div> </div>
<div class="social-links"> <div class="social-links">
<a href="https://github.com/mozilla/send" target="_blank" rel="noreferrer noopener"><img class="github" src="/resources/github-icon.svg"/></a> <a href="https://github.com/mozilla/send" rel="noreferrer noopener"><img class="github" src="/resources/github-icon.svg"/></a>
<a href="https://twitter.com/FxTestPilot" target="_blank" rel="noreferrer noopener"><img class="twitter" src="/resources/twitter-icon.svg"/></a> <a href="https://twitter.com/FxTestPilot" rel="noreferrer noopener"><img class="twitter" src="/resources/twitter-icon.svg"/></a>
</div> </div>
</div> </div>
</body> </body>

View File

@ -8,8 +8,8 @@
</a> </a>
{{else}} {{else}}
<div class="description" data-l10n-id="notSupportedDetail">Unfortunately this browser does not support the web technology that powers Firefox Send. Youll need to try another browser. We recommend Firefox!</div> <div class="description" data-l10n-id="notSupportedDetail">Unfortunately this browser does not support the web technology that powers Firefox Send. Youll need to try another browser. We recommend Firefox!</div>
<div class="description"><a href="https://github.com/mozilla/send/blob/master/docs/faq.md#why-is-my-browser-not-supported" data-l10n-id="notSupportedLink" target="_blank" rel="noopener noreferrer">Why is my browser not supported?</a></div> <div class="description"><a href="https://github.com/mozilla/send/blob/master/docs/faq.md#why-is-my-browser-not-supported" data-l10n-id="notSupportedLink" rel="noopener noreferrer">Why is my browser not supported?</a></div>
<a id="dl-firefox" href="https://www.mozilla.org/firefox/new/?scene=2" target="_blank"> <a id="dl-firefox" href="https://www.mozilla.org/firefox/new/?scene=2">
<img src="/resources/firefox_logo-only.svg" class="firefox-logo" alt="Firefox"/> <img src="/resources/firefox_logo-only.svg" class="firefox-logo" alt="Firefox"/>
<div class="unsupported-button-text">Firefox<br> <div class="unsupported-button-text">Firefox<br>
<span data-l10n-id="downloadFirefoxButtonSub">Free Download</span> <span data-l10n-id="downloadFirefoxButtonSub">Free Download</span>