Skip to content

Commit

Permalink
cherry-pick bf5bb97
Browse files Browse the repository at this point in the history
  • Loading branch information
tommasini authored and sethkfman committed Oct 18, 2024
1 parent f4a9cd4 commit d9e9b55
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 163 deletions.
11 changes: 1 addition & 10 deletions app/components/Nav/App/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,6 @@ import OptionsSheet from '../../UI/SelectOptionSheet/OptionsSheet';
import FoxLoader from '../../../components/UI/FoxLoader';
import { AppStateEventProcessor } from '../../../core/AppStateEventListener';
import MultiRpcModal from '../../../components/Views/MultiRpcModal/MultiRpcModal';
import { trace, TraceName, TraceOperation } from '../../../util/trace';

const clearStackNavigatorOptions = {
headerShown: false,
Expand Down Expand Up @@ -355,15 +354,7 @@ const App = (props) => {
setOnboarded(!!existingUser);
try {
if (existingUser) {
await trace(
{
name: TraceName.BiometricAuthentication,
op: TraceOperation.BiometricAuthentication,
},
async () => {
await Authentication.appTriggeredAuth();
},
);
await Authentication.appTriggeredAuth();
// we need to reset the navigator here so that the user cannot go back to the login screen
navigator.reset({ routes: [{ name: Routes.ONBOARDING.HOME_NAV }] });
} else {
Expand Down
18 changes: 4 additions & 14 deletions app/components/Views/LockScreen/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import {
import Routes from '../../../constants/navigation/Routes';
import { CommonActions } from '@react-navigation/native';
import trackErrorAsAnalytics from '../../../util/metrics/TrackError/trackErrorAsAnalytics';
import { trace, TraceName, TraceOperation } from '../../../util/trace';

const LOGO_SIZE = 175;
const createStyles = (colors) =>
Expand Down Expand Up @@ -135,19 +134,10 @@ class LockScreen extends PureComponent {
// Retrieve the credentials
Logger.log('Lockscreen::unlockKeychain - getting credentials');

await trace(
{
name: TraceName.BiometricAuthentication,
op: TraceOperation.BiometricAuthentication,
},
async () => {
await Authentication.appTriggeredAuth({
bioStateMachineId,
disableAutoLogout: true,
});
},
);

await Authentication.appTriggeredAuth({
bioStateMachineId,
disableAutoLogout: true,
});
this.setState({ ready: true });
Logger.log('Lockscreen::unlockKeychain - state: ready');
} catch (error) {
Expand Down
36 changes: 6 additions & 30 deletions app/components/Views/Login/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,12 +58,6 @@ import { LoginViewSelectors } from '../../../../e2e/selectors/LoginView.selector
import { withMetricsAwareness } from '../../../components/hooks/useMetrics';
import trackErrorAsAnalytics from '../../../util/metrics/TrackError/trackErrorAsAnalytics';
import { downloadStateLogs } from '../../../util/logs';
import {
trace,
endTrace,
TraceName,
TraceOperation,
} from '../../../util/trace';

const deviceHeight = Device.getDeviceHeight();
const breakPoint = deviceHeight < 700;
Expand Down Expand Up @@ -250,10 +244,6 @@ class Login extends PureComponent {
fieldRef = React.createRef();

async componentDidMount() {
trace({
name: TraceName.LoginToPasswordEntry,
op: TraceOperation.LoginToPasswordEntry,
});
this.props.metrics.trackEvent(MetaMetricsEvents.LOGIN_SCREEN_VIEWED);
BackHandler.addEventListener('hardwareBackPress', this.handleBackPress);

Expand Down Expand Up @@ -377,15 +367,7 @@ class Login extends PureComponent {
);

try {
await trace(
{
name: TraceName.AuthenticateUser,
op: TraceOperation.AuthenticateUser,
},
async () => {
await Authentication.userEntryAuth(password, authType);
},
);
await Authentication.userEntryAuth(password, authType);

Keyboard.dismiss();

Expand Down Expand Up @@ -453,15 +435,7 @@ class Login extends PureComponent {
const { current: field } = this.fieldRef;
field?.blur();
try {
await trace(
{
name: TraceName.BiometricAuthentication,
op: TraceOperation.BiometricAuthentication,
},
async () => {
await Authentication.appTriggeredAuth();
},
);
await Authentication.appTriggeredAuth();
const onboardingWizard = await StorageWrapper.getItem(ONBOARDING_WIZARD);
if (!onboardingWizard) this.props.setOnboardingWizardStep(1);
this.props.navigation.replace(Routes.ONBOARDING.HOME_NAV);
Expand All @@ -480,7 +454,6 @@ class Login extends PureComponent {
};

triggerLogIn = () => {
endTrace({ name: TraceName.LoginToPasswordEntry });
this.onLogin();
};

Expand Down Expand Up @@ -563,7 +536,10 @@ class Login extends PureComponent {
)}
</TouchableOpacity>

<Text style={styles.title} testID={LoginViewSelectors.TITLE_ID}>
<Text
style={styles.title}
testID={LoginViewSelectors.TITLE_ID}
>
{strings('login.title')}
</Text>
<View style={styles.field}>
Expand Down
38 changes: 14 additions & 24 deletions app/components/Views/Onboarding/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ import { OnboardingSelectorIDs } from '../../../../e2e/selectors/Onboarding/Onbo
import Routes from '../../../constants/navigation/Routes';
import { selectAccounts } from '../../../selectors/accountTrackerController';
import trackOnboarding from '../../../util/metrics/TrackOnboarding/trackOnboarding';
import { trace, TraceName, TraceOperation } from '../../../util/trace';

const createStyles = (colors) =>
StyleSheet.create({
Expand Down Expand Up @@ -276,33 +275,24 @@ class Onboarding extends PureComponent {
};

onPressCreate = () => {
const action = () => {
trace(
{
name: TraceName.CreateNewWalletToChoosePassword,
op: TraceOperation.CreateNewWalletToChoosePassword,
},
() => {
const { metrics } = this.props;
if (metrics.isEnabled()) {
this.props.navigation.navigate('ChoosePassword', {
const action = async () => {
const { metrics } = this.props;
if (metrics.isEnabled()) {
this.props.navigation.navigate('ChoosePassword', {
[PREVIOUS_SCREEN]: ONBOARDING,
});
this.track(MetaMetricsEvents.WALLET_SETUP_STARTED);
} else {
this.props.navigation.navigate('OptinMetrics', {
onContinue: () => {
this.props.navigation.replace('ChoosePassword', {
[PREVIOUS_SCREEN]: ONBOARDING,
});
this.track(MetaMetricsEvents.WALLET_SETUP_STARTED);
} else {
this.props.navigation.navigate('OptinMetrics', {
onContinue: () => {
this.props.navigation.replace('ChoosePassword', {
[PREVIOUS_SCREEN]: ONBOARDING,
});
this.track(MetaMetricsEvents.WALLET_SETUP_STARTED);
},
});
}
},
);
},
});
}
};

this.handleExistingUser(action);
};

Expand Down
1 change: 0 additions & 1 deletion app/components/Views/Wallet/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,6 @@ import { ButtonVariants } from '../../../component-library/components/Buttons/Bu
import { useListNotifications } from '../../../util/notifications/hooks/useNotifications';
import { PortfolioBalance } from '../../UI/Tokens/TokenList/PortfolioBalance';
import { isObject } from 'lodash';

const createStyles = ({ colors, typography }: Theme) =>
StyleSheet.create({
base: {
Expand Down
59 changes: 4 additions & 55 deletions app/store/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,6 @@ import { Authentication } from '../core';
import LockManagerService from '../core/LockManagerService';
import ReadOnlyNetworkStore from '../util/test/network-store';
import { isE2E } from '../util/test/utils';
import { trace, endTrace, TraceName, TraceOperation } from '../util/trace';
import StorageWrapper from './storage-wrapper';

import thunk from 'redux-thunk';

import persistConfig from './persistConfig';
Expand All @@ -28,7 +25,7 @@ const pReducer = persistReducer<RootState, any>(persistConfig, rootReducer);
// TODO: Replace "any" with type
// eslint-disable-next-line @typescript-eslint/no-explicit-any, import/no-mutable-exports
let store: Store<RootState, any>, persistor;
const createStoreAndPersistor = async (appStartTime: number) => {
const createStoreAndPersistor = async () => {
// Obtain the initial state from ReadOnlyNetworkStore for E2E tests.
const initialState = isE2E
? await ReadOnlyNetworkStore.getState()
Expand All @@ -50,24 +47,6 @@ const createStoreAndPersistor = async (appStartTime: number) => {
middlewares.push(createReduxFlipperDebugger());
}

const jsStartTime = performance.now();

trace({
name: TraceName.LoadScripts,
op: TraceOperation.LoadScripts,
startTime: appStartTime,
});

endTrace({
name: TraceName.LoadScripts,
timestamp: appStartTime + jsStartTime,
});

trace({
name: TraceName.CreateStore,
op: TraceOperation.CreateStore,
});

store = configureStore({
reducer: pReducer,
middleware: middlewares,
Expand All @@ -76,19 +55,10 @@ const createStoreAndPersistor = async (appStartTime: number) => {

sagaMiddleware.run(rootSaga);

endTrace({ name: TraceName.CreateStore });

trace({
name: TraceName.StorageRehydration,
op: TraceOperation.StorageRehydration,
});

/**
* Initialize services after persist is completed
*/
const onPersistComplete = async () => {
endTrace({ name: TraceName.StorageRehydration });

const onPersistComplete = () => {
/**
* EngineService.initalizeEngine(store) with SES/lockdown:
* Requires ethjs nested patches (lib->src)
Expand All @@ -104,7 +74,6 @@ const createStoreAndPersistor = async (appStartTime: number) => {
* - TypeError: undefined is not an object (evaluating 'TokenListController.tokenList')
* - V8: SES_UNHANDLED_REJECTION
*/

store.dispatch({
type: 'TOGGLE_BASIC_FUNCTIONALITY',
basicFunctionalityEnabled:
Expand All @@ -115,18 +84,7 @@ const createStoreAndPersistor = async (appStartTime: number) => {
store.dispatch({
type: 'FETCH_FEATURE_FLAGS',
});

await trace(
{
name: TraceName.EngineInitialization,
op: TraceOperation.EngineInitialization,
tags: getTraceTags(store.getState?.()),
},
() => {
EngineService.initalizeEngine(store);
},
);

EngineService.initalizeEngine(store);
Authentication.init(store);
AppStateEventProcessor.init(store);
LockManagerService.init(store);
Expand All @@ -136,16 +94,7 @@ const createStoreAndPersistor = async (appStartTime: number) => {
};

(async () => {
const appStartTime = await StorageWrapper.getItem('appStartTime');

await trace(
{
name: TraceName.UIStartup,
op: TraceOperation.UIStartup,
startTime: appStartTime,
},
async () => await createStoreAndPersistor(appStartTime),
);
await createStoreAndPersistor();
})();

export { store, persistor };
31 changes: 2 additions & 29 deletions app/util/trace.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,29 +23,6 @@ export enum TraceName {
NotificationDisplay = 'Notification Display',
PPOMValidation = 'PPOM Validation',
Signature = 'Signature',
LoadScripts = 'Load Scripts',
SetupStore = 'Setup Store',
LoginToPasswordEntry = 'Login to Password Entry',
AuthenticateUser = 'Authenticate User',
BiometricAuthentication = 'Biometrics Authentication',
EngineInitialization = 'Engine Initialization',
CreateStore = 'Create Store',
CreateNewWalletToChoosePassword = 'Create New Wallet to Choose Password',
StorageRehydration = 'Storage Rehydration',
UIStartup = 'Custom UIStartup',
}

export enum TraceOperation {
LoadScripts = 'custom.load.scripts',
SetupStore = 'custom.setup.store',
LoginToPasswordEntry = 'custom.login.to.password.entry',
BiometricAuthentication = 'biometrics.authentication',
AuthenticateUser = 'custom.authenticate.user',
EngineInitialization = 'custom.engine.initialization',
CreateStore = 'custom.create.store',
CreateNewWalletToChoosePassword = 'custom.create.new.wallet',
StorageRehydration = 'custom.storage.rehydration',
UIStartup = 'custom.ui.startup',
}

const ID_DEFAULT = 'default';
Expand Down Expand Up @@ -103,10 +80,6 @@ export interface TraceRequest {
* Custom tags to associate with the trace.
*/
tags?: Record<string, number | string | boolean>;
/**
* Custom operation name to associate with the trace.
*/
op?: string;
}
/**
* A request to end a pending trace.
Expand Down Expand Up @@ -254,13 +227,13 @@ function startSpan<T>(
request: TraceRequest,
callback: (spanOptions: StartSpanOptions) => T,
) {
const { data: attributes, name, parentContext, startTime, op } = request;
const { data: attributes, name, parentContext, startTime, tags } = request;

Check failure on line 230 in app/util/trace.ts

View workflow job for this annotation

GitHub Actions / scripts (lint)

'tags' is assigned a value but never used
const parentSpan = (parentContext ?? null) as Span | null;

const spanOptions: StartSpanOptions = {
attributes,
name,
op: op || OP_DEFAULT,
op: OP_DEFAULT,
// This needs to be parentSpan once we have the withIsolatedScope implementation in place in the Sentry SDK for React Native
// Reference PR that updates @sentry/react-native: https://github.com/getsentry/sentry-react-native/pull/3895
parentSpanId: parentSpan?.spanId,
Expand Down

0 comments on commit d9e9b55

Please sign in to comment.