send/app/ui/signupDialog.js

72 lines
2.2 KiB
JavaScript
Raw Normal View History

2018-10-25 02:07:10 +00:00
/* global LIMITS */
const html = require('choo/html');
const { bytes, platform } = require('../utils');
2019-02-12 19:50:06 +00:00
const { canceledSignup, submittedSignup } = require('../metrics');
2018-10-25 02:07:10 +00:00
2019-02-12 19:50:06 +00:00
module.exports = function(trigger) {
2018-10-25 02:07:10 +00:00
return function(state, emit, close) {
const hidden = platform() === 'android' ? 'hidden' : '';
let submitting = false;
2018-10-25 02:07:10 +00:00
return html`
<send-signup-dialog class="flex flex-col p-4">
2018-10-25 02:07:10 +00:00
<p class="p-8">
${state.translate('accountBenefitTitle')}
2018-11-02 09:27:59 +00:00
<ul class="my-2 leading-normal">
2018-10-25 02:07:10 +00:00
<li>${state.translate('accountBenefitLargeFiles', {
size: bytes(LIMITS.MAX_FILE_SIZE)
})}</li>
<li>${state.translate('accountBenefitExpiry')}</li>
<li>${state.translate('accountBenefitSync')}</li>
</ul>
</p>
<form
onsubmit=${submitEmail}
data-no-csrf>
<input
id="email-input"
type="text"
2019-02-13 19:14:53 +00:00
class="${hidden} border rounded-lg w-full px-2 py-1 h-12 mb-4 text-lg text-grey-darker leading-loose"
placeholder=${state.translate('emailEntryPlaceholder')} />
2018-10-25 02:07:10 +00:00
<input
2019-02-20 18:57:32 +00:00
class="btn rounded-lg w-full flex flex-no-shrink items-center justify-center"
value="${state.translate('signInMenuOption')}"
2019-02-21 03:59:29 +00:00
title="${state.translate('signInMenuOption')}"
2018-10-25 02:07:10 +00:00
id="email-submit"
type="submit" />
2018-10-25 02:07:10 +00:00
</form>
<button
2019-02-13 19:14:53 +00:00
class="my-4 text-blue-dark hover:text-blue-darker focus:text-blue-darker font-medium"
2018-10-25 02:07:10 +00:00
title="${state.translate('deletePopupCancel')}"
2019-02-12 19:50:06 +00:00
onclick=${cancel}>${state.translate('deletePopupCancel')}
2018-10-25 02:07:10 +00:00
</button>
</send-signup-dialog>`;
2018-10-25 02:07:10 +00:00
function emailish(str) {
if (!str) {
return false;
}
// just check if it's the right shape
const a = str.split('@');
return a.length === 2 && a.every(s => s.length > 0);
}
2019-02-12 19:50:06 +00:00
function cancel(event) {
canceledSignup({ trigger });
close(event);
}
2018-10-25 02:07:10 +00:00
function submitEmail(event) {
event.preventDefault();
if (submitting) {
return;
}
submitting = true;
2018-10-25 02:07:10 +00:00
const el = document.getElementById('email-input');
const email = el.value;
2019-02-12 19:50:06 +00:00
submittedSignup({ trigger });
emit('login', emailish(email) ? email : null);
2018-10-25 02:07:10 +00:00
}
};
};