From 1fe5c8da2494c8b39e78ea5408b3a9509bf9300f Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Wed, 1 Oct 2025 10:37:40 +0200 Subject: [PATCH 1/7] move fcm token from proving store to setting store for better separation of concerns. --- app/src/providers/selfClientProvider.tsx | 30 +++++++++++++++++ .../screens/prove/ConfirmBelongingScreen.tsx | 5 +-- app/src/stores/settingStore.ts | 5 +++ .../src/proving/provingMachine.ts | 33 ++++--------------- packages/mobile-sdk-alpha/src/types/events.ts | 13 ++++++++ 5 files changed, 58 insertions(+), 28 deletions(-) diff --git a/app/src/providers/selfClientProvider.tsx b/app/src/providers/selfClientProvider.tsx index 424500091..d951c4957 100644 --- a/app/src/providers/selfClientProvider.tsx +++ b/app/src/providers/selfClientProvider.tsx @@ -20,6 +20,7 @@ import { navigationRef } from '@/navigation'; import { unsafe_getPrivateKey } from '@/providers/authProvider'; import { selfClientDocumentsAdapter } from '@/providers/passportDataProvider'; import { logNFCEvent, logProofEvent } from '@/Sentry'; +import { useSettingStore } from '@/stores/settingStore'; import analytics from '@/utils/analytics'; type GlobalCrypto = { crypto?: { subtle?: Crypto['subtle'] } }; @@ -158,6 +159,35 @@ export const SelfClientProvider = ({ children }: PropsWithChildren) => { } }); + addListener( + SdkEvents.PROVING_BEGIN_GENERATION, + async ({ uuid, isMock, context }) => { + const { fcmToken } = useSettingStore.getState(); + + if (fcmToken) { + try { + analytics().trackEvent('DEVICE_TOKEN_REG_STARTED'); + logProofEvent('info', 'Device token registration started', context); + + const { registerDeviceToken: registerFirebaseDeviceToken } = + await import('@/utils/notifications/notificationService'); + await registerFirebaseDeviceToken(uuid, fcmToken, isMock); + + analytics().trackEvent('DEVICE_TOKEN_REG_SUCCESS'); + logProofEvent('info', 'Device token registration success', context); + } catch (error) { + logProofEvent('warn', 'Device token registration failed', context, { + error: error instanceof Error ? error.message : String(error), + }); + console.error('Error registering device token:', error); + analytics().trackEvent('DEVICE_TOKEN_REG_FAILED', { + message: error instanceof Error ? error.message : String(error), + }); + } + } + }, + ); + addListener(SdkEvents.PROOF_EVENT, ({ level, context, event, details }) => { // Log proof events for monitoring/debugging logProofEvent(level, event, context, details); diff --git a/app/src/screens/prove/ConfirmBelongingScreen.tsx b/app/src/screens/prove/ConfirmBelongingScreen.tsx index b8adfc21f..2cd094afd 100644 --- a/app/src/screens/prove/ConfirmBelongingScreen.tsx +++ b/app/src/screens/prove/ConfirmBelongingScreen.tsx @@ -21,6 +21,7 @@ import { Title } from '@/components/typography/Title'; import useHapticNavigation from '@/hooks/useHapticNavigation'; import { ExpandableBottomLayout } from '@/layouts/ExpandableBottomLayout'; import { styles } from '@/screens/prove/ProofRequestStatusScreen'; +import { useSettingStore } from '@/stores/settingStore'; import { flushAllAnalytics, trackNfcEvent } from '@/utils/analytics'; import { black, white } from '@/utils/colors'; import { notificationSuccess } from '@/utils/haptic'; @@ -40,8 +41,8 @@ const ConfirmBelongingScreen: React.FC = () => { const [_requestingPermission, setRequestingPermission] = useState(false); const currentState = useProvingStore(state => state.currentState); const init = useProvingStore(state => state.init); - const setFcmToken = useProvingStore(state => state.setFcmToken); const setUserConfirmed = useProvingStore(state => state.setUserConfirmed); + const setFcmToken = useSettingStore(state => state.setFcmToken); const isReadyToProve = currentState === 'ready_to_prove'; useEffect(() => { notificationSuccess(); @@ -74,7 +75,7 @@ const ConfirmBelongingScreen: React.FC = () => { if (permissionGranted) { const token = await getFCMToken(); if (token) { - setFcmToken(token, selfClient); + setFcmToken(token); trackEvent(ProofEvents.FCM_TOKEN_STORED); } } diff --git a/app/src/stores/settingStore.ts b/app/src/stores/settingStore.ts index 69b3ff894..51f9161ce 100644 --- a/app/src/stores/settingStore.ts +++ b/app/src/stores/settingStore.ts @@ -20,6 +20,8 @@ interface PersistedSettingsState { isDevMode: boolean; setDevModeOn: () => void; setDevModeOff: () => void; + fcmToken: string | null; + setFcmToken: (token: string | null) => void; } interface NonPersistedSettingsState { @@ -69,6 +71,9 @@ export const useSettingStore = create()( setDevModeOn: () => set({ isDevMode: true }), setDevModeOff: () => set({ isDevMode: false }), + fcmToken: null, + setFcmToken: (token: string | null) => set({ fcmToken: token }), + // Non-persisted state (will not be saved to storage) hideNetworkModal: false, setHideNetworkModal: (hideNetworkModal: boolean) => { diff --git a/packages/mobile-sdk-alpha/src/proving/provingMachine.ts b/packages/mobile-sdk-alpha/src/proving/provingMachine.ts index fd03f2c86..98f1cefb9 100644 --- a/packages/mobile-sdk-alpha/src/proving/provingMachine.ts +++ b/packages/mobile-sdk-alpha/src/proving/provingMachine.ts @@ -214,9 +214,7 @@ export interface ProvingState { error_code: string | null; reason: string | null; endpointType: EndpointType | null; - fcmToken: string | null; env: 'prod' | 'stg' | null; - setFcmToken: (token: string, selfClient: SelfClient) => void; init: ( selfClient: SelfClient, circuitType: 'dsc' | 'disclose' | 'register', @@ -487,11 +485,6 @@ export const useProvingStore = create((set, get) => { error_code: null, reason: null, endpointType: null, - fcmToken: null, - setFcmToken: (token: string, selfClient: SelfClient) => { - set({ fcmToken: token }); - selfClient.trackEvent(ProofEvents.FCM_TOKEN_STORED); - }, _handleWebSocketMessage: async (event: MessageEvent, selfClient: SelfClient) => { if (!actor) { console.error('Cannot process message: State machine not initialized.'); @@ -1201,7 +1194,7 @@ export const useProvingStore = create((set, get) => { startProving: async (selfClient: SelfClient) => { _checkActorInitialized(actor); const startTime = Date.now(); - const { wsConnection, sharedKey, passportData, secret, uuid, fcmToken } = get(); + const { wsConnection, sharedKey, passportData, secret, uuid } = get(); const context = createProofContext(selfClient, 'startProving', { sessionId: uuid || get().uuid || 'unknown-session', }); @@ -1223,24 +1216,12 @@ export const useProvingStore = create((set, get) => { } try { - if (fcmToken) { - try { - const isMockPassport = passportData?.mock; - selfClient.trackEvent(ProofEvents.DEVICE_TOKEN_REG_STARTED); - selfClient.logProofEvent('info', 'Device token registration started', context); - await selfClient.registerNotificationsToken(uuid, fcmToken, isMockPassport); - selfClient.trackEvent(ProofEvents.DEVICE_TOKEN_REG_SUCCESS); - selfClient.logProofEvent('info', 'Device token registration success', context); - } catch (error) { - selfClient.logProofEvent('warn', 'Device token registration failed', context, { - error: error instanceof Error ? error.message : String(error), - }); - console.error('Error registering device token:', error); - selfClient.trackEvent(ProofEvents.DEVICE_TOKEN_REG_FAILED, { - message: error instanceof Error ? error.message : String(error), - }); - } - } + // Emit event for FCM token registration + selfClient.emit(SdkEvents.PROVING_BEGIN_GENERATION, { + uuid, + isMock: passportData?.mock ?? false, + context, + }); selfClient.trackEvent(ProofEvents.PAYLOAD_GEN_STARTED); selfClient.logProofEvent('info', 'Payload generation started', context); diff --git a/packages/mobile-sdk-alpha/src/types/events.ts b/packages/mobile-sdk-alpha/src/types/events.ts index 68f7ae457..473451bbf 100644 --- a/packages/mobile-sdk-alpha/src/types/events.ts +++ b/packages/mobile-sdk-alpha/src/types/events.ts @@ -68,6 +68,14 @@ export enum SdkEvents { * and guide them through the recovery process to regain access. */ PROVING_ACCOUNT_RECOVERY_REQUIRED = 'PROVING_ACCOUNT_RECOVERY_REQUIRED', + + /** + * Emitted when the proving generation process begins. + * + * **Recommended:** Use this to handle notification token registration and other setup tasks + * that need to occur when proof generation starts. + */ + PROVING_BEGIN_GENERATION = 'PROVING_BEGIN_GENERATION', /** * Emitted for various proof-related events during the proving process. * @@ -97,6 +105,11 @@ export interface SDKEventMap { documentCategory: DocumentCategory | null; }; [SdkEvents.PROVING_ACCOUNT_RECOVERY_REQUIRED]: undefined; + [SdkEvents.PROVING_BEGIN_GENERATION]: { + uuid: string; + isMock: boolean; + context: ProofContext; + }; [SdkEvents.PROGRESS]: Progress; [SdkEvents.ERROR]: Error; From 4854d6fa87c63d519ee3dcafa5b284fde08f488d Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Wed, 1 Oct 2025 10:45:07 +0200 Subject: [PATCH 2/7] use analytics on adapter --- app/src/providers/selfClientProvider.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/providers/selfClientProvider.tsx b/app/src/providers/selfClientProvider.tsx index d951c4957..8dcf5cc9c 100644 --- a/app/src/providers/selfClientProvider.tsx +++ b/app/src/providers/selfClientProvider.tsx @@ -166,21 +166,21 @@ export const SelfClientProvider = ({ children }: PropsWithChildren) => { if (fcmToken) { try { - analytics().trackEvent('DEVICE_TOKEN_REG_STARTED'); + adapters.analytics?.trackEvent('DEVICE_TOKEN_REG_STARTED'); logProofEvent('info', 'Device token registration started', context); const { registerDeviceToken: registerFirebaseDeviceToken } = await import('@/utils/notifications/notificationService'); await registerFirebaseDeviceToken(uuid, fcmToken, isMock); - analytics().trackEvent('DEVICE_TOKEN_REG_SUCCESS'); + adapters.analytics?.trackEvent('DEVICE_TOKEN_REG_SUCCESS'); logProofEvent('info', 'Device token registration success', context); } catch (error) { logProofEvent('warn', 'Device token registration failed', context, { error: error instanceof Error ? error.message : String(error), }); console.error('Error registering device token:', error); - analytics().trackEvent('DEVICE_TOKEN_REG_FAILED', { + adapters.analytics?.trackEvent('DEVICE_TOKEN_REG_FAILED', { message: error instanceof Error ? error.message : String(error), }); } From 3afb31d30787757321a2ac83918cbac5f5f39d29 Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Wed, 1 Oct 2025 10:51:31 +0200 Subject: [PATCH 3/7] Revert "use analytics on adapter" This reverts commit 4854d6fa87c63d519ee3dcafa5b284fde08f488d. --- app/src/providers/selfClientProvider.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/providers/selfClientProvider.tsx b/app/src/providers/selfClientProvider.tsx index 8dcf5cc9c..d951c4957 100644 --- a/app/src/providers/selfClientProvider.tsx +++ b/app/src/providers/selfClientProvider.tsx @@ -166,21 +166,21 @@ export const SelfClientProvider = ({ children }: PropsWithChildren) => { if (fcmToken) { try { - adapters.analytics?.trackEvent('DEVICE_TOKEN_REG_STARTED'); + analytics().trackEvent('DEVICE_TOKEN_REG_STARTED'); logProofEvent('info', 'Device token registration started', context); const { registerDeviceToken: registerFirebaseDeviceToken } = await import('@/utils/notifications/notificationService'); await registerFirebaseDeviceToken(uuid, fcmToken, isMock); - adapters.analytics?.trackEvent('DEVICE_TOKEN_REG_SUCCESS'); + analytics().trackEvent('DEVICE_TOKEN_REG_SUCCESS'); logProofEvent('info', 'Device token registration success', context); } catch (error) { logProofEvent('warn', 'Device token registration failed', context, { error: error instanceof Error ? error.message : String(error), }); console.error('Error registering device token:', error); - adapters.analytics?.trackEvent('DEVICE_TOKEN_REG_FAILED', { + analytics().trackEvent('DEVICE_TOKEN_REG_FAILED', { message: error instanceof Error ? error.message : String(error), }); } From 77b85dc00c3cc6279f438a11d1e0b0d1e896679c Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Wed, 1 Oct 2025 10:53:41 +0200 Subject: [PATCH 4/7] prettier --- sdk/core/src/SelfBackendVerifier.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/core/src/SelfBackendVerifier.ts b/sdk/core/src/SelfBackendVerifier.ts index e27702fba..ce423ca28 100644 --- a/sdk/core/src/SelfBackendVerifier.ts +++ b/sdk/core/src/SelfBackendVerifier.ts @@ -328,7 +328,7 @@ export class SelfBackendVerifier { ? verificationConfig.minimumAge <= Number.parseInt(genericDiscloseOutput.minimumAge, 10) : true, isOfacValid: - //isOfacValid is true when a person is in OFAC list + //isOfacValid is true when a person is in OFAC list verificationConfig.ofac !== undefined && verificationConfig.ofac ? cumulativeOfac : false, }, forbiddenCountriesList, From 369d9d36017975473fa05d10d05aa58e6a7fb1e4 Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Wed, 1 Oct 2025 12:10:16 +0200 Subject: [PATCH 5/7] please be good --- app/src/providers/selfClientProvider.tsx | 9 ---- .../utils/proving/validateDocument.test.ts | 3 -- app/tests/utils/selfClientProvider.ts | 3 -- packages/mobile-sdk-alpha/src/client.ts | 7 ---- packages/mobile-sdk-alpha/src/types/public.ts | 6 --- .../mobile-sdk-alpha/tests/client.test.ts | 41 ++++--------------- .../tests/documents/utils.test.ts | 3 -- .../tests/utils/testHelpers.ts | 6 --- .../src/providers/SelfClientProvider.tsx | 5 --- 9 files changed, 8 insertions(+), 75 deletions(-) diff --git a/app/src/providers/selfClientProvider.tsx b/app/src/providers/selfClientProvider.tsx index d951c4957..c6570fca8 100644 --- a/app/src/providers/selfClientProvider.tsx +++ b/app/src/providers/selfClientProvider.tsx @@ -96,15 +96,6 @@ export const SelfClientProvider = ({ children }: PropsWithChildren) => { auth: { getPrivateKey: () => unsafe_getPrivateKey(), }, - notification: { - registerDeviceToken: async (sessionId, deviceToken, isMock) => { - // Forward to our app-level function which handles staging vs production - // and also fetches the token if not provided - const { registerDeviceToken: registerFirebaseDeviceToken } = - await import('@/utils/notifications/notificationService'); - return registerFirebaseDeviceToken(sessionId, deviceToken, isMock); - }, - }, }), [], ); diff --git a/app/tests/src/utils/proving/validateDocument.test.ts b/app/tests/src/utils/proving/validateDocument.test.ts index 0f81f9e95..6efdec137 100644 --- a/app/tests/src/utils/proving/validateDocument.test.ts +++ b/app/tests/src/utils/proving/validateDocument.test.ts @@ -76,9 +76,6 @@ function createTestClient() { })), }, }, - notification: { - registerDeviceToken: async () => Promise.resolve(), - }, crypto: { hash: jest.fn(), sign: jest.fn(), diff --git a/app/tests/utils/selfClientProvider.ts b/app/tests/utils/selfClientProvider.ts index 650e532fb..b78796a0b 100644 --- a/app/tests/utils/selfClientProvider.ts +++ b/app/tests/utils/selfClientProvider.ts @@ -62,7 +62,4 @@ export const mockAdapters = { network: mockNetwork, crypto: mockCrypto, documents: mockDocuments, - notification: { - registerDeviceToken: async () => Promise.resolve(), - }, }; diff --git a/packages/mobile-sdk-alpha/src/client.ts b/packages/mobile-sdk-alpha/src/client.ts index a73d69ecd..29a86145b 100644 --- a/packages/mobile-sdk-alpha/src/client.ts +++ b/packages/mobile-sdk-alpha/src/client.ts @@ -132,13 +132,6 @@ export function createSelfClient({ return adapters.auth.getPrivateKey(); } - async function registerNotificationsToken(sessionId: string, deviceToken?: string, isMock?: boolean): Promise { - if (!_adapters.notification) { - throw notImplemented('notification'); - } - return _adapters.notification.registerDeviceToken(sessionId, deviceToken, isMock); - } - async function hasPrivateKey(): Promise { if (!adapters.auth) return false; try { diff --git a/packages/mobile-sdk-alpha/src/types/public.ts b/packages/mobile-sdk-alpha/src/types/public.ts index fc34fc9ab..70a11f774 100644 --- a/packages/mobile-sdk-alpha/src/types/public.ts +++ b/packages/mobile-sdk-alpha/src/types/public.ts @@ -90,10 +90,6 @@ export interface MRZValidation { overall: boolean; } -export interface NotificationAdapter { - registerDeviceToken(sessionId: string, deviceToken?: string, isMock?: boolean): Promise; -} - export type LogLevel = 'info' | 'warn' | 'error'; export interface Progress { @@ -110,7 +106,6 @@ export interface Adapters { analytics?: AnalyticsAdapter; auth: AuthAdapter; documents: DocumentsAdapter; - notification: NotificationAdapter; } export interface LoggerAdapter { @@ -181,7 +176,6 @@ export interface SelfClient { logProofEvent(level: LogLevel, message: string, context: ProofContext, details?: Record): void; loadDocumentCatalog(): Promise; saveDocumentCatalog(catalog: DocumentCatalog): Promise; - registerNotificationsToken(sessionId: string, deviceToken?: string, isMock?: boolean): Promise; loadDocumentById(id: string): Promise; saveDocument(id: string, passportData: IDDocument): Promise; deleteDocument(id: string): Promise; diff --git a/packages/mobile-sdk-alpha/tests/client.test.ts b/packages/mobile-sdk-alpha/tests/client.test.ts index 12876e6d5..ca903e5d4 100644 --- a/packages/mobile-sdk-alpha/tests/client.test.ts +++ b/packages/mobile-sdk-alpha/tests/client.test.ts @@ -6,7 +6,7 @@ import { describe, expect, it, vi } from 'vitest'; import type { CryptoAdapter, DocumentsAdapter, NetworkAdapter, ScannerAdapter } from '../src'; import { createListenersMap, createSelfClient, SdkEvents } from '../src/index'; -import { AuthAdapter, NotificationAdapter } from '../src/types/public'; +import { AuthAdapter } from '../src/types/public'; describe('createSelfClient', () => { // Test eager validation during client creation @@ -20,7 +20,6 @@ describe('createSelfClient', () => { auth, network, crypto, - notification, }, }), ).toThrow('scanner adapter not provided'); @@ -50,7 +49,7 @@ describe('createSelfClient', () => { it('creates client successfully with all required adapters', () => { const client = createSelfClient({ config: {}, - adapters: { scanner, network, crypto, documents, auth, notification }, + adapters: { scanner, network, crypto, documents, auth }, listeners: new Map(), }); expect(client).toBeTruthy(); @@ -60,7 +59,7 @@ describe('createSelfClient', () => { const scanMock = vi.fn().mockResolvedValue({ mode: 'qr', data: 'self://ok' }); const client = createSelfClient({ config: {}, - adapters: { scanner: { scan: scanMock }, network, crypto, documents, auth, notification }, + adapters: { scanner: { scan: scanMock }, network, crypto, documents, auth }, listeners: new Map(), }); const result = await client.scanDocument({ mode: 'qr' }); @@ -78,7 +77,7 @@ describe('createSelfClient', () => { const scanMock = vi.fn().mockRejectedValue(err); const client = createSelfClient({ config: {}, - adapters: { scanner: { scan: scanMock }, network, crypto, documents, auth, notification }, + adapters: { scanner: { scan: scanMock }, network, crypto, documents, auth }, listeners: new Map(), }); await expect(client.scanDocument({ mode: 'qr' })).rejects.toBe(err); @@ -97,7 +96,7 @@ describe('createSelfClient', () => { const client = createSelfClient({ config: {}, - adapters: { scanner, network, crypto, documents, auth, notification }, + adapters: { scanner, network, crypto, documents, auth }, listeners: listeners.map, }); @@ -125,7 +124,7 @@ describe('createSelfClient', () => { it('parses MRZ via client', () => { const client = createSelfClient({ config: {}, - adapters: { scanner, network, crypto, documents, auth, notification }, + adapters: { scanner, network, crypto, documents, auth }, listeners: new Map(), }); const sample = `P { expect(info.validation?.overall).toBe(true); }); - it('registers device token when notification adapter is given', async () => { - const registerDeviceToken = vi.fn(() => Promise.resolve()); - const client = createSelfClient({ - config: {}, - adapters: { - notification: { registerDeviceToken }, - scanner, - network, - crypto, - documents, - auth: { getPrivateKey: () => Promise.resolve('stubbed-private-key') }, - }, - listeners: new Map(), - }); - - await client.registerNotificationsToken('session-id', 'test-token', true); - expect(registerDeviceToken).toHaveBeenCalledOnce(); - expect(registerDeviceToken).toHaveBeenCalledWith('session-id', 'test-token', true); - }); - describe('when analytics adapter is given', () => { it('calls that adapter for trackEvent', () => { const trackEvent = vi.fn(); const client = createSelfClient({ config: {}, adapters: { - notification, scanner, network, crypto, @@ -183,7 +161,7 @@ describe('createSelfClient', () => { const getPrivateKey = vi.fn(() => Promise.resolve('stubbed-private-key')); const client = createSelfClient({ config: {}, - adapters: { notification, scanner, network, crypto, documents, auth: { getPrivateKey } }, + adapters: { scanner, network, crypto, documents, auth: { getPrivateKey } }, listeners: new Map(), }); @@ -193,7 +171,7 @@ describe('createSelfClient', () => { const getPrivateKey = vi.fn(() => Promise.resolve('stubbed-private-key')); const client = createSelfClient({ config: {}, - adapters: { notification, scanner, network, crypto, documents, auth: { getPrivateKey } }, + adapters: { scanner, network, crypto, documents, auth: { getPrivateKey } }, listeners: new Map(), }); await expect(client.hasPrivateKey()).resolves.toBe(true); @@ -234,6 +212,3 @@ const documents: DocumentsAdapter = { saveDocument: async () => {}, deleteDocument: async () => {}, }; -const notification: NotificationAdapter = { - registerDeviceToken: async () => Promise.resolve(), -}; diff --git a/packages/mobile-sdk-alpha/tests/documents/utils.test.ts b/packages/mobile-sdk-alpha/tests/documents/utils.test.ts index b75ad4a1d..a6da43a89 100644 --- a/packages/mobile-sdk-alpha/tests/documents/utils.test.ts +++ b/packages/mobile-sdk-alpha/tests/documents/utils.test.ts @@ -14,9 +14,6 @@ const createMockSelfClientWithDocumentsAdapter = (documentsAdapter: DocumentsAda config: defaultConfig, listeners: new Map(), adapters: { - notification: { - registerDeviceToken: async () => Promise.resolve(), - }, auth: { getPrivateKey: async () => null, }, diff --git a/packages/mobile-sdk-alpha/tests/utils/testHelpers.ts b/packages/mobile-sdk-alpha/tests/utils/testHelpers.ts index be4af2f27..5b437a0a4 100644 --- a/packages/mobile-sdk-alpha/tests/utils/testHelpers.ts +++ b/packages/mobile-sdk-alpha/tests/utils/testHelpers.ts @@ -4,7 +4,6 @@ /* eslint-disable sort-exports/sort-exports */ import type { CryptoAdapter, DocumentsAdapter, NetworkAdapter, ScannerAdapter } from '../../src'; -import type { NotificationAdapter } from '../../src/types/public'; // Shared test data export const sampleMRZ = `P 'stubbed-private-key', }; -const mockNotification: NotificationAdapter = { - registerDeviceToken: async () => Promise.resolve(), -}; - export const mockAdapters = { scanner: mockScanner, network: mockNetwork, crypto: mockCrypto, documents: mockDocuments, auth: mockAuth, - notification: mockNotification, }; // Shared test expectations diff --git a/packages/mobile-sdk-demo/src/providers/SelfClientProvider.tsx b/packages/mobile-sdk-demo/src/providers/SelfClientProvider.tsx index 855fda67a..e1cf76339 100644 --- a/packages/mobile-sdk-demo/src/providers/SelfClientProvider.tsx +++ b/packages/mobile-sdk-demo/src/providers/SelfClientProvider.tsx @@ -81,11 +81,6 @@ export function SelfClientProvider({ children }: PropsWithChildren) { } }, }, - notification: { - async registerDeviceToken(): Promise { - // No-op notification adapter for the demo application - }, - }, }), [], ); From 7478477dafe932ad2b3e195a92af847783a4e20a Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Wed, 1 Oct 2025 12:13:45 +0200 Subject: [PATCH 6/7] ik heb oopsie wooopsie --- packages/mobile-sdk-alpha/src/client.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/mobile-sdk-alpha/src/client.ts b/packages/mobile-sdk-alpha/src/client.ts index 29a86145b..a9676c0e5 100644 --- a/packages/mobile-sdk-alpha/src/client.ts +++ b/packages/mobile-sdk-alpha/src/client.ts @@ -153,7 +153,6 @@ export function createSelfClient({ logProofEvent: (level: LogLevel, message: string, context: ProofContext, details?: Record) => { emit(SdkEvents.PROOF_EVENT, { context, event: message, details, level }); }, - registerNotificationsToken, // TODO: inline for now loadDocumentCatalog: async () => { return _adapters.documents.loadDocumentCatalog(); From e5522ccc7938cbc461cf5a739627eea7218dcace Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Wed, 1 Oct 2025 12:21:14 +0200 Subject: [PATCH 7/7] remove --- packages/mobile-sdk-alpha/src/client.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mobile-sdk-alpha/src/client.ts b/packages/mobile-sdk-alpha/src/client.ts index a9676c0e5..40f9b773b 100644 --- a/packages/mobile-sdk-alpha/src/client.ts +++ b/packages/mobile-sdk-alpha/src/client.ts @@ -40,7 +40,7 @@ const optionalDefaults: Required> = { }, }; -const REQUIRED_ADAPTERS = ['auth', 'scanner', 'network', 'crypto', 'documents', 'notification'] as const; +const REQUIRED_ADAPTERS = ['auth', 'scanner', 'network', 'crypto', 'documents'] as const; export const createListenersMap = (): { map: Map void>>;