Skip to content

Commit 9180f98

Browse files
authored
Merge pull request Expensify#64786 from software-mansion-labs/bring-back-new-sign-in-page
Bring back new sign-in page
2 parents 6aae145 + a6e8bcf commit 9180f98

49 files changed

Lines changed: 694 additions & 299 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

__mocks__/@ua/react-native-airship.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@ enum EventType {
66
PushReceived = 'com.airship.push_received',
77
}
88

9+
// eslint-disable-next-line no-restricted-syntax
10+
enum PermissionStatus {
11+
Granted = 'granted',
12+
Denied = 'denied',
13+
NotDetermined = 'not_determined',
14+
}
15+
916
// eslint-disable-next-line @typescript-eslint/no-namespace
1017
namespace iOS {
1118
/**
@@ -71,4 +78,4 @@ const Airship: Partial<AirshipRoot> = {
7178

7279
export default Airship;
7380

74-
export {EventType, iOS};
81+
export {EventType, iOS, PermissionStatus};

modules/hybrid-app/android/src/main/java/com/expensify/reactnativehybridapp/ReactNativeHybridApp.kt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,22 @@ class ReactNativeHybridApp(reactContext: ReactApplicationContext) :
3636
override fun sendAuthToken(authToken: String?) {
3737
Log.d(NAME, "`sendAuthToken` should never be called in standalone `New Expensify` app")
3838
}
39+
40+
override fun signInToOldDot(
41+
autoGeneratedLogin: String,
42+
autoGeneratedPassword: String,
43+
authToken: String,
44+
email: String,
45+
policyID: String
46+
) {
47+
Log.d(NAME, "`signInToOldDot` should never be called in standalone `New Expensify` app")
48+
}
49+
50+
override fun signOutFromOldDot() {
51+
Log.d(NAME, "`signOutFromOldDot` should never be called in standalone `New Expensify` app")
52+
}
53+
54+
override fun clearOldDotAfterSignOut() {
55+
Log.d(NAME, "`clearOldDotAfterSignOut` should never be called in standalone `New Expensify` app")
56+
}
3957
}

modules/hybrid-app/ios/ReactNativeHybridApp.mm

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,18 @@ - (void)sendAuthToken:(NSString *)authToken {
2727
NSLog(@"[ReactNativeHybridApp] `sendAuthToken` should never be called in standalone `New Expensify` app");
2828
}
2929

30+
- (void)signInToOldDot:(NSString *)autoGeneratedLogin autoGeneratedPassword:(NSString *)autoGeneratedPassword authToken:(NSString *)authToken email:(NSString *)email policyID:(NSString *)policyID {
31+
NSLog(@"[ReactNativeHybridApp] `signInToOldDot` should never be called in standalone `New Expensify` app");
32+
}
33+
34+
- (void)signOutFromOldDot {
35+
NSLog(@"[ReactNativeHybridApp] `signOutFromOldDot` should never be called in standalone `New Expensify` app");
36+
}
37+
38+
- (void)clearOldDotAfterSignOut {
39+
NSLog(@"[ReactNativeHybridApp] `clearOldDotAfterSignOut` should never be called in standalone `New Expensify` app");
40+
}
41+
3042
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
3143
(const facebook::react::ObjCTurboModule::InitParams &)params
3244
{

modules/hybrid-app/src/NativeReactNativeHybridApp.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ export interface Spec extends TurboModule {
99
completeOnboarding: (status: boolean) => void;
1010
switchAccount: (newDotCurrentAccountEmail: string, authToken: string, policyID: string, accountID: string) => void;
1111
sendAuthToken: (authToken: string) => void;
12+
signInToOldDot: (autoGeneratedLogin: string, autoGeneratedPassword: string, authToken: string, email: string, policyID: string) => void;
13+
signOutFromOldDot: () => void;
14+
clearOldDotAfterSignOut: () => void;
1215
}
1316

1417
export default TurboModuleRegistry.getEnforcing<Spec>('ReactNativeHybridApp');

modules/hybrid-app/src/index.native.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,15 @@ const HybridAppModule: HybridAppModuleType = {
2020
sendAuthToken({authToken}) {
2121
ReactNativeHybridApp.sendAuthToken(authToken);
2222
},
23+
signInToOldDot({autoGeneratedLogin, autoGeneratedPassword, authToken, email, policyID}) {
24+
ReactNativeHybridApp.signInToOldDot(autoGeneratedLogin, autoGeneratedPassword, authToken, email, policyID);
25+
},
26+
signOutFromOldDot() {
27+
ReactNativeHybridApp.signOutFromOldDot();
28+
},
29+
clearOldDotAfterSignOut() {
30+
ReactNativeHybridApp.clearOldDotAfterSignOut();
31+
},
2332
};
2433

2534
export default HybridAppModule;

modules/hybrid-app/src/index.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,18 @@ const HybridAppModule: HybridAppModuleType = {
2424
// eslint-disable-next-line no-console
2525
console.warn('HybridAppModule: `sendAuthToken` should never be called on web');
2626
},
27+
signInToOldDot() {
28+
// eslint-disable-next-line no-console
29+
console.warn('HybridAppModule: `signInToOldDot` should never be called on web');
30+
},
31+
signOutFromOldDot() {
32+
// eslint-disable-next-line no-console
33+
console.warn('HybridAppModule: `signOutFromOldDot` should never be called on web');
34+
},
35+
clearOldDotAfterSignOut() {
36+
// eslint-disable-next-line no-console
37+
console.warn('HybridAppModule: `clearOldDotAfterSignOut` should never be called on web');
38+
},
2739
};
2840

2941
export default HybridAppModule;

modules/hybrid-app/src/types.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ type HybridAppModuleType = {
55
completeOnboarding: (args: {status: boolean}) => void;
66
switchAccount: (args: {newDotCurrentAccountEmail: string; authToken: string; policyID: string; accountID: string}) => void;
77
sendAuthToken: (args: {authToken: string}) => void;
8+
signInToOldDot: (args: {autoGeneratedLogin: string; autoGeneratedPassword: string; authToken: string; email: string; policyID: string}) => void;
9+
signOutFromOldDot: () => void;
10+
clearOldDotAfterSignOut: () => void;
811
};
912

1013
export default HybridAppModuleType;

src/App.tsx

Lines changed: 47 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import {CurrentReportIDContextProvider} from './hooks/useCurrentReportID';
4141
import useDefaultDragAndDrop from './hooks/useDefaultDragAndDrop';
4242
import HybridAppHandler from './HybridAppHandler';
4343
import OnyxUpdateManager from './libs/actions/OnyxUpdateManager';
44+
import './libs/HybridApp';
4445
import {AttachmentModalContextProvider} from './pages/media/AttachmentModalScreen/AttachmentModalContext';
4546
import type {Route} from './ROUTES';
4647
import './setup/backgroundTask';
@@ -81,47 +82,53 @@ function App({url, hybridAppSettings}: AppProps) {
8182
<InitialURLContextProvider url={url}>
8283
<HybridAppHandler hybridAppSettings={hybridAppSettings} />
8384
<GestureHandlerRootView style={fill}>
84-
<ComposeProviders
85-
components={[
86-
OnyxProvider,
87-
ThemeProvider,
88-
ThemeStylesProvider,
89-
ThemeIllustrationsProvider,
90-
SafeAreaProvider,
91-
PortalProvider,
92-
SafeArea,
93-
LocaleContextProvider,
94-
HTMLEngineProvider,
95-
PopoverContextProvider,
96-
CurrentReportIDContextProvider,
97-
ScrollOffsetContextProvider,
98-
AttachmentModalContextProvider,
99-
PickerStateProvider,
100-
EnvironmentProvider,
101-
CustomStatusBarAndBackgroundContextProvider,
102-
ActiveElementRoleProvider,
103-
ActionSheetAwareScrollViewProvider,
104-
PlaybackContextProvider,
105-
FullScreenContextProvider,
106-
VolumeContextProvider,
107-
VideoPopoverMenuContextProvider,
108-
KeyboardProvider,
109-
KeyboardStateProvider,
110-
SearchRouterContextProvider,
111-
ProductTrainingContextProvider,
112-
InputBlurContextProvider,
113-
FullScreenBlockingViewContextProvider,
114-
FullScreenLoaderContextProvider,
115-
]}
85+
<SafeAreaProvider
86+
initialMetrics={{
87+
insets: {top: 0, right: 0, bottom: 0, left: 0},
88+
frame: {x: 0, y: 0, width: 0, height: 0},
89+
}}
11690
>
117-
<CustomStatusBarAndBackground />
118-
<ErrorBoundary errorMessage="NewExpensify crash caught by error boundary">
119-
<ColorSchemeWrapper>
120-
<Expensify />
121-
</ColorSchemeWrapper>
122-
</ErrorBoundary>
123-
<NavigationBar />
124-
</ComposeProviders>
91+
<ComposeProviders
92+
components={[
93+
OnyxProvider,
94+
ThemeProvider,
95+
ThemeStylesProvider,
96+
ThemeIllustrationsProvider,
97+
PortalProvider,
98+
SafeArea,
99+
LocaleContextProvider,
100+
HTMLEngineProvider,
101+
PopoverContextProvider,
102+
CurrentReportIDContextProvider,
103+
ScrollOffsetContextProvider,
104+
AttachmentModalContextProvider,
105+
PickerStateProvider,
106+
EnvironmentProvider,
107+
CustomStatusBarAndBackgroundContextProvider,
108+
ActiveElementRoleProvider,
109+
ActionSheetAwareScrollViewProvider,
110+
PlaybackContextProvider,
111+
FullScreenContextProvider,
112+
VolumeContextProvider,
113+
VideoPopoverMenuContextProvider,
114+
KeyboardProvider,
115+
KeyboardStateProvider,
116+
SearchRouterContextProvider,
117+
ProductTrainingContextProvider,
118+
InputBlurContextProvider,
119+
FullScreenBlockingViewContextProvider,
120+
FullScreenLoaderContextProvider,
121+
]}
122+
>
123+
<CustomStatusBarAndBackground />
124+
<ErrorBoundary errorMessage="NewExpensify crash caught by error boundary">
125+
<ColorSchemeWrapper>
126+
<Expensify />
127+
</ColorSchemeWrapper>
128+
</ErrorBoundary>
129+
<NavigationBar />
130+
</ComposeProviders>
131+
</SafeAreaProvider>
125132
</GestureHandlerRootView>
126133
</InitialURLContextProvider>
127134
</SplashScreenStateContextProvider>

src/CONFIG.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,12 @@ export default {
9595
GOOGLE_SIGN_IN: {
9696
// cspell:disable-next-line
9797
WEB_CLIENT_ID: '921154746561-gpsoaqgqfuqrfsjdf8l7vohfkfj7b9up.apps.googleusercontent.com',
98+
// cspell:disable-next-line
9899
IOS_CLIENT_ID: '921154746561-s3uqn2oe4m85tufi6mqflbfbuajrm2i3.apps.googleusercontent.com',
100+
// cspell:disable-next-line
101+
HYBRID_APP_WEB_CLIENT_ID: '1008697809946-5e095eqem3o6ugtpc2rjf7v880tcp28p.apps.googleusercontent.com',
102+
// cspell:disable-next-line
103+
HYBRID_APP_IOS_CLIENT_ID: '1008697809946-sh04nqq0hea396s1qdqqbj6ia649odb2.apps.googleusercontent.com',
99104
},
100105
GCP_GEOLOCATION_API_KEY: googleGeolocationAPIKey,
101106
FIREBASE_WEB_CONFIG: {

src/CONST/index.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6724,6 +6724,12 @@ const CONST = {
67246724
HIDDEN: `hidden`,
67256725
},
67266726

6727+
HYBRID_APP_SIGN_IN_STATE: {
6728+
NOT_STARTED: 'notStarted',
6729+
STARTED: 'started',
6730+
FINISHED: 'finished',
6731+
},
6732+
67276733
CSV_IMPORT_COLUMNS: {
67286734
EMAIL: 'email',
67296735
NAME: 'name',

0 commit comments

Comments
 (0)