Skip to content

Commit d7c5da0

Browse files
committed
fix: sonar warnings
1 parent 6402cf7 commit d7c5da0

7 files changed

Lines changed: 68 additions & 52 deletions

File tree

app/components/UI/OptinMetrics/OptinMetrics.navigation.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,7 @@ describe('OptinMetrics — interest questionnaire navigation branching', () => {
510510
feature: 'qr-sync',
511511
surface: 'import',
512512
operation: 'provision_from_metadata',
513-
source: 'OptinMetrics',
513+
source: 'finalizeOnboardingCompletion',
514514
syncFlow: 'new_user',
515515
}),
516516
}),

app/core/QrSync/completeExistingUserQrSyncImport.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ import { showImportFailedSheet } from '../../components/Views/AddDeviceToWallet/
55
import Engine from '../Engine';
66
import type { AppNavigationProp } from '../NavigationService/types';
77
import { isDuplicateMnemonicError } from './duplicateMnemonicError';
8+
import { QrSyncSyncFlows } from './constants';
89
import {
910
QrSyncOperations,
1011
QrSyncSurfaces,
11-
QrSyncSyncFlows,
1212
QrSyncTelemetrySources,
1313
reportQrSyncFailure,
1414
} from './qrSyncTelemetry';

app/core/QrSync/qrSyncTelemetry.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import { addBreadcrumb } from '@sentry/react-native';
99

1010
import Logger, { type LoggerErrorOptions } from '../../util/Logger';
11-
import { QrSyncSyncFlows, type QrSyncSyncFlow } from './constants';
11+
import type { QrSyncSyncFlow } from './constants';
1212
import type { QrSyncErrorCode, QrSyncPhase } from './types';
1313

1414
/** Sentry tag value for QR sync errors. Query: `feature:qr-sync`. */
@@ -58,13 +58,12 @@ export const QrSyncTelemetrySources = {
5858
CONTROLLER_IMPORT_REMAINING: 'QrSyncController.importRemainingSecrets',
5959
CONTROLLER_ENRICH_PRIMARY: 'QrSyncController.enrichPrimaryProvisioningEntry',
6060
CONTROLLER: 'QrSyncController',
61+
FINALIZE_ONBOARDING: 'finalizeOnboardingCompletion',
6162
} as const;
6263

6364
export type QrSyncTelemetrySource =
6465
(typeof QrSyncTelemetrySources)[keyof typeof QrSyncTelemetrySources];
6566

66-
export { QrSyncSyncFlows, type QrSyncSyncFlow };
67-
6867
const SENSITIVE_KEY_PATTERN =
6968
/^(otp|mnemonic|seed|seedPhrase|privateKey|pendingSecretImports|value|p|payload|scannedQr|qrPayload|sessionRequest)$/i;
7069

@@ -88,7 +87,7 @@ export interface ReportQrSyncFailureOptions {
8887
operation: QrSyncOperation;
8988
errorCode?: QrSyncErrorCode;
9089
phase?: QrSyncPhase;
91-
source?: QrSyncTelemetrySource | string;
90+
source?: QrSyncTelemetrySource;
9291
syncFlow?: QrSyncSyncFlow;
9392
/** Extra display-only fields — scrubbed before send. */
9493
extras?: Record<string, unknown>;

app/core/QrSync/services/qr-sync-provisioning-service.ts

Lines changed: 59 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,11 @@ import type {
4040
QrSyncControllerGetStateAction,
4141
QrSyncControllerMarkProvisioningFailedAction,
4242
} from '../controller-types';
43-
import { QrSyncProvisioningStatuses, QrSyncSecretTypes } from '../constants';
43+
import {
44+
QrSyncProvisioningStatuses,
45+
QrSyncSecretTypes,
46+
type QrSyncSyncFlow,
47+
} from '../constants';
4448
import type {
4549
QrSyncAccountGroup,
4650
QrSyncProvisioningMetadata,
@@ -54,7 +58,6 @@ import {
5458
QrSyncSurfaces,
5559
QrSyncTelemetrySources,
5660
reportQrSyncFailure,
57-
type QrSyncSyncFlow,
5861
} from '../qrSyncTelemetry';
5962

6063
const SERVICE_NAME = 'QrSyncProvisioningService' as const;
@@ -133,50 +136,65 @@ export class QrSyncProvisioningService {
133136
): Promise<void> {
134137
for (const secret of secrets) {
135138
try {
136-
if (secret.type === QrSyncSecretTypes.MNEMONIC) {
137-
const entropySource = await this.#importMnemonicToVault(secret.value);
138-
this.#messenger.call(
139-
'QrSyncController:enrichProvisioningEntry',
140-
secret.index,
141-
{ entropySource },
142-
);
143-
} else if (secret.type === QrSyncSecretTypes.PRIVATE_KEY) {
144-
const accountAddress = await this.#importPrivateKeyToVault(
145-
secret.value,
146-
);
147-
148-
if (accountAddress) {
149-
this.#messenger.call(
150-
'QrSyncController:enrichProvisioningEntry',
151-
secret.index,
152-
{ accountAddress },
153-
);
154-
}
155-
} else {
156-
const syncFlow = this.#getSessionSyncFlow();
157-
reportQrSyncFailure(
158-
new Error('QrSyncProvisioningService: Unknown secret type'),
159-
{
160-
surface: QrSyncSurfaces.IMPORT,
161-
operation: QrSyncOperations.IMPORT_SECRETS_UNKNOWN_TYPE,
162-
source: QrSyncTelemetrySources.PROVISIONING_IMPORT_SECRETS,
163-
...(syncFlow ? { syncFlow } : {}),
164-
extras: { secretType: String(secret.type) },
165-
},
166-
);
167-
}
139+
await this.#importSingleSecretToVault(secret);
168140
} catch (error) {
169-
const syncFlow = this.#getSessionSyncFlow();
170-
reportQrSyncFailure(error, {
171-
surface: QrSyncSurfaces.IMPORT,
172-
operation: QrSyncOperations.IMPORT_SECRETS_TO_VAULT,
173-
source: QrSyncTelemetrySources.PROVISIONING_IMPORT_SECRETS,
174-
...(syncFlow ? { syncFlow } : {}),
175-
});
141+
this.#reportImportSecretsFailure(
142+
error,
143+
QrSyncOperations.IMPORT_SECRETS_TO_VAULT,
144+
);
176145
}
177146
}
178147
}
179148

