From ae0648c0b4a0565aecb7e8958859d4e1231f87e5 Mon Sep 17 00:00:00 2001 From: Pedro Guerreiro Date: Wed, 13 Dec 2023 18:37:06 +0000 Subject: [PATCH 1/6] refactor(typescript): migrate conciergepage --- .../{ConciergePage.js => ConciergePage.tsx} | 27 ++++++------------- 1 file changed, 8 insertions(+), 19 deletions(-) rename src/pages/{ConciergePage.js => ConciergePage.tsx} (67%) diff --git a/src/pages/ConciergePage.js b/src/pages/ConciergePage.tsx similarity index 67% rename from src/pages/ConciergePage.js rename to src/pages/ConciergePage.tsx index 841ce524b2cb..ffb82f689620 100644 --- a/src/pages/ConciergePage.js +++ b/src/pages/ConciergePage.tsx @@ -1,36 +1,28 @@ import {useFocusEffect} from '@react-navigation/native'; -import PropTypes from 'prop-types'; import React from 'react'; -import {withOnyx} from 'react-native-onyx'; -import _ from 'underscore'; +import {OnyxEntry, withOnyx} from 'react-native-onyx'; import FullScreenLoadingIndicator from '@components/FullscreenLoadingIndicator'; import Navigation from '@libs/Navigation/Navigation'; import * as Report from '@userActions/Report'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; +import {Session} from '@src/types/onyx'; -const propTypes = { +type ConciergePageOnyxProps = { /** Session info for the currently logged in user. */ - session: PropTypes.shape({ - /** Currently logged in user authToken */ - authToken: PropTypes.string, - }), + session: OnyxEntry; }; -const defaultProps = { - session: { - authToken: null, - }, -}; +type ConciergePageProps = ConciergePageOnyxProps; /* * This is a "utility page", that does this: * - If the user is authenticated, find their concierge chat and re-route to it * - Else re-route to the login page */ -function ConciergePage(props) { +function ConciergePage({session}: ConciergePageProps) { useFocusEffect(() => { - if (_.has(props.session, 'authToken')) { + if (session?.authToken) { // Pop the concierge loading page before opening the concierge report. Navigation.isNavigationReady().then(() => { Navigation.goBack(ROUTES.HOME); @@ -43,12 +35,9 @@ function ConciergePage(props) { return ; } - -ConciergePage.propTypes = propTypes; -ConciergePage.defaultProps = defaultProps; ConciergePage.displayName = 'ConciergePage'; -export default withOnyx({ +export default withOnyx({ session: { key: ONYXKEYS.SESSION, }, From 356a876806cebd308ede65c69cc00ffcdf6f763e Mon Sep 17 00:00:00 2001 From: Pedro Guerreiro Date: Thu, 14 Dec 2023 15:11:02 +0000 Subject: [PATCH 2/6] refactor(typescript): add missing screen params types --- src/pages/ConciergePage.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/pages/ConciergePage.tsx b/src/pages/ConciergePage.tsx index ffb82f689620..d440e6a83705 100644 --- a/src/pages/ConciergePage.tsx +++ b/src/pages/ConciergePage.tsx @@ -1,11 +1,14 @@ import {useFocusEffect} from '@react-navigation/native'; +import type {StackScreenProps} from '@react-navigation/stack'; import React from 'react'; import {OnyxEntry, withOnyx} from 'react-native-onyx'; import FullScreenLoadingIndicator from '@components/FullscreenLoadingIndicator'; import Navigation from '@libs/Navigation/Navigation'; +import type {AuthScreensParamList} from '@libs/Navigation/types'; import * as Report from '@userActions/Report'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; +import SCREENS from '@src/SCREENS'; import {Session} from '@src/types/onyx'; type ConciergePageOnyxProps = { @@ -13,7 +16,7 @@ type ConciergePageOnyxProps = { session: OnyxEntry; }; -type ConciergePageProps = ConciergePageOnyxProps; +type ConciergePageProps = ConciergePageOnyxProps & StackScreenProps; /* * This is a "utility page", that does this: From fb473d0f2c7628a0dcc5b6fbeca8a5be59bbf856 Mon Sep 17 00:00:00 2001 From: Pedro Guerreiro Date: Mon, 18 Dec 2023 17:31:09 +0000 Subject: [PATCH 3/6] refactor: apply pull request feedback --- src/pages/ConciergePage.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pages/ConciergePage.tsx b/src/pages/ConciergePage.tsx index d440e6a83705..5f4b5ad375f7 100644 --- a/src/pages/ConciergePage.tsx +++ b/src/pages/ConciergePage.tsx @@ -9,7 +9,7 @@ import * as Report from '@userActions/Report'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; import SCREENS from '@src/SCREENS'; -import {Session} from '@src/types/onyx'; +import type {Session} from '@src/types/onyx'; type ConciergePageOnyxProps = { /** Session info for the currently logged in user. */ @@ -38,6 +38,7 @@ function ConciergePage({session}: ConciergePageProps) { return ; } + ConciergePage.displayName = 'ConciergePage'; export default withOnyx({ From 362121d09a09fa47de8994a2d40952acba1f3ff9 Mon Sep 17 00:00:00 2001 From: Pedro Guerreiro Date: Wed, 3 Jan 2024 16:26:08 +0000 Subject: [PATCH 4/6] chore: apply pull request feedback --- src/pages/ConciergePage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/ConciergePage.tsx b/src/pages/ConciergePage.tsx index 5f4b5ad375f7..0ec0efa96ce5 100644 --- a/src/pages/ConciergePage.tsx +++ b/src/pages/ConciergePage.tsx @@ -25,7 +25,7 @@ type ConciergePageProps = ConciergePageOnyxProps & StackScreenProps { - if (session?.authToken) { + if (Object.hasOwn(session ?? {}, 'authToken')) { // Pop the concierge loading page before opening the concierge report. Navigation.isNavigationReady().then(() => { Navigation.goBack(ROUTES.HOME); From 35c5d0fdf26f259504c7917a403948ed3e3abb1d Mon Sep 17 00:00:00 2001 From: Pedro Guerreiro Date: Tue, 9 Jan 2024 15:47:56 +0000 Subject: [PATCH 5/6] chore(typescript): add missing import type --- src/pages/ConciergePage.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/pages/ConciergePage.tsx b/src/pages/ConciergePage.tsx index 0ec0efa96ce5..17e9aeafbd14 100644 --- a/src/pages/ConciergePage.tsx +++ b/src/pages/ConciergePage.tsx @@ -1,14 +1,15 @@ import {useFocusEffect} from '@react-navigation/native'; import type {StackScreenProps} from '@react-navigation/stack'; import React from 'react'; -import {OnyxEntry, withOnyx} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; import FullScreenLoadingIndicator from '@components/FullscreenLoadingIndicator'; import Navigation from '@libs/Navigation/Navigation'; import type {AuthScreensParamList} from '@libs/Navigation/types'; import * as Report from '@userActions/Report'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; -import SCREENS from '@src/SCREENS'; +import type SCREENS from '@src/SCREENS'; import type {Session} from '@src/types/onyx'; type ConciergePageOnyxProps = { From ee212bac8a800e1b0ed90ff5b39bf0b55ab5e030 Mon Sep 17 00:00:00 2001 From: Pedro Guerreiro <48553277+pac-guerreiro@users.noreply.github.com> Date: Fri, 12 Jan 2024 18:02:33 +0000 Subject: [PATCH 6/6] refactor(typescript): apply pull request suggestion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Błażej Kustra <46095609+blazejkustra@users.noreply.github.com> --- src/pages/ConciergePage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/ConciergePage.tsx b/src/pages/ConciergePage.tsx index 17e9aeafbd14..514dd0921dfc 100644 --- a/src/pages/ConciergePage.tsx +++ b/src/pages/ConciergePage.tsx @@ -26,7 +26,7 @@ type ConciergePageProps = ConciergePageOnyxProps & StackScreenProps { - if (Object.hasOwn(session ?? {}, 'authToken')) { + if (session && 'authToken' in session) { // Pop the concierge loading page before opening the concierge report. Navigation.isNavigationReady().then(() => { Navigation.goBack(ROUTES.HOME);