var claimCodePageStyle = { textAlign: 'center', }, claimCodeContentStyle = { display: 'inline-block', textAlign: 'left', width: '600px', }, claimCodeLabelStyle = { display: 'inline-block', cursor: 'default', width: '130px', textAlign: 'right', marginRight: '6px', }; var ClaimCodePage = React.createClass({ getInitialState: function() { return { submitting: false, } }, handleSubmit: function() { if (!this.refs.code.value) { alert('Please enter an invitation code or choose "Skip."'); return; } else if (!this.refs.email.value) { alert('Please enter an email address or choose "Skip."'); return; } this.setState({ submitting: true }); lbry.getNewAddress((address) => { var code = this.refs.code.value; var email = this.refs.email.value; var xhr = new XMLHttpRequest; xhr.addEventListener('load', () => { var response = JSON.parse(xhr.responseText); if (response.success) { alert('Your invite code has been redeemed! The credits will be added to your balance shortly.'); // Send them to "landing" instead of "home" (home will just trigger the message all over again until the credits arrive) window.location = '?landing'; } else { alert(response.reason); this.setState({ submitting: false }); } }); xhr.addEventListener('error', () => { this.setState({ submitting: false }); alert('LBRY couldn\'t connect to our servers to confirm your invitation code. Please check your ' + 'internet connection. If you continue to have problems, you can still browse LBRY and ' + 'visit the Settings page to redeem your code later.'); }); xhr.open('POST', 'https://invites.lbry.io', true); xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); xhr.send('code=' + encodeURIComponent(code) + '&address=' + encodeURIComponent(address) + '&email=' + encodeURIComponent(email)); }); }, handleSkip: function() { alert('Welcome to LBRY! You can visit the Settings page to redeem an invite code at any time.'); window.location = '?landing'; }, render: function() { return ( <main className="page" style={claimCodePageStyle}> <h1>Claim your beta invitation code</h1> <section style={claimCodeContentStyle}> <p>Thanks for beta testing LBRY! Enter your invitation code and email address below to receive your initial LBRY credits.</p> <p>You will be added to our mailing list (if you're not already on it) and will be eligible for future rewards for beta testers.</p> </section> <section> <form onSubmit={this.handleSubmit}> <section><label style={claimCodeLabelStyle} htmlFor="code">Invitation code</label><input name="code" ref="code" /></section> <section><label style={claimCodeLabelStyle} htmlFor="email">Email</label><input name="email" ref="email" /></section> </form> </section> <section> <Link button="primary" label={this.state.submitting ? "Submitting..." : "Submit"} disabled={this.state.submitting} onClick={this.handleSubmit} /> <Link button="alt" label="Skip" disabled={this.state.submitting} onClick={this.handleSkip} /> </section> </main> ); } });