From d519aca685b32f4b6f7079ba9562ecaf1a18aecb Mon Sep 17 00:00:00 2001 From: Mo Date: Sun, 13 Nov 2022 09:28:16 -0600 Subject: [PATCH] feat: iap (#1996) --- ...e-iap-npm-12.4.4-a063846c19-f5c71ba006.zip | Bin 0 -> 221129 bytes .../Subscription/SubscriptionApiOperations.ts | 1 + .../Subscription/SubscriptionApiService.ts | 34 ++++++-- .../SubscriptionApiServiceInterface.ts | 3 + .../api/src/Domain/Http/HttpService.spec.ts | 6 +- packages/api/src/Domain/Http/HttpService.ts | 2 +- .../AppleIAPConfirmRequestParams.ts | 7 ++ packages/api/src/Domain/Request/index.ts | 1 + .../Subscription/AppleIAPConfirmResponse.ts | 9 ++ .../AppleIAPConfirmResponseBody.ts | 1 + packages/api/src/Domain/Response/index.ts | 2 + .../src/Domain/Server/Subscription/Paths.ts | 5 ++ .../Server/Subscription/SubscriptionServer.ts | 8 ++ .../SubscriptionServerInterface.ts | 3 + packages/mobile/ios/Podfile.lock | 6 ++ .../StandardNotes.xcodeproj/project.pbxproj | 4 + packages/mobile/package.json | 1 + packages/mobile/src/Lib/Interface.ts | 9 +- packages/mobile/src/Lib/Logging.ts | 18 ++++ packages/mobile/src/PurchaseManager.ts | 80 ++++++++++++++++++ .../Domain/Device/MobileDeviceInterface.ts | 3 + .../src/Domain/Event/ApplicationEvent.ts | 1 + .../src/Domain/Feature/FeaturesEvent.ts | 1 + .../Domain/Subscription/AppleIAPProductId.ts | 4 + .../Domain/Subscription/AppleIAPReceipt.ts | 8 ++ .../SubscriptionClientInterface.ts | 5 ++ .../Subscription/SubscriptionManager.ts | 21 +++++ packages/services/src/Domain/index.ts | 2 + packages/snjs/lib/Application/Application.ts | 20 ++++- packages/snjs/lib/Services/Api/ApiService.ts | 4 +- .../Services/Features/FeaturesService.spec.ts | 44 +++++++++- .../lib/Services/Features/FeaturesService.ts | 27 ++++-- packages/styles/src/Alert/Alert.ts | 6 +- .../javascripts/Application/Application.ts | 4 - .../ApplicationView/ApplicationView.tsx | 2 +- .../Header/DisplayOptionsMenu.tsx | 18 ++-- .../Components/Footer/UpgradeNow.tsx | 14 +-- .../Account/Subscription/NoSubscription.tsx | 19 ++--- .../SubscriptionSharing/NoProSubscription.tsx | 19 ++--- .../PremiumFeatureModalType.tsx | 4 + .../PremiumFeaturesModal.tsx | 75 +++++++++++----- .../PurchaseFlow/Panes/CreateAccount.tsx | 30 +++---- .../Components/PurchaseFlow/Panes/SignIn.tsx | 9 +- .../Controllers/FeaturesController.ts | 19 ++++- .../PurchaseFlow/PurchaseFlowController.ts | 57 ++++++++++++- .../Subscription/SubscriptionController.ts | 3 - .../src/javascripts/Hooks/usePremiumModal.tsx | 29 +++---- packages/web/src/javascripts/Logging.ts | 4 +- yarn.lock | 11 +++ 49 files changed, 512 insertions(+), 151 deletions(-) create mode 100644 .yarn/cache/react-native-iap-npm-12.4.4-a063846c19-f5c71ba006.zip create mode 100644 packages/api/src/Domain/Request/Subscription/AppleIAPConfirmRequestParams.ts create mode 100644 packages/api/src/Domain/Response/Subscription/AppleIAPConfirmResponse.ts create mode 100644 packages/api/src/Domain/Response/Subscription/AppleIAPConfirmResponseBody.ts create mode 100644 packages/mobile/src/Lib/Logging.ts create mode 100644 packages/mobile/src/PurchaseManager.ts create mode 100644 packages/services/src/Domain/Subscription/AppleIAPProductId.ts create mode 100644 packages/services/src/Domain/Subscription/AppleIAPReceipt.ts create mode 100644 packages/web/src/javascripts/Components/PremiumFeaturesModal/PremiumFeatureModalType.tsx diff --git a/.yarn/cache/react-native-iap-npm-12.4.4-a063846c19-f5c71ba006.zip b/.yarn/cache/react-native-iap-npm-12.4.4-a063846c19-f5c71ba006.zip new file mode 100644 index 0000000000000000000000000000000000000000..b0dabe0bdf2fb2d336eec213d457e9d2412f864f GIT binary patch literal 221129 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 z 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

Q#Y|%Z5{6fheK_joSP2gOm}s(mB3@9 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 literal 0 HcmV?d00001 diff --git a/packages/api/src/Domain/Client/Subscription/SubscriptionApiOperations.ts b/packages/api/src/Domain/Client/Subscription/SubscriptionApiOperations.ts index 5ec3c1ffe..4495f5595 100644 --- a/packages/api/src/Domain/Client/Subscription/SubscriptionApiOperations.ts +++ b/packages/api/src/Domain/Client/Subscription/SubscriptionApiOperations.ts @@ -3,4 +3,5 @@ export enum SubscriptionApiOperations { CancelingInvite, ListingInvites, AcceptingInvite, + ConfirmAppleIAP, } diff --git a/packages/api/src/Domain/Client/Subscription/SubscriptionApiService.ts b/packages/api/src/Domain/Client/Subscription/SubscriptionApiService.ts index 4a71cec1e..2ab8d6edb 100644 --- a/packages/api/src/Domain/Client/Subscription/SubscriptionApiService.ts +++ b/packages/api/src/Domain/Client/Subscription/SubscriptionApiService.ts @@ -11,6 +11,8 @@ import { SubscriptionInviteAcceptResponse } from '../../Response/Subscription/Su import { SubscriptionApiServiceInterface } from './SubscriptionApiServiceInterface' import { SubscriptionApiOperations } from './SubscriptionApiOperations' import { Uuid } from '@standardnotes/common' +import { AppleIAPConfirmResponse } from './../../Response/Subscription/AppleIAPConfirmResponse' +import { AppleIAPConfirmRequestParams } from '../../Request' export class SubscriptionApiService implements SubscriptionApiServiceInterface { private operationsInProgress: Map @@ -31,11 +33,11 @@ export class SubscriptionApiService implements SubscriptionApiServiceInterface { [ApiEndpointParam.ApiVersion]: ApiVersion.v0, }) - this.operationsInProgress.set(SubscriptionApiOperations.ListingInvites, false) - return response } catch (error) { throw new ApiCallError(ErrorMessage.GenericFail) + } finally { + this.operationsInProgress.set(SubscriptionApiOperations.ListingInvites, false) } } @@ -52,11 +54,11 @@ export class SubscriptionApiService implements SubscriptionApiServiceInterface { inviteUuid, }) - this.operationsInProgress.set(SubscriptionApiOperations.CancelingInvite, false) - return response } catch (error) { throw new ApiCallError(ErrorMessage.GenericFail) + } finally { + this.operationsInProgress.set(SubscriptionApiOperations.CancelingInvite, false) } } @@ -73,11 +75,11 @@ export class SubscriptionApiService implements SubscriptionApiServiceInterface { identifier: inviteeEmail, }) - this.operationsInProgress.set(SubscriptionApiOperations.Inviting, false) - return response } catch (error) { throw new ApiCallError(ErrorMessage.GenericFail) + } finally { + this.operationsInProgress.set(SubscriptionApiOperations.Inviting, false) } } @@ -93,11 +95,27 @@ export class SubscriptionApiService implements SubscriptionApiServiceInterface { inviteUuid, }) - this.operationsInProgress.set(SubscriptionApiOperations.AcceptingInvite, false) - return response } catch (error) { throw new ApiCallError(ErrorMessage.GenericFail) + } finally { + this.operationsInProgress.set(SubscriptionApiOperations.AcceptingInvite, false) + } + } + + async confirmAppleIAP(params: AppleIAPConfirmRequestParams): Promise { + if (this.operationsInProgress.get(SubscriptionApiOperations.ConfirmAppleIAP)) { + throw new ApiCallError(ErrorMessage.GenericInProgress) + } + + this.operationsInProgress.set(SubscriptionApiOperations.ConfirmAppleIAP, true) + + try { + const response = await this.subscriptionServer.confirmAppleIAP(params) + + return response + } finally { + this.operationsInProgress.set(SubscriptionApiOperations.ConfirmAppleIAP, false) } } } diff --git a/packages/api/src/Domain/Client/Subscription/SubscriptionApiServiceInterface.ts b/packages/api/src/Domain/Client/Subscription/SubscriptionApiServiceInterface.ts index e3e14875d..bfb76bea1 100644 --- a/packages/api/src/Domain/Client/Subscription/SubscriptionApiServiceInterface.ts +++ b/packages/api/src/Domain/Client/Subscription/SubscriptionApiServiceInterface.ts @@ -1,5 +1,7 @@ import { Uuid } from '@standardnotes/common' +import { AppleIAPConfirmResponse } from './../../Response/Subscription/AppleIAPConfirmResponse' +import { AppleIAPConfirmRequestParams } from '../../Request' import { SubscriptionInviteAcceptResponse } from '../../Response/Subscription/SubscriptionInviteAcceptResponse' import { SubscriptionInviteCancelResponse } from '../../Response/Subscription/SubscriptionInviteCancelResponse' import { SubscriptionInviteListResponse } from '../../Response/Subscription/SubscriptionInviteListResponse' @@ -10,4 +12,5 @@ export interface SubscriptionApiServiceInterface { listInvites(): Promise cancelInvite(inviteUuid: Uuid): Promise acceptInvite(inviteUuid: Uuid): Promise + confirmAppleIAP(params: AppleIAPConfirmRequestParams): Promise } diff --git a/packages/api/src/Domain/Http/HttpService.spec.ts b/packages/api/src/Domain/Http/HttpService.spec.ts index 16ca967b8..9d8152f66 100644 --- a/packages/api/src/Domain/Http/HttpService.spec.ts +++ b/packages/api/src/Domain/Http/HttpService.spec.ts @@ -10,7 +10,11 @@ describe('HttpService', () => { const host = 'http://bar' let updateMetaCallback: (meta: HttpResponseMeta) => void - const createService = () => new HttpService(environment, appVersion, snjsVersion, host, updateMetaCallback) + const createService = () => { + const service = new HttpService(environment, appVersion, snjsVersion, updateMetaCallback) + service.setHost(host) + return service + } beforeEach(() => { updateMetaCallback = jest.fn() diff --git a/packages/api/src/Domain/Http/HttpService.ts b/packages/api/src/Domain/Http/HttpService.ts index 6a413978e..effa634c8 100644 --- a/packages/api/src/Domain/Http/HttpService.ts +++ b/packages/api/src/Domain/Http/HttpService.ts @@ -14,12 +14,12 @@ import { HttpErrorResponseBody } from './HttpErrorResponseBody' export class HttpService implements HttpServiceInterface { private authorizationToken?: string private __latencySimulatorMs?: number + private host!: string constructor( private environment: Environment, private appVersion: string, private snjsVersion: string, - private host: string, private updateMetaCallback: (meta: HttpResponseMeta) => void, ) {} diff --git a/packages/api/src/Domain/Request/Subscription/AppleIAPConfirmRequestParams.ts b/packages/api/src/Domain/Request/Subscription/AppleIAPConfirmRequestParams.ts new file mode 100644 index 000000000..b9645b1b1 --- /dev/null +++ b/packages/api/src/Domain/Request/Subscription/AppleIAPConfirmRequestParams.ts @@ -0,0 +1,7 @@ +export type AppleIAPConfirmRequestParams = { + productId: string + transactionId: string + transactionDate: string + transactionReceipt: string + subscription_token: string +} diff --git a/packages/api/src/Domain/Request/index.ts b/packages/api/src/Domain/Request/index.ts index 7b4fe6eb6..cc5c47220 100644 --- a/packages/api/src/Domain/Request/index.ts +++ b/packages/api/src/Domain/Request/index.ts @@ -1,4 +1,5 @@ export * from './ApiEndpointParam' +export * from './Subscription/AppleIAPConfirmRequestParams' export * from './Subscription/SubscriptionInviteAcceptRequestParams' export * from './Subscription/SubscriptionInviteCancelRequestParams' export * from './Subscription/SubscriptionInviteDeclineRequestParams' diff --git a/packages/api/src/Domain/Response/Subscription/AppleIAPConfirmResponse.ts b/packages/api/src/Domain/Response/Subscription/AppleIAPConfirmResponse.ts new file mode 100644 index 000000000..39a23f745 --- /dev/null +++ b/packages/api/src/Domain/Response/Subscription/AppleIAPConfirmResponse.ts @@ -0,0 +1,9 @@ +import { Either } from '@standardnotes/common' + +import { HttpErrorResponseBody } from '../../Http/HttpErrorResponseBody' +import { HttpResponse } from '../../Http/HttpResponse' +import { AppleIAPConfirmResponseBody } from './AppleIAPConfirmResponseBody' + +export interface AppleIAPConfirmResponse extends HttpResponse { + data: Either +} diff --git a/packages/api/src/Domain/Response/Subscription/AppleIAPConfirmResponseBody.ts b/packages/api/src/Domain/Response/Subscription/AppleIAPConfirmResponseBody.ts new file mode 100644 index 000000000..58b07399e --- /dev/null +++ b/packages/api/src/Domain/Response/Subscription/AppleIAPConfirmResponseBody.ts @@ -0,0 +1 @@ +export type AppleIAPConfirmResponseBody = { success: true } | { success: false; message: string } diff --git a/packages/api/src/Domain/Response/index.ts b/packages/api/src/Domain/Response/index.ts index b17f58901..96d61dc6f 100644 --- a/packages/api/src/Domain/Response/index.ts +++ b/packages/api/src/Domain/Response/index.ts @@ -1,3 +1,5 @@ +export * from './Subscription/AppleIAPConfirmResponse' +export * from './Subscription/AppleIAPConfirmResponseBody' export * from './Subscription/SubscriptionInviteAcceptResponse' export * from './Subscription/SubscriptionInviteAcceptResponseBody' export * from './Subscription/SubscriptionInviteCancelResponse' diff --git a/packages/api/src/Domain/Server/Subscription/Paths.ts b/packages/api/src/Domain/Server/Subscription/Paths.ts index 720fc3c3c..73cbca6cf 100644 --- a/packages/api/src/Domain/Server/Subscription/Paths.ts +++ b/packages/api/src/Domain/Server/Subscription/Paths.ts @@ -8,8 +8,13 @@ const SharingPaths = { listInvites: '/v1/subscription-invites', } +const ApplePaths = { + confirmAppleIAP: '/v1/subscriptions/apple_iap_confirm', +} + export const Paths = { v1: { ...SharingPaths, + ...ApplePaths, }, } diff --git a/packages/api/src/Domain/Server/Subscription/SubscriptionServer.ts b/packages/api/src/Domain/Server/Subscription/SubscriptionServer.ts index 23abcf5d7..92b85cf83 100644 --- a/packages/api/src/Domain/Server/Subscription/SubscriptionServer.ts +++ b/packages/api/src/Domain/Server/Subscription/SubscriptionServer.ts @@ -1,4 +1,6 @@ +import { AppleIAPConfirmResponse } from './../../Response/Subscription/AppleIAPConfirmResponse' import { HttpServiceInterface } from '../../Http/HttpServiceInterface' +import { AppleIAPConfirmRequestParams } from '../../Request' import { SubscriptionInviteAcceptRequestParams } from '../../Request/Subscription/SubscriptionInviteAcceptRequestParams' import { SubscriptionInviteCancelRequestParams } from '../../Request/Subscription/SubscriptionInviteCancelRequestParams' import { SubscriptionInviteDeclineRequestParams } from '../../Request/Subscription/SubscriptionInviteDeclineRequestParams' @@ -45,4 +47,10 @@ export class SubscriptionServer implements SubscriptionServerInterface { return response as SubscriptionInviteResponse } + + async confirmAppleIAP(params: AppleIAPConfirmRequestParams): Promise { + const response = await this.httpService.post(Paths.v1.confirmAppleIAP, params) + + return response as AppleIAPConfirmResponse + } } diff --git a/packages/api/src/Domain/Server/Subscription/SubscriptionServerInterface.ts b/packages/api/src/Domain/Server/Subscription/SubscriptionServerInterface.ts index c7c8a8359..48bba2ee8 100644 --- a/packages/api/src/Domain/Server/Subscription/SubscriptionServerInterface.ts +++ b/packages/api/src/Domain/Server/Subscription/SubscriptionServerInterface.ts @@ -1,3 +1,5 @@ +import { AppleIAPConfirmResponse } from './../../Response/Subscription/AppleIAPConfirmResponse' +import { AppleIAPConfirmRequestParams } from './../../Request/Subscription/AppleIAPConfirmRequestParams' import { SubscriptionInviteAcceptRequestParams } from '../../Request/Subscription/SubscriptionInviteAcceptRequestParams' import { SubscriptionInviteCancelRequestParams } from '../../Request/Subscription/SubscriptionInviteCancelRequestParams' import { SubscriptionInviteDeclineRequestParams } from '../../Request/Subscription/SubscriptionInviteDeclineRequestParams' @@ -15,4 +17,5 @@ export interface SubscriptionServerInterface { declineInvite(params: SubscriptionInviteDeclineRequestParams): Promise cancelInvite(params: SubscriptionInviteCancelRequestParams): Promise listInvites(params: SubscriptionInviteListRequestParams): Promise + confirmAppleIAP(params: AppleIAPConfirmRequestParams): Promise } diff --git a/packages/mobile/ios/Podfile.lock b/packages/mobile/ios/Podfile.lock index 8015fea6f..758c2cd32 100644 --- a/packages/mobile/ios/Podfile.lock +++ b/packages/mobile/ios/Podfile.lock @@ -349,6 +349,8 @@ PODS: - React-Core - RNFS (2.20.0): - React-Core + - RNIap (12.4.4): + - React-Core - RNKeychain (8.0.0): - React-Core - RNPrivacySnapshot (1.0.0): @@ -422,6 +424,7 @@ DEPENDENCIES: - "RNCAsyncStorage (from `../node_modules/@react-native-community/async-storage`)" - RNFileViewer (from `../node_modules/react-native-file-viewer`) - RNFS (from `../node_modules/react-native-fs`) + - RNIap (from `../node_modules/react-native-iap`) - RNKeychain (from `../node_modules/react-native-keychain`) - RNPrivacySnapshot (from `../node_modules/react-native-privacy-snapshot`) - RNShare (from `../node_modules/react-native-share`) @@ -518,6 +521,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-file-viewer" RNFS: :path: "../node_modules/react-native-fs" + RNIap: + :path: "../node_modules/react-native-iap" RNKeychain: :path: "../node_modules/react-native-keychain" RNPrivacySnapshot: @@ -578,6 +583,7 @@ SPEC CHECKSUMS: RNCAsyncStorage: b03032fdbdb725bea0bd9e5ec5a7272865ae7398 RNFileViewer: ce7ca3ac370e18554d35d6355cffd7c30437c592 RNFS: 4ac0f0ea233904cb798630b3c077808c06931688 + RNIap: 3bcd6982cf99503339cf9243e4ba70a45ea2cf72 RNKeychain: 4f63aada75ebafd26f4bc2c670199461eab85d94 RNPrivacySnapshot: 8eaf571478a353f2e5184f5c803164f22428b023 RNShare: a5dc3b9c53ddc73e155b8cd9a94c70c91913c43c diff --git a/packages/mobile/ios/StandardNotes.xcodeproj/project.pbxproj b/packages/mobile/ios/StandardNotes.xcodeproj/project.pbxproj index 66de0a356..7f987140c 100644 --- a/packages/mobile/ios/StandardNotes.xcodeproj/project.pbxproj +++ b/packages/mobile/ios/StandardNotes.xcodeproj/project.pbxproj @@ -14,6 +14,7 @@ 1C2EEB3B45F4EB07AC795C77 /* (null) in Frameworks */ = {isa = PBXBuildFile; }; 33BB1B14071EBE5978EBF3A8 /* libPods-StandardNotes-StandardNotesTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 04FCB5A3A3387CA3CFC82AA3 /* libPods-StandardNotes-StandardNotesTests.a */; }; BC8DEA834BF198E8511F04FF /* libPods-StandardNotesDev.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 51F2D747BE02C2A1BCFEEFD1 /* libPods-StandardNotesDev.a */; }; + CD6592A9291EEFCC00C09DC6 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD6592A8291EEFCC00C09DC6 /* StoreKit.framework */; }; CD7D5ECA27800609005FE1BF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CD7D5EC927800608005FE1BF /* LaunchScreen.storyboard */; }; CD7D5ECF278015D2005FE1BF /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; CD7D5ED0278015D2005FE1BF /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; @@ -59,6 +60,7 @@ 66417CEB7622E77D89928FCA /* Pods-StandardNotes.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-StandardNotes.debug.xcconfig"; path = "Target Support Files/Pods-StandardNotes/Pods-StandardNotes.debug.xcconfig"; sourceTree = ""; }; 948EE90E15EA48C27577820B /* Pods-StandardNotes.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-StandardNotes.release.xcconfig"; path = "Target Support Files/Pods-StandardNotes/Pods-StandardNotes.release.xcconfig"; sourceTree = ""; }; A09B7794259DBFABFC4D05CE /* Pods-StandardNotesDev.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-StandardNotesDev.debug.xcconfig"; path = "Target Support Files/Pods-StandardNotesDev/Pods-StandardNotesDev.debug.xcconfig"; sourceTree = ""; }; + CD6592A8291EEFCC00C09DC6 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; }; CD7D5EC8278005B6005FE1BF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = StandardNotes/Info.plist; sourceTree = ""; }; CD7D5EC927800608005FE1BF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; CD7D5EDF278015D2005FE1BF /* StandardNotesDev.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = StandardNotesDev.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -86,6 +88,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + CD6592A9291EEFCC00C09DC6 /* StoreKit.framework in Frameworks */, 1C2EEB3B45F4EB07AC795C77 /* (null) in Frameworks */, DD3D1CE428EC1C8BA0C49211 /* libPods-StandardNotes.a in Frameworks */, ); @@ -153,6 +156,7 @@ 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { isa = PBXGroup; children = ( + CD6592A8291EEFCC00C09DC6 /* StoreKit.framework */, ED297162215061F000B7C4FE /* JavaScriptCore.framework */, 04FCB5A3A3387CA3CFC82AA3 /* libPods-StandardNotes-StandardNotesTests.a */, 51F2D747BE02C2A1BCFEEFD1 /* libPods-StandardNotesDev.a */, diff --git a/packages/mobile/package.json b/packages/mobile/package.json index 0622ff1c9..b956cf589 100644 --- a/packages/mobile/package.json +++ b/packages/mobile/package.json @@ -57,6 +57,7 @@ "react-native-fingerprint-scanner": "standardnotes/react-native-fingerprint-scanner#b55d1c0ca627a87a130f758603f12911fbac200f", "react-native-flag-secure-android": "standardnotes/react-native-flag-secure-android#cb08e74583c22a5d912842459b35ebbbb4bcd852", "react-native-fs": "^2.19.0", + "react-native-iap": "^12.4.4", "react-native-keychain": "standardnotes/react-native-keychain#d277d360494cbd02be4accb4a360772a8e0e97b6", "react-native-privacy-snapshot": "standardnotes/react-native-privacy-snapshot#653e904c90fc6f2b578da59138f2bfe5d7f942fe", "react-native-share": "^7.9.0", diff --git a/packages/mobile/src/Lib/Interface.ts b/packages/mobile/src/Lib/Interface.ts index 6e098653b..a8c19bbad 100644 --- a/packages/mobile/src/Lib/Interface.ts +++ b/packages/mobile/src/Lib/Interface.ts @@ -1,5 +1,6 @@ import AsyncStorage from '@react-native-community/async-storage' import SNReactNative from '@standardnotes/react-native-utils' +import { AppleIAPReceipt } from '@standardnotes/services/dist/Domain/Subscription/AppleIAPReceipt' import { ApplicationIdentifier, Environment, @@ -11,6 +12,7 @@ import { RawKeychainValue, removeFromArray, TransferPayload, + AppleIAPProductId, UuidString, } from '@standardnotes/snjs' import { ColorSchemeObserverService } from 'ColorSchemeObserverService' @@ -41,6 +43,7 @@ import Share from 'react-native-share' import { AndroidBackHandlerService } from '../AndroidBackHandlerService' import { AppStateObserverService } from './../AppStateObserverService' import Keychain from './Keychain' +import { PurchaseManager } from '../PurchaseManager' export type BiometricsType = 'Fingerprint' | 'Face ID' | 'Biometrics' | 'Touch ID' @@ -99,6 +102,10 @@ export class MobileDevice implements MobileDeviceInterface { private colorSchemeService?: ColorSchemeObserverService, ) {} + purchaseSubscriptionIAP(plan: AppleIAPProductId): Promise { + return PurchaseManager.getInstance().purchase(plan) + } + deinit() { this.stateObserverService?.deinit() ;(this.stateObserverService as unknown) = undefined @@ -108,7 +115,7 @@ export class MobileDevice implements MobileDeviceInterface { ;(this.colorSchemeService as unknown) = undefined } - consoleLog(...args: any[]): void { + consoleLog(...args: unknown[]): void { // eslint-disable-next-line no-console console.log(args) } diff --git a/packages/mobile/src/Lib/Logging.ts b/packages/mobile/src/Lib/Logging.ts new file mode 100644 index 000000000..d60044537 --- /dev/null +++ b/packages/mobile/src/Lib/Logging.ts @@ -0,0 +1,18 @@ +import { log as utilsLog } from '@standardnotes/snjs' + +export enum LoggingDomain { + AppleIAP, +} + +const LoggingStatus: Record = { + [LoggingDomain.AppleIAP]: true, +} + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export function log(domain: LoggingDomain, ...args: any[]): void { + if (!LoggingStatus[domain]) { + return + } + + utilsLog(LoggingDomain[domain], ...args) +} diff --git a/packages/mobile/src/PurchaseManager.ts b/packages/mobile/src/PurchaseManager.ts new file mode 100644 index 000000000..390b35f29 --- /dev/null +++ b/packages/mobile/src/PurchaseManager.ts @@ -0,0 +1,80 @@ +import { LoggingDomain, log } from './Lib/Logging' +import { EmitterSubscription } from 'react-native' +import { + initConnection, + endConnection, + purchaseErrorListener, + purchaseUpdatedListener, + type ProductPurchase, + type PurchaseError, + type SubscriptionPurchase, + finishTransaction, + requestSubscription, + getSubscriptions, +} from 'react-native-iap' +import { AppleIAPReceipt, AppleIAPProductId } from '@standardnotes/snjs' + +export class PurchaseManager { + private static instance: PurchaseManager + private listenerDisposer: EmitterSubscription + private errorDisposer: EmitterSubscription + + private constructor() { + this.listenerDisposer = purchaseUpdatedListener((purchase: SubscriptionPurchase | ProductPurchase) => { + log(LoggingDomain.AppleIAP, 'purchaseUpdatedListener', purchase) + const receipt = purchase.transactionReceipt + if (receipt) { + void finishTransaction({ purchase, isConsumable: false }) + } + }) + + this.errorDisposer = purchaseErrorListener((error: PurchaseError) => { + log(LoggingDomain.AppleIAP, 'purchaseErrorListener', error) + }) + } + + public static getInstance(): PurchaseManager { + if (!PurchaseManager.instance) { + PurchaseManager.instance = new PurchaseManager() + } + + return PurchaseManager.instance + } + + deinit() { + this.listenerDisposer.remove() + this.errorDisposer.remove() + void endConnection() + } + + async purchase(sku: AppleIAPProductId): Promise { + await initConnection() + + const subscriptions = await getSubscriptions({ + skus: [AppleIAPProductId.PlusPlanYearly, AppleIAPProductId.ProPlanYearly], + }) + + log(LoggingDomain.AppleIAP, 'Retrieved subscriptions', subscriptions) + + try { + const result = await requestSubscription({ sku, andDangerouslyFinishTransactionAutomaticallyIOS: true }) + + log(LoggingDomain.AppleIAP, 'Purchase result', result) + + if (result && result.transactionId && result.transactionDate) { + return { + transactionId: result.transactionId, + productId: result.productId as AppleIAPProductId, + transactionDate: String(result.transactionDate), + transactionReceipt: result.transactionReceipt, + } + } else { + log(LoggingDomain.AppleIAP, 'Purchase method returning undefined even though successful') + return undefined + } + } catch (error) { + log(LoggingDomain.AppleIAP, error) + return undefined + } + } +} diff --git a/packages/services/src/Domain/Device/MobileDeviceInterface.ts b/packages/services/src/Domain/Device/MobileDeviceInterface.ts index 36af893fc..d46efc75e 100644 --- a/packages/services/src/Domain/Device/MobileDeviceInterface.ts +++ b/packages/services/src/Domain/Device/MobileDeviceInterface.ts @@ -1,5 +1,7 @@ +import { AppleIAPProductId } from './../Subscription/AppleIAPProductId' import { DeviceInterface } from './DeviceInterface' import { Environment, Platform, RawKeychainValue } from '@standardnotes/models' +import { AppleIAPReceipt } from '../Subscription/AppleIAPReceipt' export interface MobileDeviceInterface extends DeviceInterface { environment: Environment.Mobile @@ -22,4 +24,5 @@ export interface MobileDeviceInterface extends DeviceInterface { isUrlComponentUrl(url: string): boolean getAppState(): Promise<'active' | 'background' | 'inactive' | 'unknown' | 'extension'> getColorScheme(): Promise<'light' | 'dark' | null | undefined> + purchaseSubscriptionIAP(plan: AppleIAPProductId): Promise } diff --git a/packages/services/src/Domain/Event/ApplicationEvent.ts b/packages/services/src/Domain/Event/ApplicationEvent.ts index 250b76806..df4d8d7b3 100644 --- a/packages/services/src/Domain/Event/ApplicationEvent.ts +++ b/packages/services/src/Domain/Event/ApplicationEvent.ts @@ -64,4 +64,5 @@ export enum ApplicationEvent { CompletedInitialSync = 30, BiometricsSoftLockEngaged = 31, BiometricsSoftLockDisengaged = 32, + DidPurchaseSubscription = 33, } diff --git a/packages/services/src/Domain/Feature/FeaturesEvent.ts b/packages/services/src/Domain/Feature/FeaturesEvent.ts index 75595699a..3c536a02b 100644 --- a/packages/services/src/Domain/Feature/FeaturesEvent.ts +++ b/packages/services/src/Domain/Feature/FeaturesEvent.ts @@ -1,4 +1,5 @@ export enum FeaturesEvent { UserRolesChanged = 'UserRolesChanged', FeaturesUpdated = 'FeaturesUpdated', + DidPurchaseSubscription = 'DidPurchaseSubscription', } diff --git a/packages/services/src/Domain/Subscription/AppleIAPProductId.ts b/packages/services/src/Domain/Subscription/AppleIAPProductId.ts new file mode 100644 index 000000000..61c9f80c6 --- /dev/null +++ b/packages/services/src/Domain/Subscription/AppleIAPProductId.ts @@ -0,0 +1,4 @@ +export enum AppleIAPProductId { + ProPlanYearly = 'pro_plan_yearly', + PlusPlanYearly = 'plus_plan_yearly', +} diff --git a/packages/services/src/Domain/Subscription/AppleIAPReceipt.ts b/packages/services/src/Domain/Subscription/AppleIAPReceipt.ts new file mode 100644 index 000000000..8e63726f3 --- /dev/null +++ b/packages/services/src/Domain/Subscription/AppleIAPReceipt.ts @@ -0,0 +1,8 @@ +import { AppleIAPProductId } from './AppleIAPProductId' + +export type AppleIAPReceipt = { + productId: AppleIAPProductId + transactionDate: string + transactionId: string + transactionReceipt: string +} diff --git a/packages/services/src/Domain/Subscription/SubscriptionClientInterface.ts b/packages/services/src/Domain/Subscription/SubscriptionClientInterface.ts index ce9df96d8..de20c323c 100644 --- a/packages/services/src/Domain/Subscription/SubscriptionClientInterface.ts +++ b/packages/services/src/Domain/Subscription/SubscriptionClientInterface.ts @@ -1,9 +1,14 @@ import { Uuid } from '@standardnotes/common' import { Invitation } from '@standardnotes/models' +import { AppleIAPReceipt } from './AppleIAPReceipt' export interface SubscriptionClientInterface { listSubscriptionInvitations(): Promise inviteToSubscription(inviteeEmail: string): Promise cancelInvitation(inviteUuid: Uuid): Promise acceptInvitation(inviteUuid: Uuid): Promise<{ success: true } | { success: false; message: string }> + confirmAppleIAP( + receipt: AppleIAPReceipt, + subscriptionToken: string, + ): Promise<{ success: true } | { success: false; message: string }> } diff --git a/packages/services/src/Domain/Subscription/SubscriptionManager.ts b/packages/services/src/Domain/Subscription/SubscriptionManager.ts index a98bc082b..0c08d213d 100644 --- a/packages/services/src/Domain/Subscription/SubscriptionManager.ts +++ b/packages/services/src/Domain/Subscription/SubscriptionManager.ts @@ -4,6 +4,7 @@ import { InternalEventBusInterface } from '../Internal/InternalEventBusInterface import { AbstractService } from '../Service/AbstractService' import { SubscriptionClientInterface } from './SubscriptionClientInterface' import { Uuid } from '@standardnotes/common' +import { AppleIAPReceipt } from './AppleIAPReceipt' export class SubscriptionManager extends AbstractService implements SubscriptionClientInterface { constructor( @@ -56,4 +57,24 @@ export class SubscriptionManager extends AbstractService implements Subscription return false } } + + async confirmAppleIAP( + params: AppleIAPReceipt, + subscriptionToken: string, + ): Promise<{ success: true } | { success: false; message: string }> { + try { + const result = await this.subscriptionApiService.confirmAppleIAP({ + ...params, + subscription_token: subscriptionToken, + }) + + if (result.data.error) { + return { success: false, message: result.data.error.message } + } + + return result.data + } catch (error) { + return { success: false, message: 'Could not confirm IAP.' } + } + } } diff --git a/packages/services/src/Domain/index.ts b/packages/services/src/Domain/index.ts index f40af8310..baefb8d05 100644 --- a/packages/services/src/Domain/index.ts +++ b/packages/services/src/Domain/index.ts @@ -76,6 +76,8 @@ export * from './Strings/InfoStrings' export * from './Strings/Messages' export * from './Subscription/SubscriptionClientInterface' export * from './Subscription/SubscriptionManager' +export * from './Subscription/AppleIAPProductId' +export * from './Subscription/AppleIAPReceipt' export * from './Sync/SyncMode' export * from './Sync/SyncOptions' export * from './Sync/SyncQueueStrategy' diff --git a/packages/snjs/lib/Application/Application.ts b/packages/snjs/lib/Application/Application.ts index 6d1a03aa1..f95169bb9 100644 --- a/packages/snjs/lib/Application/Application.ts +++ b/packages/snjs/lib/Application/Application.ts @@ -287,6 +287,10 @@ export class SNApplication implements ApplicationInterface, AppGroupManagedAppli return this.listedService } + public get alerts(): ExternalServices.AlertService { + return this.alertService + } + public computePrivateUsername(username: string): Promise { return ComputePrivateUsername(this.options.crypto, username) } @@ -367,8 +371,12 @@ export class SNApplication implements ApplicationInterface, AppGroupManagedAppli await this.handleStage(ExternalServices.ApplicationStage.StorageDecrypted_09) - this.apiService.loadHost() + const host = this.apiService.loadHost() + + this.httpService.setHost(host) + this.webSocketsService.loadWebSocketUrl() + await this.sessionManager.initializeFromDisk() this.settingsService.initializeFromDisk() @@ -594,6 +602,7 @@ export class SNApplication implements ApplicationInterface, AppGroupManagedAppli public async setCustomHost(host: string): Promise { await this.setHost(host) + this.webSocketsService.setWebSocketUrl(undefined) } @@ -1072,7 +1081,7 @@ export class SNApplication implements ApplicationInterface, AppGroupManagedAppli this.createProtocolService() this.diskStorageService.provideEncryptionProvider(this.protocolService) this.createChallengeService() - this.createHttpManager() + this.createLegacyHttpManager() this.createApiService() this.createHttpService() this.createUserServer() @@ -1238,6 +1247,10 @@ export class SNApplication implements ApplicationInterface, AppGroupManagedAppli void this.notifyEvent(ApplicationEvent.FeaturesUpdated) break } + case ExternalServices.FeaturesEvent.DidPurchaseSubscription: { + void this.notifyEvent(ApplicationEvent.DidPurchaseSubscription) + break + } default: { Utils.assertUnreachable(event) } @@ -1385,7 +1398,7 @@ export class SNApplication implements ApplicationInterface, AppGroupManagedAppli this.services.push(this.componentManagerService) } - private createHttpManager() { + private createLegacyHttpManager() { this.deprecatedHttpService = new InternalServices.SNHttpService( this.environment, this.options.appVersion, @@ -1399,7 +1412,6 @@ export class SNApplication implements ApplicationInterface, AppGroupManagedAppli this.environment, this.options.appVersion, SnjsVersion, - this.options.defaultHost, this.apiService.processMetaObject.bind(this.apiService), ) } diff --git a/packages/snjs/lib/Services/Api/ApiService.ts b/packages/snjs/lib/Services/Api/ApiService.ts index 6907bb60f..ecdbb9757 100644 --- a/packages/snjs/lib/Services/Api/ApiService.ts +++ b/packages/snjs/lib/Services/Api/ApiService.ts @@ -110,7 +110,7 @@ export class SNApiService this.invalidSessionObserver = observer } - public loadHost(): void { + public loadHost(): string { const storedValue = this.storageService.getValue(StorageKey.ServerHost) this.host = storedValue || @@ -120,6 +120,8 @@ export class SNApiService _default_sync_server?: string } )._default_sync_server as string) + + return this.host } public async setHost(host: string): Promise { diff --git a/packages/snjs/lib/Services/Features/FeaturesService.spec.ts b/packages/snjs/lib/Services/Features/FeaturesService.spec.ts index 364f61c49..ff5a3c30f 100644 --- a/packages/snjs/lib/Services/Features/FeaturesService.spec.ts +++ b/packages/snjs/lib/Services/Features/FeaturesService.spec.ts @@ -10,6 +10,7 @@ import { PureCryptoInterface } from '@standardnotes/sncrypto-common' import { convertTimestampToMilliseconds } from '@standardnotes/utils' import { AlertService, + FeaturesEvent, FeatureStatus, InternalEventBusInterface, StorageKey, @@ -203,6 +204,47 @@ describe('featuresService', () => { }) describe('updateRoles()', () => { + it('setRoles should notify event if roles changed', async () => { + storageService.getValue = jest.fn().mockReturnValue(roles) + const featuresService = createService() + featuresService.initializeFromDisk() + + const mock = (featuresService['notifyEvent'] = jest.fn()) + + const newRoles = [...roles, RoleName.PlusUser] + await featuresService.setRoles(newRoles) + + expect(mock.mock.calls[0][0]).toEqual(FeaturesEvent.UserRolesChanged) + }) + + it('should notify of subscription purchase', async () => { + storageService.getValue = jest.fn().mockReturnValue(roles) + const featuresService = createService() + featuresService.initializeFromDisk() + + const spy = jest.spyOn(featuresService, 'notifyEvent' as never) + + const newRoles = [...roles, RoleName.ProUser] + await featuresService.updateRolesAndFetchFeatures('123', newRoles) + + expect(spy.mock.calls[2][0]).toEqual(FeaturesEvent.DidPurchaseSubscription) + }) + + it('should not notify of subscription purchase on initial roles load after sign in', async () => { + storageService.getValue = jest.fn().mockReturnValue(roles) + const featuresService = createService() + featuresService.initializeFromDisk() + featuresService['roles'] = [] + + const spy = jest.spyOn(featuresService, 'notifyEvent' as never) + + const newRoles = [...roles, RoleName.ProUser] + await featuresService.updateRolesAndFetchFeatures('123', newRoles) + + const triggeredEvents = spy.mock.calls.map((call) => call[0]) + expect(triggeredEvents).not.toContain(FeaturesEvent.DidPurchaseSubscription) + }) + it('saves new roles to storage and fetches features if a role has been added', async () => { const newRoles = [...roles, RoleName.PlusUser] @@ -631,7 +673,7 @@ describe('featuresService', () => { await featuresService.updateRolesAndFetchFeatures('123', [RoleName.CoreUser, RoleName.PlusUser]) sessionManager.isSignedIntoFirstPartyServer = jest.fn().mockReturnValue(false) - featuresService.hasOnlineSubscription = jest.fn().mockReturnValue(false) + featuresService.rolesIncludePaidSubscription = jest.fn().mockReturnValue(false) featuresService['completedSuccessfulFeaturesRetrieval'] = true expect(featuresService.getFeatureStatus(FeatureIdentifier.MidnightTheme)).toBe(FeatureStatus.NoUserSubscription) diff --git a/packages/snjs/lib/Services/Features/FeaturesService.ts b/packages/snjs/lib/Services/Features/FeaturesService.ts index 07da4f38c..b85f1fb04 100644 --- a/packages/snjs/lib/Services/Features/FeaturesService.ts +++ b/packages/snjs/lib/Services/Features/FeaturesService.ts @@ -154,7 +154,7 @@ export class SNFeaturesService if (stage === ApplicationStage.FullSyncCompleted_13) { void this.addDarkTheme() - if (!this.hasOnlineSubscription()) { + if (!this.rolesIncludePaidSubscription()) { const offlineRepo = this.getOfflineRepo() if (offlineRepo) { void this.downloadOfflineFeatures(offlineRepo) @@ -355,8 +355,12 @@ export class SNFeaturesService } public async updateRolesAndFetchFeatures(userUuid: UuidString, roles: RoleName[]): Promise { + const previousRoles = this.roles + const userRolesChanged = this.haveRolesChanged(roles) + const isInitialLoadRolesChange = previousRoles.length === 0 && userRolesChanged + if (!userRolesChanged && !this.needsInitialFeaturesUpdate) { return } @@ -375,13 +379,23 @@ export class SNFeaturesService await this.didDownloadFeatures(features) } } + + if (userRolesChanged && !isInitialLoadRolesChange) { + if (this.rolesIncludePaidSubscription()) { + await this.notifyEvent(FeaturesEvent.DidPurchaseSubscription) + } + } } - private async setRoles(roles: RoleName[]): Promise { + async setRoles(roles: RoleName[]): Promise { + const rolesChanged = !arraysEqual(this.roles, roles) + this.roles = roles - if (!arraysEqual(this.roles, roles)) { + + if (rolesChanged) { void this.notifyEvent(FeaturesEvent.UserRolesChanged) } + this.storageService.setValue(StorageKey.UserRoles, this.roles) } @@ -434,14 +448,13 @@ export class SNFeaturesService return this.features.find((feature) => feature.identifier === featureId) } - hasOnlineSubscription(): boolean { - const roles = this.roles + rolesIncludePaidSubscription(): boolean { const unpaidRoles = [RoleName.CoreUser] - return roles.some((role) => !unpaidRoles.includes(role)) + return this.roles.some((role) => !unpaidRoles.includes(role)) } public hasPaidOnlineOrOfflineSubscription(): boolean { - return this.hasOnlineSubscription() || this.hasOfflineRepo() + return this.rolesIncludePaidSubscription() || this.hasOfflineRepo() } public rolesBySorting(roles: RoleName[]): RoleName[] { diff --git a/packages/styles/src/Alert/Alert.ts b/packages/styles/src/Alert/Alert.ts index fe8a54729..78b9a0d8b 100644 --- a/packages/styles/src/Alert/Alert.ts +++ b/packages/styles/src/Alert/Alert.ts @@ -23,7 +23,7 @@ export class SKAlert { buttonsString() { const genButton = function (buttonDesc: AlertButton, index: number) { return ` - ` @@ -57,8 +57,8 @@ export class SKAlert { buttonsTemplate = '' panelStyle = 'style="padding-bottom: 8px"' } - const titleTemplate = this.title ? `

${this.title}
` : '' - const messageTemplate = this.text ? `

${this.text}

` : '' + const titleTemplate = this.title ? `
${this.title}
` : '' + const messageTemplate = this.text ? `

${this.text}

` : '' const template = `
diff --git a/packages/web/src/javascripts/Application/Application.ts b/packages/web/src/javascripts/Application/Application.ts index 2dbb9c3db..7cde51a4f 100644 --- a/packages/web/src/javascripts/Application/Application.ts +++ b/packages/web/src/javascripts/Application/Application.ts @@ -204,10 +204,6 @@ export class WebApplication extends SNApplication implements WebApplicationInter return this.isNativeMobileWeb() && this.platform === Platform.Ios } - get hideSubscriptionMarketing() { - return this.isNativeIOS() - } - mobileDevice(): MobileDeviceInterface { if (!this.isNativeMobileWeb()) { throw Error('Attempting to access device as mobile device on non mobile platform') diff --git a/packages/web/src/javascripts/Components/ApplicationView/ApplicationView.tsx b/packages/web/src/javascripts/Components/ApplicationView/ApplicationView.tsx index ccad56b07..5b36f2275 100644 --- a/packages/web/src/javascripts/Components/ApplicationView/ApplicationView.tsx +++ b/packages/web/src/javascripts/Components/ApplicationView/ApplicationView.tsx @@ -199,7 +199,7 @@ const ApplicationView: FunctionComponent = ({ application, mainApplicatio - +
= ({ 'Create powerful workflows and organizational layouts with per-tag display preferences.'}

- {!application.hideSubscriptionMarketing && ( - - )} +
) diff --git a/packages/web/src/javascripts/Components/Footer/UpgradeNow.tsx b/packages/web/src/javascripts/Components/Footer/UpgradeNow.tsx index e49543dc5..2b6eb1803 100644 --- a/packages/web/src/javascripts/Components/Footer/UpgradeNow.tsx +++ b/packages/web/src/javascripts/Components/Footer/UpgradeNow.tsx @@ -2,7 +2,6 @@ import { WebApplication } from '@/Application/Application' import { FeaturesController } from '@/Controllers/FeaturesController' import { SubscriptionController } from '@/Controllers/Subscription/SubscriptionController' import { observer } from 'mobx-react-lite' -import { loadPurchaseFlowUrl } from '../PurchaseFlow/PurchaseFlowFunctions' type Props = { application: WebApplication @@ -14,22 +13,11 @@ const UpgradeNow = ({ application, featuresController, subscriptionContoller }: const shouldShowCTA = !featuresController.hasFolders const hasAccount = subscriptionContoller.hasAccount - if (hasAccount && subscriptionContoller.hideSubscriptionMarketing) { - return null - } - return shouldShowCTA ? (
diff --git a/packages/web/src/javascripts/Components/Preferences/Panes/Account/Subscription/NoSubscription.tsx b/packages/web/src/javascripts/Components/Preferences/Panes/Account/Subscription/NoSubscription.tsx index d38b7bc45..61642f917 100644 --- a/packages/web/src/javascripts/Components/Preferences/Panes/Account/Subscription/NoSubscription.tsx +++ b/packages/web/src/javascripts/Components/Preferences/Panes/Account/Subscription/NoSubscription.tsx @@ -2,7 +2,6 @@ import { FunctionComponent, useState } from 'react' import { LinkButton, Text } from '@/Components/Preferences/PreferencesComponents/Content' import Button from '@/Components/Button/Button' import { WebApplication } from '@/Application/Application' -import { loadPurchaseFlowUrl } from '@/Components/PurchaseFlow/PurchaseFlowFunctions' type Props = { application: WebApplication @@ -16,9 +15,7 @@ const NoSubscription: FunctionComponent = ({ application }) => { const errorMessage = 'There was an error when attempting to redirect you to the subscription page.' setIsLoadingPurchaseFlow(true) try { - if (!(await loadPurchaseFlowUrl(application))) { - setPurchaseFlowError(errorMessage) - } + application.openPurchaseFlow() } catch (e) { setPurchaseFlowError(errorMessage) } finally { @@ -31,14 +28,12 @@ const NoSubscription: FunctionComponent = ({ application }) => { You don't have a Standard Notes subscription yet. {isLoadingPurchaseFlow && Redirecting you to the subscription page...} {purchaseFlowError && {purchaseFlowError}} - {!application.hideSubscriptionMarketing && ( -
- - {application.hasAccount() && ( -
- )} +
+ + {application.hasAccount() && ( +
) } diff --git a/packages/web/src/javascripts/Components/Preferences/Panes/Account/SubscriptionSharing/NoProSubscription.tsx b/packages/web/src/javascripts/Components/Preferences/Panes/Account/SubscriptionSharing/NoProSubscription.tsx index 51f15820e..32c656458 100644 --- a/packages/web/src/javascripts/Components/Preferences/Panes/Account/SubscriptionSharing/NoProSubscription.tsx +++ b/packages/web/src/javascripts/Components/Preferences/Panes/Account/SubscriptionSharing/NoProSubscription.tsx @@ -2,7 +2,6 @@ import { FunctionComponent, useState } from 'react' import { LinkButton, Text } from '@/Components/Preferences/PreferencesComponents/Content' import Button from '@/Components/Button/Button' import { WebApplication } from '@/Application/Application' -import { loadPurchaseFlowUrl } from '@/Components/PurchaseFlow/PurchaseFlowFunctions' type Props = { application: WebApplication @@ -16,9 +15,7 @@ const NoProSubscription: FunctionComponent = ({ application }) => { const errorMessage = 'There was an error when attempting to redirect you to the subscription page.' setIsLoadingPurchaseFlow(true) try { - if (!(await loadPurchaseFlowUrl(application))) { - setPurchaseFlowError(errorMessage) - } + application.openPurchaseFlow() } catch (e) { setPurchaseFlowError(errorMessage) } finally { @@ -35,14 +32,12 @@ const NoProSubscription: FunctionComponent = ({ application }) => { {isLoadingPurchaseFlow && Redirecting you to the subscription page...} {purchaseFlowError && {purchaseFlowError}} - {!application.hideSubscriptionMarketing && ( -
- - {application.hasAccount() && ( -
- )} +
+ + {application.hasAccount() && ( +
) } diff --git a/packages/web/src/javascripts/Components/PremiumFeaturesModal/PremiumFeatureModalType.tsx b/packages/web/src/javascripts/Components/PremiumFeaturesModal/PremiumFeatureModalType.tsx new file mode 100644 index 000000000..e587b8297 --- /dev/null +++ b/packages/web/src/javascripts/Components/PremiumFeaturesModal/PremiumFeatureModalType.tsx @@ -0,0 +1,4 @@ +export enum PremiumFeatureModalType { + UpgradePrompt, + UpgradeSuccess, +} diff --git a/packages/web/src/javascripts/Components/PremiumFeaturesModal/PremiumFeaturesModal.tsx b/packages/web/src/javascripts/Components/PremiumFeaturesModal/PremiumFeaturesModal.tsx index 8d6d9566f..0b66a7ac9 100644 --- a/packages/web/src/javascripts/Components/PremiumFeaturesModal/PremiumFeaturesModal.tsx +++ b/packages/web/src/javascripts/Components/PremiumFeaturesModal/PremiumFeaturesModal.tsx @@ -4,7 +4,7 @@ import Icon from '@/Components/Icon/Icon' import { WebApplication } from '@/Application/Application' import { openSubscriptionDashboard } from '@/Utils/ManageSubscription' import { PremiumFeatureIconClass, PremiumFeatureIconName } from '../Icon/PremiumFeatureIcon' -import { loadPurchaseFlowUrl } from '../PurchaseFlow/PurchaseFlowFunctions' +import { PremiumFeatureModalType } from './PremiumFeatureModalType' type Props = { application: WebApplication @@ -13,6 +13,7 @@ type Props = { hasAccount: boolean onClose: () => void showModal: boolean + type: PremiumFeatureModalType } const PremiumFeaturesModal: FunctionComponent = ({ @@ -22,6 +23,7 @@ const PremiumFeaturesModal: FunctionComponent = ({ hasAccount, onClose, showModal, + type = PremiumFeatureModalType.UpgradePrompt, }) => { const plansButtonRef = useRef(null) @@ -29,11 +31,58 @@ const PremiumFeaturesModal: FunctionComponent = ({ if (hasSubscription) { void openSubscriptionDashboard(application) } else if (hasAccount) { - void loadPurchaseFlowUrl(application) + void application.openPurchaseFlow() } else if (window.plansUrl) { window.location.assign(window.plansUrl) } - }, [application, hasSubscription, hasAccount]) + onClose() + }, [application, hasSubscription, hasAccount, onClose]) + + const UpgradePrompt = ( + <> + + To take advantage of {featureName} and other advanced features, upgrade + your current plan. + + +
+ +
+ + ) + + const SuccessPrompt = ( + <> + + Enjoy your new powered up experience. + + +
+ +
+ + ) + + const title = + type === PremiumFeatureModalType.UpgradePrompt ? 'Enable Advanced Features' : 'Your purchase was successful!' + + const iconName = type === PremiumFeatureModalType.UpgradePrompt ? PremiumFeatureIconName : '🎉' + const iconClass = + type === PremiumFeatureModalType.UpgradePrompt + ? `h-12 w-12 ${PremiumFeatureIconClass}` + : 'px-7 py-2 h-24 w-24 text-[50px]' return showModal ? ( @@ -53,25 +102,11 @@ const PremiumFeaturesModal: FunctionComponent = ({ className="mx-auto mb-5 flex h-24 w-24 items-center justify-center rounded-[50%] bg-contrast" aria-hidden={true} > - +
-
Enable Advanced Features
+
{title}
- - To take advantage of {featureName} and other advanced features, - upgrade your current plan. - - {!application.hideSubscriptionMarketing && ( -
- -
- )} + {type === PremiumFeatureModalType.UpgradePrompt ? UpgradePrompt : SuccessPrompt}
diff --git a/packages/web/src/javascripts/Components/PurchaseFlow/Panes/CreateAccount.tsx b/packages/web/src/javascripts/Components/PurchaseFlow/Panes/CreateAccount.tsx index 09d3d0257..152e8ecc1 100644 --- a/packages/web/src/javascripts/Components/PurchaseFlow/Panes/CreateAccount.tsx +++ b/packages/web/src/javascripts/Components/PurchaseFlow/Panes/CreateAccount.tsx @@ -7,7 +7,6 @@ import { ChangeEventHandler, FunctionComponent, useEffect, useRef, useState } fr import FloatingLabelInput from '@/Components/Input/FloatingLabelInput' import { isEmailValid } from '@/Utils' import { BlueDotIcon, CircleIcon, DiamondIcon, CreateAccountIllustration } from '@standardnotes/icons' -import { loadPurchaseFlowUrl } from '../PurchaseFlowFunctions' type Props = { viewControllerManager: ViewControllerManager @@ -52,10 +51,7 @@ const CreateAccount: FunctionComponent = ({ viewControllerManager, applic } const subscribeWithoutAccount = () => { - loadPurchaseFlowUrl(application).catch((err) => { - console.error(err) - application.alertService.alert(err).catch(console.error) - }) + application.getViewControllerManager().purchaseFlowController.openPurchaseWebpage() } const handleCreateAccount = async () => { @@ -93,13 +89,7 @@ const CreateAccount: FunctionComponent = ({ viewControllerManager, applic await application.register(email, password) viewControllerManager.purchaseFlowController.closePurchaseFlow() - - if (!application.hideSubscriptionMarketing) { - loadPurchaseFlowUrl(application).catch((err) => { - console.error(err) - application.alertService.alert(err).catch(console.error) - }) - } + viewControllerManager.purchaseFlowController.openPurchaseFlow() } catch (err) { console.error(err) application.alertService.alert(err as string).catch(console.error) @@ -170,13 +160,15 @@ const CreateAccount: FunctionComponent = ({ viewControllerManager, applic > Sign in instead - + {!application.isNativeIOS() && ( + + )}