feat: add sending user requests from UI (#1927)
* feat: add sending user requests from UI * fix(web): view controller manager user client references
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
import { UserRequestType } from '@standardnotes/common'
|
||||
|
||||
export type UserRequestParams = {
|
||||
requestType: UserRequestType
|
||||
}
|
||||
@@ -3,4 +3,5 @@ export enum RootQueryParam {
|
||||
Settings = 'settings',
|
||||
DemoToken = 'demo-token',
|
||||
AcceptSubscriptionInvite = 'accept-subscription-invite',
|
||||
UserRequest = 'user-request',
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import { UserRequestType } from '@standardnotes/common'
|
||||
|
||||
import { RouteParser } from './RouteParser'
|
||||
import { RouteType } from './RouteType'
|
||||
|
||||
@@ -56,4 +58,12 @@ describe('route parser', () => {
|
||||
expect(parser.type).toEqual(RouteType.AcceptSubscriptionInvite)
|
||||
expect(parser.subscriptionInviteParams.inviteUuid).toEqual('1-2-3')
|
||||
})
|
||||
|
||||
it('routes to user request', () => {
|
||||
const url = 'https://app.standardnotes.com/?user-request=exit-discount'
|
||||
const parser = new RouteParser(url)
|
||||
|
||||
expect(parser.type).toEqual(RouteType.UserRequest)
|
||||
expect(parser.userRequestParams.requestType).toEqual(UserRequestType.ExitDiscount)
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import { Uuid } from '@standardnotes/common'
|
||||
import { UserRequestType, Uuid } from '@standardnotes/common'
|
||||
import { PreferenceId } from './../Preferences/PreferenceId'
|
||||
import { DemoParams } from './Params/DemoParams'
|
||||
import { OnboardingParams } from './Params/OnboardingParams'
|
||||
import { PurchaseParams } from './Params/PurchaseParams'
|
||||
import { SettingsParams } from './Params/SettingsParams'
|
||||
import { SubscriptionInviteParams } from './Params/SubscriptionInviteParams'
|
||||
import { UserRequestParams } from './Params/UserRequestParams'
|
||||
|
||||
import { RootQueryParam } from './RootQueryParam'
|
||||
import { RootRoutes } from './RootRoutes'
|
||||
@@ -28,6 +29,14 @@ export class RouteParser implements RouteParserInterface {
|
||||
return this.parsedType
|
||||
}
|
||||
|
||||
get userRequestParams(): UserRequestParams {
|
||||
this.checkForProperRouteType(RouteType.UserRequest)
|
||||
|
||||
return {
|
||||
requestType: this.searchParams.get(RootQueryParam.UserRequest) as UserRequestType,
|
||||
}
|
||||
}
|
||||
|
||||
get subscriptionInviteParams(): SubscriptionInviteParams {
|
||||
this.checkForProperRouteType(RouteType.AcceptSubscriptionInvite)
|
||||
|
||||
@@ -89,6 +98,7 @@ export class RouteParser implements RouteParserInterface {
|
||||
[RootQueryParam.Settings, RouteType.Settings],
|
||||
[RootQueryParam.DemoToken, RouteType.Demo],
|
||||
[RootQueryParam.AcceptSubscriptionInvite, RouteType.AcceptSubscriptionInvite],
|
||||
[RootQueryParam.UserRequest, RouteType.UserRequest],
|
||||
])
|
||||
|
||||
for (const rootQueryParam of rootQueryParametersMap.keys()) {
|
||||
|
||||
@@ -3,6 +3,7 @@ import { OnboardingParams } from './Params/OnboardingParams'
|
||||
import { PurchaseParams } from './Params/PurchaseParams'
|
||||
import { SettingsParams } from './Params/SettingsParams'
|
||||
import { SubscriptionInviteParams } from './Params/SubscriptionInviteParams'
|
||||
import { UserRequestParams } from './Params/UserRequestParams'
|
||||
import { RouteType } from './RouteType'
|
||||
|
||||
export interface RouteParserInterface {
|
||||
@@ -11,5 +12,6 @@ export interface RouteParserInterface {
|
||||
get purchaseParams(): PurchaseParams
|
||||
get onboardingParams(): OnboardingParams
|
||||
get subscriptionInviteParams(): SubscriptionInviteParams
|
||||
get userRequestParams(): UserRequestParams
|
||||
get type(): RouteType
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ export enum RouteType {
|
||||
Settings = 'settings',
|
||||
Purchase = 'purchase',
|
||||
AcceptSubscriptionInvite = 'accept-subscription-invite',
|
||||
UserRequest = 'user-request',
|
||||
Demo = 'demo',
|
||||
None = 'none',
|
||||
}
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
import { addToast, ToastType } from '@standardnotes/toast'
|
||||
import { addToast, dismissToast, ToastType } from '@standardnotes/toast'
|
||||
|
||||
import { ToastServiceInterface } from './ToastServiceInterface'
|
||||
|
||||
export class ToastService implements ToastServiceInterface {
|
||||
showToast(type: ToastType, message: string): void {
|
||||
addToast({
|
||||
hideToast(toastId: string): void {
|
||||
dismissToast(toastId)
|
||||
}
|
||||
|
||||
showToast(type: ToastType, message: string): string {
|
||||
return addToast({
|
||||
type: type,
|
||||
message,
|
||||
})
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { ToastType } from '@standardnotes/toast'
|
||||
|
||||
export interface ToastServiceInterface {
|
||||
showToast(type: ToastType, message: string): void
|
||||
showToast(type: ToastType, message: string): string
|
||||
hideToast(toastId: string): void
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ export * from './Route/Params/OnboardingParams'
|
||||
export * from './Route/Params/PurchaseParams'
|
||||
export * from './Route/Params/SettingsParams'
|
||||
export * from './Route/Params/SubscriptionInviteParams'
|
||||
export * from './Route/Params/UserRequestParams'
|
||||
export * from './Route/RootQueryParam'
|
||||
export * from './Route/RouteParser'
|
||||
export * from './Route/RouteParserInterface'
|
||||
|
||||
Reference in New Issue
Block a user