mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-11-11 18:32:20 +08:00
68 lines
1.9 KiB
React
68 lines
1.9 KiB
React
|
import {shell} from 'electron';
|
||
|
import {React, IdentityStore} from 'nylas-exports';
|
||
|
|
||
|
|
||
|
export default class TrialRemainingBlock extends React.Component {
|
||
|
static displayName = "TrialRemainingBlock";
|
||
|
|
||
|
constructor(props) {
|
||
|
super(props)
|
||
|
this.state = Object.assign({buildingUpgradeURL: false}, this.getStateFromStores());
|
||
|
}
|
||
|
|
||
|
componentDidMount() {
|
||
|
this._unlisten = IdentityStore.listen(() =>
|
||
|
this.setState(this.getStateFromStores())
|
||
|
);
|
||
|
}
|
||
|
|
||
|
componentWillUnmount() {
|
||
|
if (this._unlisten) {
|
||
|
this._unlisten();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
getStateFromStores = () => {
|
||
|
return {
|
||
|
inTrial: (IdentityStore.subscriptionState() !== IdentityStore.State.Valid),
|
||
|
daysRemaining: IdentityStore.daysUntilSubscriptionRequired(),
|
||
|
};
|
||
|
}
|
||
|
|
||
|
_onUpgrade = () => {
|
||
|
this.setState({buildingUpgradeURL: true});
|
||
|
const utm = {
|
||
|
source: "UpgradeBanner",
|
||
|
campaign: "TrialStillActive",
|
||
|
}
|
||
|
IdentityStore.fetchSingleSignOnURL('/payment', utm).then((url) => {
|
||
|
this.setState({buildingUpgradeURL: false});
|
||
|
shell.openExternal(url);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
_onMoreInfo = () => {
|
||
|
shell.openExternal(`https://www.nylas.com/?utm_medium=N1&utm_source=UpgradeBanner&utm_campaign=TrialMoreInfo`);
|
||
|
}
|
||
|
|
||
|
render() {
|
||
|
const {inTrial, daysRemaining, buildingUpgradeURL} = this.state;
|
||
|
const daysTerm = daysRemaining === 1 ? 'day' : 'days';
|
||
|
|
||
|
if (inTrial && (daysRemaining !== null)) {
|
||
|
return (
|
||
|
<div className="trial-remaining-block">
|
||
|
{`${daysRemaining} ${daysTerm} left in `}free trial
|
||
|
<a className="learn-more" onClick={this._onMoreInfo}>
|
||
|
Learn more about <span>Nylas Pro</span>
|
||
|
</a>
|
||
|
<button className="btn subscribe" onClick={this._onUpgrade}>
|
||
|
{buildingUpgradeURL ? "Please Wait..." : "Subscribe"}
|
||
|
</button>
|
||
|
</div>
|
||
|
)
|
||
|
}
|
||
|
return <span />;
|
||
|
}
|
||
|
}
|