From 94ef46b065965fff6cb0479223933250a4b260c6 Mon Sep 17 00:00:00 2001 From: c3024 Date: Fri, 15 Nov 2024 18:46:08 +0530 Subject: [PATCH 1/4] remove links to the tour after it has been viewed from anywhere --- src/pages/Search/EmptySearchView.tsx | 26 ++++++++++++++++--- .../FloatingActionButtonAndPopover.tsx | 4 +++ src/types/onyx/IntroSelected.ts | 3 +++ 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/pages/Search/EmptySearchView.tsx b/src/pages/Search/EmptySearchView.tsx index 19d00a06771e..f9a4350f730c 100644 --- a/src/pages/Search/EmptySearchView.tsx +++ b/src/pages/Search/EmptySearchView.tsx @@ -16,12 +16,15 @@ import useStyleUtils from '@hooks/useStyleUtils'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import interceptAnonymousUser from '@libs/interceptAnonymousUser'; +import {hasSeenTourSelector} from '@libs/onboardingSelectors'; import * as ReportUtils from '@libs/ReportUtils'; import {getNavatticURL} from '@libs/TourUtils'; import * as TripsResevationUtils from '@libs/TripReservationUtils'; import variables from '@styles/variables'; import * as IOU from '@userActions/IOU'; import * as Link from '@userActions/Link'; +import * as Task from '@userActions/Task'; +import * as Welcome from '@userActions/Welcome'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import type {SearchDataTypes} from '@src/types/onyx/SearchResults'; @@ -94,9 +97,15 @@ function EmptySearchView({type}: EmptySearchViewProps) { ); }, [styles, translate, ctaErrorMessage]); - const [onboardingPurpose] = useOnyx(ONYXKEYS.NVP_INTRO_SELECTED, {selector: (introSelected) => introSelected?.choice}); + const [introSelected] = useOnyx(ONYXKEYS.NVP_INTRO_SELECTED); + const onboardingPurpose = introSelected?.choice; const {environment} = useEnvironment(); const navatticURL = getNavatticURL(environment, onboardingPurpose); + const [hasSeenTour = false] = useOnyx(ONYXKEYS.NVP_ONBOARDING, { + selector: hasSeenTourSelector, + }); + const viewTourTaskReportID = introSelected?.['viewTour']; + const [viewTourTaskReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${viewTourTaskReportID}`); const content = useMemo(() => { switch (type) { @@ -123,7 +132,18 @@ function EmptySearchView({type}: EmptySearchViewProps) { title: translate('search.searchResults.emptyExpenseResults.title'), subtitle: translate('search.searchResults.emptyExpenseResults.subtitle'), buttons: [ - {buttonText: translate('emptySearchView.takeATour'), buttonAction: () => Link.openExternalLink(navatticURL)}, + ...(!hasSeenTour + ? [ + { + buttonText: translate('emptySearchView.takeATour'), + buttonAction: () => { + Link.openExternalLink(navatticURL); + Welcome.setSelfTourViewed(); + Task.completeTask(viewTourTaskReport); + }, + }, + ] + : []), { buttonText: translate('iou.createExpense'), buttonAction: () => interceptAnonymousUser(() => IOU.startMoneyRequest(CONST.IOU.TYPE.CREATE, ReportUtils.generateReportID())), @@ -143,7 +163,7 @@ function EmptySearchView({type}: EmptySearchViewProps) { headerContentStyles: styles.emptyStateFolderWebStyles, }; } - }, [type, StyleUtils, translate, theme, styles, subtitleComponent, ctaErrorMessage, navatticURL]); + }, [type, StyleUtils, translate, theme, styles, subtitleComponent, ctaErrorMessage, navatticURL, hasSeenTour, viewTourTaskReport]); return ( { Welcome.setSelfTourViewed(); Link.openExternalLink(navatticURL); + Task.completeTask(viewTourTaskReport); }, }, ] diff --git a/src/types/onyx/IntroSelected.ts b/src/types/onyx/IntroSelected.ts index edeb79d34113..d8077a4a8a4a 100644 --- a/src/types/onyx/IntroSelected.ts +++ b/src/types/onyx/IntroSelected.ts @@ -11,6 +11,9 @@ type IntroSelected = { /** Whether the onboarding is complete */ isInviteOnboardingComplete?: boolean; + + /** Task reportID for 'viewTour' type */ + viewTour?: string; }; export default IntroSelected; From 7e0b7d20fac8048b9fa04ea5be5256f9100be95a Mon Sep 17 00:00:00 2001 From: c3024 Date: Fri, 15 Nov 2024 21:20:18 +0530 Subject: [PATCH 2/4] fix lint --- src/pages/Search/EmptySearchView.tsx | 2 +- .../sidebar/SidebarScreen/FloatingActionButtonAndPopover.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/Search/EmptySearchView.tsx b/src/pages/Search/EmptySearchView.tsx index f9a4350f730c..44e2a93316fe 100644 --- a/src/pages/Search/EmptySearchView.tsx +++ b/src/pages/Search/EmptySearchView.tsx @@ -104,7 +104,7 @@ function EmptySearchView({type}: EmptySearchViewProps) { const [hasSeenTour = false] = useOnyx(ONYXKEYS.NVP_ONBOARDING, { selector: hasSeenTourSelector, }); - const viewTourTaskReportID = introSelected?.['viewTour']; + const viewTourTaskReportID = introSelected?.viewTour; const [viewTourTaskReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${viewTourTaskReportID}`); const content = useMemo(() => { diff --git a/src/pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover.tsx b/src/pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover.tsx index 871c13ecce17..39233e4fa1c2 100644 --- a/src/pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover.tsx +++ b/src/pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover.tsx @@ -506,7 +506,7 @@ function FloatingActionButtonAndPopover({onHideCreateMenu, onShowCreateMenu}: Fl reportNameValuePairs, ]); - const viewTourTaskReportID = introSelected?.['viewTour']; + const viewTourTaskReportID = introSelected?.viewTour; const [viewTourTaskReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${viewTourTaskReportID}`); return ( From 10e3e96fd2c4ae4a510ca4ccc85ec122c82b04d7 Mon Sep 17 00:00:00 2001 From: c3024 Date: Tue, 19 Nov 2024 12:36:54 +0530 Subject: [PATCH 3/4] prettier --- src/pages/Search/EmptySearchView.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/pages/Search/EmptySearchView.tsx b/src/pages/Search/EmptySearchView.tsx index 136b65ee8ad2..d541b13c63c2 100644 --- a/src/pages/Search/EmptySearchView.tsx +++ b/src/pages/Search/EmptySearchView.tsx @@ -18,8 +18,8 @@ import useStyleUtils from '@hooks/useStyleUtils'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import interceptAnonymousUser from '@libs/interceptAnonymousUser'; -import * as PolicyUtils from '@libs/PolicyUtils'; import {hasSeenTourSelector} from '@libs/onboardingSelectors'; +import * as PolicyUtils from '@libs/PolicyUtils'; import * as ReportUtils from '@libs/ReportUtils'; import {getNavatticURL} from '@libs/TourUtils'; import * as TripsResevationUtils from '@libs/TripReservationUtils'; @@ -191,7 +191,10 @@ function EmptySearchView({type}: EmptySearchViewProps) { ctaErrorMessage, navatticURL, shouldRedirectToExpensifyClassic, - , hasSeenTour, viewTourTaskReport]); + , + hasSeenTour, + viewTourTaskReport, + ]); return ( <> From c5835835e64190f5fd4b168ff04947b7240c64da Mon Sep 17 00:00:00 2001 From: c3024 Date: Wed, 20 Nov 2024 18:31:15 +0530 Subject: [PATCH 4/4] fix lint --- src/pages/Search/EmptySearchView.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/Search/EmptySearchView.tsx b/src/pages/Search/EmptySearchView.tsx index d541b13c63c2..507ab593eafb 100644 --- a/src/pages/Search/EmptySearchView.tsx +++ b/src/pages/Search/EmptySearchView.tsx @@ -191,7 +191,6 @@ function EmptySearchView({type}: EmptySearchViewProps) { ctaErrorMessage, navatticURL, shouldRedirectToExpensifyClassic, - , hasSeenTour, viewTourTaskReport, ]);