15 minutels and only if > 1 person

This commit is contained in:
Seth Call 2020-12-06 12:25:39 -06:00
parent c572b0ac27
commit 96a55d9894
7 changed files with 42 additions and 20 deletions

View File

@ -510,6 +510,21 @@ profileUtils = context.JK.ProfileUtils
defaultText: () ->
'Select Country'
onStartPaypal: (e) ->
e.preventDefault()
@paypal = window.recurly.PayPal({ display: { displayName: 'JamKazam Subscriptions' }})
@paypal.on('error', this.onPayPalError)
@paypal.on('token', this.onPayPalToken)
@paypal.start();
onPayPalToken:(token) ->
console.log("OnPayPalToken", token)
onPayPalError: (err) ->
console.error("OnPayPalError", err)
openBrowserToPayment: () ->
context.JK.popExternalLink("/client#/account/paymentHistory", true)
@ -608,6 +623,7 @@ profileUtils = context.JK.ProfileUtils
<div className={classNames(leftColumnClasses)}>
{uncollectableMessage}
<div className="paymethod-header">{header}</div>
<a href='#' onClick={this.onStartPaypal}>Pay with Paypal</a>
<form autoComplete="on" onSubmit={this.onSubmit} className={classNames(formClasses)} id="user-payment-submit">
{firstNameField}
{lastNameField}

View File

@ -54,24 +54,25 @@ context = window
render: () ->
content = null
if @props.subscription.until.total < 60000
content = `<div className="message">
<p>You have run out of time.</p>
<p><a href="#" onClick={this.openBrowserToPlanComparison}>Compare plans</a> and consider <a href="/client#/account/subscription" onClick={this.openBrowserToPayment}>upgrading your plan</a> for more play time and premium features.</p>
</div>`
else
if @props.subscription.main_concern_type == 'remaining_session_play_time'
if @props.subscription.participants > 1
if @props.subscription.until.total < 60000
content = `<div className="message">
<p>You will run out play time for this session in:</p>
<p className="time">{this.displayTime()}</p>
<p>You have run out of time.</p>
<p><a href="#" onClick={this.openBrowserToPlanComparison}>Compare plans</a> and consider <a href="/client#/account/subscription" onClick={this.openBrowserToPayment}>upgrading your plan</a> for more play time and premium features.</p>
</div>`
else
content = `<div className="message">
<p>You will run out of monthly play time in:</p>
if @props.subscription.main_concern_type == 'remaining_session_play_time'
content = `<div className="message">
<p>You will run out play time for this session in:</p>
<p className="time">{this.displayTime()}</p>
<p><a href="#" onClick={this.openBrowserToPlanComparison}>Compare plans</a> and consider <a href="/client#/account/subscription" onClick={this.openBrowserToPayment}>upgrading your plan</a> for more play time and premium features.</p>
</div>`
<p><a href="#" onClick={this.openBrowserToPlanComparison}>Compare plans</a> and consider <a href="/client#/account/subscription" onClick={this.openBrowserToPayment}>upgrading your plan</a> for more play time and premium features.</p>
</div>`
else
content = `<div className="message">
<p>You will run out of monthly play time in:</p>
<p className="time">{this.displayTime()}</p>
<p><a href="#" onClick={this.openBrowserToPlanComparison}>Compare plans</a> and consider <a href="/client#/account/subscription" onClick={this.openBrowserToPayment}>upgrading your plan</a> for more play time and premium features.</p>
</div>`
if content?
`<div className="broadcast-notification subscription">

View File

@ -6,7 +6,7 @@ ReactCSSTransitionGroup = React.addons.CSSTransitionGroup;
@TopMessageHolder = React.createClass(
{
displayName: 'Top Message Holder',
minimum_time_until_sub_prompt: 1000 * 60 * 30 # 30 minutes
minimum_time_until_sub_prompt: 1000 * 60 * 15 # 30 minutes
mixins: [Reflux.listenTo(ConfigStore, "onConfig"), Reflux.connect(context.JK.Stores.Broadcast, 'notification')]
getInitialState: () ->
@ -25,7 +25,7 @@ ReactCSSTransitionGroup = React.addons.CSSTransitionGroup;
# only show the subscription concern message if there is a concerpn and due time is less thant 30 minutes away
if @state.notification && @state.notification.subscriptionConcern? && @state.notification.subscriptionConcern.until.total < @minimum_time_until_sub_prompt
`<div id="broadcast-notification-holder" className="broadcast-notification-holder" >
<SubscriptionConcern key="subscriptionconcern" subscription={this.state.notification.subscriptionConcern} />
<SubscriptionConcern key="subscriptionconcern" subscription={this.state.notification.subscriptionConcern} />
</div>`
else if @state.top_message
`<div id="broadcast-notification-holder" className="broadcast-notification-holder" >