149+
async #importSingleSecretToVault(
150+
secret: QrSyncSecretImportEntry,
151+
): Promise<void> {
152+
if (secret.type === QrSyncSecretTypes.MNEMONIC) {
153+
const entropySource = await this.#importMnemonicToVault(secret.value);
154+
this.#messenger.call(
155+
'QrSyncController:enrichProvisioningEntry',
156+
secret.index,
157+
{ entropySource },
158+
);
159+
return;
160+
}
161+
162+
if (secret.type === QrSyncSecretTypes.PRIVATE_KEY) {
163+
const accountAddress = await this.#importPrivateKeyToVault(secret.value);
164+
if (accountAddress) {
165+
this.#messenger.call(
166+
'QrSyncController:enrichProvisioningEntry',
167+
secret.index,
168+
{ accountAddress },
169+
);
170+
}
171+
return;
172+
}
173+
174+
this.#reportImportSecretsFailure(
175+
new Error('QrSyncProvisioningService: Unknown secret type'),
176+
QrSyncOperations.IMPORT_SECRETS_UNKNOWN_TYPE,
177+
{ secretType: String(secret.type) },
178+
);
179+
}
180+
181+
#reportImportSecretsFailure(
182+
error: unknown,
183+
operation:
184+
| typeof QrSyncOperations.IMPORT_SECRETS_TO_VAULT
185+
| typeof QrSyncOperations.IMPORT_SECRETS_UNKNOWN_TYPE,
186+
extras?: Record<string, unknown>,
187+
): void {
188+
const syncFlow = this.#getSessionSyncFlow();
189+
reportQrSyncFailure(error, {
190+
surface: QrSyncSurfaces.IMPORT,
191+
operation,
192+
source: QrSyncTelemetrySources.PROVISIONING_IMPORT_SECRETS,
193+
...(syncFlow ? { syncFlow } : {}),
194+
...(extras ? { extras } : {}),
195+
});
196+
}
197+
180198
async #importMnemonicToVault(seed: string): Promise<EntropySourceId> {
181199
const mnemonic = mnemonicPhraseToBytes(seed);
182200

app/core/QrSync/useQrSyncImportNavigation.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
} from '../../selectors/qrSyncController';
1111
import type { AppNavigationProp } from '../NavigationService/types';
1212
import Engine from '../Engine';
13-
import { QrSyncSecretTypes } from './constants';
13+
import { QrSyncSecretTypes, QrSyncSyncFlows } from './constants';
1414
import { completeExistingUserQrSyncImport } from './completeExistingUserQrSyncImport';
1515
import { navigateToQrSyncImport } from './navigateToQrSyncImport';
1616
import { showAlreadySyncedSheet } from '../../components/Views/AddDeviceToWallet/showAlreadySyncedSheet';
@@ -19,7 +19,6 @@ import type { QrSyncSecretImportEntry } from './types';
1919
import {
2020
QrSyncOperations,
2121
QrSyncSurfaces,
22-
QrSyncSyncFlows,
2322
QrSyncTelemetrySources,
2423
reportQrSyncFailure,
2524
} from './qrSyncTelemetry';

app/util/onboarding/finalizeOnboardingCompletion.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ describe('finalizeOnboardingCompletion', () => {
152152
feature: 'qr-sync',
153153
surface: 'import',
154154
operation: 'provision_from_metadata',
155-
source: 'TestContext',
155+
source: 'finalizeOnboardingCompletion',
156156
syncFlow: 'new_user',
157157
}),
158158
}),

app/util/onboarding/finalizeOnboardingCompletion.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ import { getOnboardingCompletedAnalyticsPropsFromSuccessFlow } from '../analytic
1010
import type { WalletSetupCompletedAttributionAnalyticsPayload } from '../analytics/walletSetupCompletedAttribution';
1111
import { analytics } from '../analytics/analytics';
1212
import Logger from '../Logger';
13+
import { QrSyncSyncFlows } from '../../core/QrSync/constants';
1314
import {
1415
QrSyncOperations,
1516
QrSyncSurfaces,
16-
QrSyncSyncFlows,
1717
QrSyncTelemetrySources,
1818
reportQrSyncFailure,
1919
} from '../../core/QrSync/qrSyncTelemetry';
@@ -84,7 +84,7 @@ export function finalizeOnboardingCompletion({
8484
reportQrSyncFailure(error, {
8585
surface: QrSyncSurfaces.IMPORT,
8686
operation: QrSyncOperations.PROVISION_FROM_METADATA,
87-
source: discoverAccountsLogContext,
87+
source: QrSyncTelemetrySources.FINALIZE_ONBOARDING,
8888
syncFlow: QrSyncSyncFlows.NEW_USER,
8989
});
9090
},

0 commit comments

Comments
 (0)