From de5973e15f21fcaff0225834f1c09f295ad83368 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20S=C3=B3jko?= Date: Fri, 3 Feb 2023 06:41:00 +0100 Subject: [PATCH] fix(web): disable subscription sharing on demo --- .../src/Domain/Session/SessionsClientInterface.ts | 1 + .../snjs/lib/Services/Session/SessionManager.ts | 15 +++++++++++++++ .../SubscriptionSharing/SubscriptionSharing.tsx | 7 +++++-- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/packages/services/src/Domain/Session/SessionsClientInterface.ts b/packages/services/src/Domain/Session/SessionsClientInterface.ts index 08db150e1..8de0a24e9 100644 --- a/packages/services/src/Domain/Session/SessionsClientInterface.ts +++ b/packages/services/src/Domain/Session/SessionsClientInterface.ts @@ -11,6 +11,7 @@ export interface SessionsClientInterface { createDemoShareToken(): Promise populateSessionFromDemoShareToken(token: Base64String): Promise getUser(): User | undefined + isCurrentSessionReadOnly(): boolean | undefined register(email: string, password: string, ephemeral: boolean): Promise signIn( email: string, diff --git a/packages/snjs/lib/Services/Session/SessionManager.ts b/packages/snjs/lib/Services/Session/SessionManager.ts index 5a96a4bd3..e5454acb5 100644 --- a/packages/snjs/lib/Services/Session/SessionManager.ts +++ b/packages/snjs/lib/Services/Session/SessionManager.ts @@ -77,6 +77,7 @@ export class SNSessionManager { private user?: Responses.User private isSessionRenewChallengePresented = false + private session?: Session | LegacySession constructor( private diskStorageService: DiskStorageService, @@ -149,6 +150,8 @@ export class SNSessionManager } private setSession(session: Session | LegacySession, persist = true): void { + this.session = session + if (session instanceof Session) { this.httpService.setSession(session) } @@ -170,6 +173,18 @@ export class SNSessionManager return this.user } + isCurrentSessionReadOnly(): boolean | undefined { + if (this.session === undefined) { + return undefined + } + + if (this.session instanceof LegacySession) { + return false + } + + return this.session.isReadOnly() + } + public getSureUser() { return this.user as Responses.User } diff --git a/packages/web/src/javascripts/Components/Preferences/Panes/Account/SubscriptionSharing/SubscriptionSharing.tsx b/packages/web/src/javascripts/Components/Preferences/Panes/Account/SubscriptionSharing/SubscriptionSharing.tsx index 679f7b5fc..8aa8cfb84 100644 --- a/packages/web/src/javascripts/Components/Preferences/Panes/Account/SubscriptionSharing/SubscriptionSharing.tsx +++ b/packages/web/src/javascripts/Components/Preferences/Panes/Account/SubscriptionSharing/SubscriptionSharing.tsx @@ -1,4 +1,4 @@ -import { FeatureStatus, FeatureIdentifier } from '@standardnotes/snjs' +import { FeatureStatus, FeatureIdentifier, SessionsClientInterface } from '@standardnotes/snjs' import { observer } from 'mobx-react-lite' import { FunctionComponent, useState } from 'react' @@ -26,8 +26,11 @@ const SubscriptionSharing: FunctionComponent = ({ application, viewContro const subscriptionState = viewControllerManager.subscriptionController + const isReadOnlySession = application.sessions.isCurrentSessionReadOnly() + const isSubscriptionSharingFeatureAvailable = - application.features.getFeatureStatus(FeatureIdentifier.SubscriptionSharing) === FeatureStatus.Entitled + application.features.getFeatureStatus(FeatureIdentifier.SubscriptionSharing) === FeatureStatus.Entitled && + !isReadOnlySession const closeInviteDialog = () => setIsInviteDialogOpen(false)