feat(web): add accepting subscription invites from UI
This commit is contained in:
@@ -1,5 +1,11 @@
|
||||
import { RouteServiceInterface, RouteType } from '@standardnotes/ui-services'
|
||||
import { ApplicationEvent, SessionsClientInterface, SyncClientInterface } from '@standardnotes/snjs'
|
||||
import { RootQueryParam, RouteParserInterface, RouteServiceInterface, RouteType, ToastServiceInterface } from '@standardnotes/ui-services'
|
||||
import {
|
||||
ApplicationEvent,
|
||||
SessionsClientInterface,
|
||||
SubscriptionClientInterface,
|
||||
SyncClientInterface,
|
||||
} from '@standardnotes/snjs'
|
||||
import { ToastType } from '@standardnotes/toast'
|
||||
|
||||
import { PurchaseFlowController } from '@/Controllers/PurchaseFlow/PurchaseFlowController'
|
||||
import { AccountMenuController } from '@/Controllers/AccountMenu/AccountMenuController'
|
||||
@@ -18,6 +24,8 @@ export class ApplicationEventObserver implements EventObserverInterface {
|
||||
private syncStatusController: SyncStatusController,
|
||||
private syncClient: SyncClientInterface,
|
||||
private sessionManager: SessionsClientInterface,
|
||||
private subscriptionManager: SubscriptionClientInterface,
|
||||
private toastService: ToastServiceInterface,
|
||||
) {}
|
||||
|
||||
async handle(event: ApplicationEvent): Promise<void> {
|
||||
@@ -33,8 +41,7 @@ export class ApplicationEventObserver implements EventObserverInterface {
|
||||
case RouteType.Settings: {
|
||||
const user = this.sessionManager.getUser()
|
||||
if (user === undefined) {
|
||||
this.accountMenuController.setShow(true)
|
||||
this.accountMenuController.setCurrentPane(AccountMenuPane.SignIn)
|
||||
this.promptUserSignIn()
|
||||
|
||||
break
|
||||
}
|
||||
@@ -43,6 +50,17 @@ export class ApplicationEventObserver implements EventObserverInterface {
|
||||
this.preferencesController.setCurrentPane(route.settingsParams.panel)
|
||||
break
|
||||
}
|
||||
case RouteType.AcceptSubscriptionInvite: {
|
||||
const user = this.sessionManager.getUser()
|
||||
if (user === undefined) {
|
||||
this.promptUserSignIn()
|
||||
|
||||
break
|
||||
}
|
||||
await this.acceptSubscriptionInvitation(route)
|
||||
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
break
|
||||
@@ -54,6 +72,10 @@ export class ApplicationEventObserver implements EventObserverInterface {
|
||||
this.preferencesController.openPreferences()
|
||||
this.preferencesController.setCurrentPane(route.settingsParams.panel)
|
||||
|
||||
break
|
||||
case RouteType.AcceptSubscriptionInvite:
|
||||
await this.acceptSubscriptionInvitation(route)
|
||||
|
||||
break
|
||||
}
|
||||
}
|
||||
@@ -63,4 +85,20 @@ export class ApplicationEventObserver implements EventObserverInterface {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
private promptUserSignIn(): void {
|
||||
this.accountMenuController.setShow(true)
|
||||
this.accountMenuController.setCurrentPane(AccountMenuPane.SignIn)
|
||||
}
|
||||
|
||||
private async acceptSubscriptionInvitation(route: RouteParserInterface): Promise<void> {
|
||||
const acceptResult = await this.subscriptionManager.acceptInvitation(route.subscriptionInviteParams.inviteUuid)
|
||||
|
||||
const toastType = acceptResult.success ? ToastType.Success : ToastType.Error
|
||||
const toastMessage = acceptResult.success ? 'Successfully joined a shared subscription' : acceptResult.message
|
||||
|
||||
this.toastService.showToast(toastType, toastMessage)
|
||||
|
||||
this.routeService.removeQueryParameterFromURL(RootQueryParam.AcceptSubscriptionInvite)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user