fix: correctly refresh cta banner

This commit is contained in:
Mo
2022-11-03 06:35:06 -05:00
parent dc4530b2f3
commit 305ffdf984
4 changed files with 24 additions and 5 deletions

View File

@@ -9,7 +9,7 @@ import {
SubscriptionClientInterface,
Uuid,
} from '@standardnotes/snjs'
import { action, computed, makeObservable, observable } from 'mobx'
import { action, computed, makeObservable, observable, runInAction } from 'mobx'
import { WebApplication } from '../../Application/Application'
import { AbstractViewController } from '../Abstract/AbstractViewController'
import { AvailableSubscriptions } from './AvailableSubscriptionsType'
@@ -21,6 +21,8 @@ export class SubscriptionController extends AbstractViewController {
userSubscription: Subscription | undefined = undefined
availableSubscriptions: AvailableSubscriptions | undefined = undefined
subscriptionInvitations: Invitation[] | undefined = undefined
hideSubscriptionMarketing: boolean
hasAccount: boolean
override deinit() {
super.deinit()
@@ -37,11 +39,15 @@ export class SubscriptionController extends AbstractViewController {
private subscriptionManager: SubscriptionClientInterface,
) {
super(application, eventBus)
this.hideSubscriptionMarketing = application.hideSubscriptionMarketing
this.hasAccount = application.hasAccount()
makeObservable(this, {
userSubscription: observable,
availableSubscriptions: observable,
subscriptionInvitations: observable,
hideSubscriptionMarketing: observable,
hasAccount: observable,
userSubscriptionName: computed,
userSubscriptionExpirationDate: computed,
@@ -61,6 +67,9 @@ export class SubscriptionController extends AbstractViewController {
this.getSubscriptionInfo().catch(console.error)
this.reloadSubscriptionInvitations().catch(console.error)
}
runInAction(() => {
this.hasAccount = application.hasAccount()
})
}, ApplicationEvent.Launched),
)
@@ -68,6 +77,9 @@ export class SubscriptionController extends AbstractViewController {
application.addEventObserver(async () => {
this.getSubscriptionInfo().catch(console.error)
this.reloadSubscriptionInvitations().catch(console.error)
runInAction(() => {
this.hasAccount = application.hasAccount()
})
}, ApplicationEvent.SignedIn),
)