View File

@ -47,7 +47,7 @@ BroadcastStore = Reflux.createStore(
subscriptionManagement: () ->
@subscriptionConcern.until = @lessonUtils.getTimeRemaining(@subscriptionConcern.main_concern_time)
if @subscriptionConcern.until.total < -30000
if @session?.participants.length > 1 && @subscriptionConcern.until.total < -30000
leaveBehavior =
location: "/client#/findSession"
buttons = []
@ -158,6 +158,7 @@ BroadcastStore = Reflux.createStore(
@subscriptionConcern = null
else
@subscriptionConcern = {}
@subscriptionConcern.participants = @session?.participants().length
if !@subscriptionRules.remaining_month_until?
@subscriptionConcern.main_concern_time = @sessionRules.remaining_session_until
@subscriptionConcern.main_concern_type = "remaining_session_play_time"
@ -175,7 +176,7 @@ BroadcastStore = Reflux.createStore(
@subscriptionManagement()
#logger.debug("BroadcastStore: session can play until: ", @subscriptionConcern.until, @subscriptionConcern.main_concert_time)
if !@currentSubscriptionTimer?
@currentSubscriptionTimer= setInterval((() => @subscriptionTick()), 1000)
@currentSubscriptionTimer = setInterval((() => @subscriptionTick()), 1000)
@changed()
if currentSession.lesson_session?

View File

@ -1094,7 +1094,7 @@ ConfigureTracksActions = @ConfigureTracksActions
if sessionData.session_rules
@sessionRules = sessionData.session_rules
# TESTING:
#@sessionRules.remaining_session_play_time = 60 * 30 + 15 # 30 minutes and 15 seconds
#@sessionRules.remaining_session_play_time = 60 * 15 + 15 # 15 minutes and 15 seconds
# compute timestamp due time
if @sessionRules.remaining_session_play_time?
@ -1111,7 +1111,7 @@ ConfigureTracksActions = @ConfigureTracksActions
#context.jamClient.applySubscriptionPolicy()
@subscriptionRules = sessionData.subscription
# TESTING:
#@subscriptionRules.remaining_month_play_time = 60 * 30 + 15 # 30 minutes and 15 seconds
#@subscriptionRules.remaining_month_play_time = 60 * 15 + 15 # 15 minutes and 15 seconds
if @subscriptionRules.remaining_month_play_time?
until_time = new Date()

View File

@ -1161,7 +1161,6 @@
context.JK.clientType = function () {
if (client_type) {
console.log("SHORT CUT", client_type);
return client_type;
}
else {

View File

@ -490,5 +490,10 @@ if defined?(Bundler)
{id: 'jamsubsilveryearly', name: 'Silver', price: 49.99, cycle: 'year'},
{id: 'jamsubgoldyearly', name: 'Gold', price:99.99, cycle: 'year'},
{id: 'jamsubplatinumyearly', name: 'Platinum', price:199.99, cycle: 'year'}]
# sandbox
# braintree: merchant id: 5v5rwm94m2vrfbms
# braintree: public key: 367d6dtdswvdr87s
# braintree: private key: 8309b8f9c669cfa940f617eb9cac56ea
end
end