Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/CONST/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7724,6 +7724,7 @@ const CONST = {
ACCOUNT_SWITCHER: 'accountSwitcher',
SCAN_TEST_DRIVE_CONFIRMATION: 'scanTestDriveConfirmation',
MULTI_SCAN_EDUCATIONAL_MODAL: 'multiScanEducationalModal',
GPS_TOOLTIP: 'gpsTooltip',
},
CHANGE_POLICY_TRAINING_MODAL: 'changePolicyModal',
SMART_BANNER_HEIGHT: 152,
Expand Down
4 changes: 0 additions & 4 deletions src/ONYXKEYS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -286,9 +286,6 @@ const ONYXKEYS = {
/** This NVP contains personal expense rules */
NVP_EXPENSE_RULES: 'nvp_expensify_expenseRules',

/** A timestamp of when the user created a GPS expense for the first time */
NVP_FIRST_CREATED_GPS_EXPENSE_DATE_NEW_DOT: 'nvp_firstCreatedGpsExpenseDateNewDot',

/** Plaid data (access tokens, bank accounts ...) */
PLAID_DATA: 'plaidData',

Expand Down Expand Up @@ -1383,7 +1380,6 @@ type OnyxValuesMapping = {
[ONYXKEYS.HYBRID_APP]: OnyxTypes.HybridApp;
[ONYXKEYS.NVP_CSV_EXPORT_LAYOUTS]: Record<string, OnyxTypes.ExportTemplate>;
[ONYXKEYS.NVP_EXPENSE_RULES]: OnyxTypes.ExpenseRule[];
[ONYXKEYS.NVP_FIRST_CREATED_GPS_EXPENSE_DATE_NEW_DOT]: string;
[ONYXKEYS.NVP_LAST_DISTANCE_EXPENSE_TYPE]: DistanceExpenseType;
[ONYXKEYS.NVP_REPORT_LAYOUT_GROUP_BY]: string;
[ONYXKEYS.HAS_DENIED_CONTACT_IMPORT_PROMPT]: boolean | undefined;
Expand Down
20 changes: 18 additions & 2 deletions src/components/ProductTrainingContext/TOOLTIPS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,17 @@ import {dismissProductTraining} from '@libs/actions/Welcome';
import CONST from '@src/CONST';
import type {TranslationPaths} from '@src/languages/types';

const {CONCIERGE_LHN_GBR, RENAME_SAVED_SEARCH, SCAN_TEST_TOOLTIP, SCAN_TEST_TOOLTIP_MANAGER, SCAN_TEST_CONFIRMATION, OUTSTANDING_FILTER, ACCOUNT_SWITCHER, SCAN_TEST_DRIVE_CONFIRMATION} =
CONST.PRODUCT_TRAINING_TOOLTIP_NAMES;
const {
CONCIERGE_LHN_GBR,
RENAME_SAVED_SEARCH,
SCAN_TEST_TOOLTIP,
SCAN_TEST_TOOLTIP_MANAGER,
SCAN_TEST_CONFIRMATION,
OUTSTANDING_FILTER,
ACCOUNT_SWITCHER,
SCAN_TEST_DRIVE_CONFIRMATION,
GPS_TOOLTIP,
} = CONST.PRODUCT_TRAINING_TOOLTIP_NAMES;

type ProductTrainingTooltipName = Exclude<ValueOf<typeof CONST.PRODUCT_TRAINING_TOOLTIP_NAMES>, typeof CONST.PRODUCT_TRAINING_TOOLTIP_NAMES.MULTI_SCAN_EDUCATIONAL_MODAL>;

Expand Down Expand Up @@ -85,6 +94,13 @@ const TOOLTIPS: Record<ProductTrainingTooltipName, TooltipData> = {
priority: 1200,
shouldShow: () => true,
},
[GPS_TOOLTIP]: {
content: 'productTrainingTooltip.gpsTooltip',
onHideTooltip: (isDismissedUsingCloseButton = false) => dismissProductTraining(GPS_TOOLTIP, isDismissedUsingCloseButton),
name: GPS_TOOLTIP,
priority: 800,
shouldShow: () => true,
},
};

export default TOOLTIPS;
Expand Down
1 change: 1 addition & 0 deletions src/components/ProductTrainingContext/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import {View} from 'react-native';
import Button from '@components/Button';
import Icon from '@components/Icon';
import * as Expensicons from '@components/Icon/Expensicons';

Check warning on line 8 in src/components/ProductTrainingContext/index.tsx

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

'@components/Icon/Expensicons' import is restricted from being used by a pattern. Direct imports from Icon/Expensicons are deprecated. Please use lazy loading hooks instead. Use `useMemoizedLazyExpensifyIcons` from @hooks/useLazyAsset. See docs/LAZY_ICONS_AND_ILLUSTRATIONS.md for details

Check warning on line 8 in src/components/ProductTrainingContext/index.tsx

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

'@components/Icon/Expensicons' import is restricted from being used. Direct imports from @components/Icon/Expensicons are deprecated. Please use lazy loading hooks instead. Use `useMemoizedLazyExpensifyIcons` from @hooks/useLazyAsset. See docs/LAZY_ICONS_AND_ILLUSTRATIONS.md for details
import PressableWithoutFeedback from '@components/Pressable/PressableWithoutFeedback';
import RenderHTML from '@components/RenderHTML';
import {useMemoizedLazyExpensifyIcons} from '@hooks/useLazyAsset';
Expand Down Expand Up @@ -153,6 +153,7 @@
tooltipName !== CONST.PRODUCT_TRAINING_TOOLTIP_NAMES.SCAN_TEST_TOOLTIP_MANAGER &&
tooltipName !== CONST.PRODUCT_TRAINING_TOOLTIP_NAMES.SCAN_TEST_CONFIRMATION &&
tooltipName !== CONST.PRODUCT_TRAINING_TOOLTIP_NAMES.SCAN_TEST_DRIVE_CONFIRMATION &&
tooltipName !== CONST.PRODUCT_TRAINING_TOOLTIP_NAMES.GPS_TOOLTIP &&
isModalVisible
) {
return false;
Expand Down
2 changes: 1 addition & 1 deletion src/languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7858,6 +7858,7 @@ Fordere Spesendetails wie Belege und Beschreibungen an, lege Limits und Standard
},
outstandingFilter: '<tooltip>Nach Ausgaben filtern,\ndie <strong>genehmigt werden müssen</strong></tooltip>',
scanTestDriveTooltip: '<tooltip>Quittung senden, um\n<strong>die Probefahrt abzuschließen!</strong></tooltip>',
gpsTooltip: '<tooltip>GPS-Verfolgung läuft! Wenn du fertig bist, stoppe die Verfolgung unten.</tooltip>',
},
discardChangesConfirmation: {
title: 'Änderungen verwerfen?',
Expand Down Expand Up @@ -8036,7 +8037,6 @@ Hier ist ein *Testbeleg*, um dir zu zeigen, wie es funktioniert:`,
domainAdmins: 'Domain-Admins',
},
gps: {
tooltip: 'GPS-Verfolgung läuft! Wenn du fertig bist, stoppe die Verfolgung unten.',
disclaimer: 'Benutze GPS, um eine Ausgabe von deiner Reise zu erstellen. Tippe unten auf „Start“, um mit der Aufzeichnung zu beginnen.',
error: {failedToStart: 'Standortverfolgung konnte nicht gestartet werden.', failedToGetPermissions: 'Die erforderlichen Standortberechtigungen konnten nicht abgerufen werden.'},
trackingDistance: 'Strecke wird verfolgt...',
Expand Down
2 changes: 1 addition & 1 deletion src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7110,7 +7110,6 @@ const translations = {
},
},
gps: {
tooltip: "GPS tracking in progress! When you're done, stop tracking below.",
disclaimer: 'Use GPS to create an expense from your journey. Tap Start below to begin tracking.',
error: {
failedToStart: 'Failed to start location tracking.',
Expand Down Expand Up @@ -7796,6 +7795,7 @@ const translations = {
},
outstandingFilter: '<tooltip>Filter for expenses\nthat <strong>need approval</strong></tooltip>',
scanTestDriveTooltip: '<tooltip>Send this receipt to\n<strong>complete the test drive!</strong></tooltip>',
gpsTooltip: "<tooltip>GPS tracking in progress! When you're done, stop tracking below.</tooltip>",
},
discardChangesConfirmation: {
title: 'Discard changes?',
Expand Down
2 changes: 1 addition & 1 deletion src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7954,6 +7954,7 @@ ${amount} para ${merchant} - ${date}`,
},
outstandingFilter: '<tooltip>Filtra los gastos\nque <strong>necesitan aprobación</strong></tooltip>',
scanTestDriveTooltip: '<tooltip>¡Envía este recibo para\n<strong>completar la prueba</strong>!</tooltip>',
gpsTooltip: '<tooltip>¡Seguimiento por GPS en curso! Cuando termines, detén el seguimiento a continuación.</tooltip>',
},
discardChangesConfirmation: {
title: '¿Descartar cambios?',
Expand Down Expand Up @@ -8138,7 +8139,6 @@ ${amount} para ${merchant} - ${date}`,
},
},
gps: {
tooltip: '¡Seguimiento por GPS en curso! Cuando termines, detén el seguimiento a continuación.',
disclaimer: 'Utiliza el GPS para crear un gasto a partir de tu trayecto. Toca Iniciar a continuación para comenzar el seguimiento.',
error: {
failedToStart: 'No se pudo iniciar el seguimiento de la ubicación.',
Expand Down
2 changes: 1 addition & 1 deletion src/languages/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7868,6 +7868,7 @@ Exigez des informations de dépense comme les reçus et les descriptions, défin
},
outstandingFilter: '<tooltip>Filtrer les dépenses\nqui <strong>doivent être approuvées</strong></tooltip>',
scanTestDriveTooltip: '<tooltip>Envoyez ce reçu pour\n<strong>terminer l’essai !</strong></tooltip>',
gpsTooltip: '<tooltip>Suivi GPS en cours ! Quand vous avez terminé, arrêtez le suivi ci-dessous.</tooltip>',
},
discardChangesConfirmation: {
title: 'Annuler les modifications ?',
Expand Down Expand Up @@ -8042,7 +8043,6 @@ Voici un *reçu test* pour vous montrer comment cela fonctionne :`,
domainAdmins: 'Administrateurs de domaine',
},
gps: {
tooltip: 'Suivi GPS en cours ! Quand vous avez terminé, arrêtez le suivi ci-dessous.',
disclaimer: 'Utilisez le GPS pour créer une dépense à partir de votre trajet. Touchez Démarrer ci-dessous pour commencer le suivi.',
error: {failedToStart: 'Impossible de démarrer le suivi de la localisation.', failedToGetPermissions: 'Échec de l’obtention des autorisations de localisation requises.'},
trackingDistance: 'Suivi de la distance...',
Expand Down
2 changes: 1 addition & 1 deletion src/languages/it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7848,6 +7848,7 @@ Richiedi dettagli di spesa come ricevute e descrizioni, imposta limiti e valori
},
outstandingFilter: '<tooltip>Filtra per le spese\nche <strong>necessitano di approvazione</strong></tooltip>',
scanTestDriveTooltip: '<tooltip>Invia questa ricevuta per\n<strong>completare la prova!</strong></tooltip>',
gpsTooltip: '<tooltip>Monitoraggio GPS in corso! Quando hai finito, interrompi il monitoraggio qui sotto.</tooltip>',
},
discardChangesConfirmation: {
title: 'Scartare le modifiche?',
Expand Down Expand Up @@ -8024,7 +8025,6 @@ Ecco una *ricevuta di prova* per mostrarti come funziona:`,
domainAdmins: 'Amministratori di dominio',
},
gps: {
tooltip: 'Monitoraggio GPS in corso! Quando hai finito, interrompi il monitoraggio qui sotto.',
disclaimer: 'Usa il GPS per creare una spesa dal tuo viaggio. Tocca Avvia qui sotto per iniziare il tracciamento.',
error: {failedToStart: 'Impossibile avviare il tracciamento della posizione.', failedToGetPermissions: 'Impossibile ottenere le autorizzazioni di localizzazione richieste.'},
trackingDistance: 'Tracciamento distanza...',
Expand Down
2 changes: 1 addition & 1 deletion src/languages/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7786,6 +7786,7 @@ ${reportName}
},
outstandingFilter: '<tooltip><strong>承認が必要</strong>な経費を絞り込む</tooltip>',
scanTestDriveTooltip: '<tooltip>このレシートを送信して\n<strong>試用を完了しましょう!</strong></tooltip>',
gpsTooltip: '<tooltip>GPS 追跡を進行中です!完了したら、下で追跡を停止してください。</tooltip>',
},
discardChangesConfirmation: {
title: '変更を破棄しますか?',
Expand Down Expand Up @@ -7958,7 +7959,6 @@ Expensify の使い方をお見せするための*テストレシート*がこ
domainAdmins: 'ドメイン管理者',
},
gps: {
tooltip: 'GPS 追跡を進行中です!完了したら、下で追跡を停止してください。',
disclaimer: '移動中の経路から、GPS を使って経費を作成しましょう。下の「開始」をタップして追跡を始めてください。',
error: {failedToStart: '位置情報の追跡を開始できませんでした。', failedToGetPermissions: '必要な位置情報の権限を取得できませんでした。'},
trackingDistance: '距離を追跡中...',
Expand Down
2 changes: 1 addition & 1 deletion src/languages/nl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7828,6 +7828,7 @@ Vraag verplichte uitgavedetails zoals bonnetjes en beschrijvingen, stel limieten
},
outstandingFilter: '<tooltip>Filter voor uitgaven\ndie <strong>goedgekeurd moeten worden</strong></tooltip>',
scanTestDriveTooltip: '<tooltip>Stuur dit bonnetje om\n<strong>de proefrit te voltooien!</strong></tooltip>',
gpsTooltip: '<tooltip>GPS-tracking bezig! Als je klaar bent, stop dan hieronder met tracken.</tooltip>',
},
discardChangesConfirmation: {
title: 'Wijzigingen negeren?',
Expand Down Expand Up @@ -8005,7 +8006,6 @@ Hier is een *testbon* om je te laten zien hoe het werkt:`,
domainAdmins: 'Domeinbeheerders',
},
gps: {
tooltip: 'GPS-tracking bezig! Als je klaar bent, stop dan hieronder met tracken.',
disclaimer: 'Gebruik GPS om een uitgave van je reis te maken. Tik hieronder op Start om het volgen te beginnen.',
error: {failedToStart: 'Locatiebijhouding starten is mislukt.', failedToGetPermissions: 'Verkrijgen van vereiste locatierechten mislukt.'},
trackingDistance: 'Afstand bijhouden...',
Expand Down
2 changes: 1 addition & 1 deletion src/languages/pl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7816,6 +7816,7 @@ Wymagaj szczegółów wydatków, takich jak paragony i opisy, ustawiaj limity i
},
outstandingFilter: '<tooltip>Filtruj wydatki,\nktóre <strong>wymagają zatwierdzenia</strong></tooltip>',
scanTestDriveTooltip: '<tooltip>Wyślij ten paragon, aby\n<strong>ukończyć jazdę próbną!</strong></tooltip>',
gpsTooltip: '<tooltip>Śledzenie GPS w toku! Gdy skończysz, zatrzymaj śledzenie poniżej.</tooltip>',
},
discardChangesConfirmation: {
title: 'Odrzucić zmiany?',
Expand Down Expand Up @@ -7990,7 +7991,6 @@ Oto *paragon testowy*, który pokazuje, jak to działa:`,
domainAdmins: 'Administratorzy domeny',
},
gps: {
tooltip: 'Śledzenie GPS w toku! Gdy skończysz, zatrzymaj śledzenie poniżej.',
disclaimer: 'Użyj GPS, aby utworzyć wydatek z Twojej podróży. Stuknij „Start” poniżej, aby rozpocząć śledzenie.',
error: {failedToStart: 'Nie udało się uruchomić śledzenia lokalizacji.', failedToGetPermissions: 'Nie udało się uzyskać wymaganych uprawnień do lokalizacji.'},
trackingDistance: 'Śledzenie dystansu…',
Expand Down
2 changes: 1 addition & 1 deletion src/languages/pt-BR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7818,6 +7818,7 @@ Exija detalhes de despesas como recibos e descrições, defina limites e padrõe
},
outstandingFilter: '<tooltip>Filtrar despesas\nque <strong>precisam de aprovação</strong></tooltip>',
scanTestDriveTooltip: '<tooltip>Envie este recibo para\n<strong>concluir o test drive!</strong></tooltip>',
gpsTooltip: '<tooltip>Rastreamento por GPS em andamento! Quando terminar, pare o rastreamento abaixo.</tooltip>',
},
discardChangesConfirmation: {
title: 'Descartar alterações?',
Expand Down Expand Up @@ -7995,7 +7996,6 @@ Aqui está um *recibo de teste* para mostrar como funciona:`,
domainAdmins: 'Administradores de domínio',
},
gps: {
tooltip: 'Rastreamento por GPS em andamento! Quando terminar, pare o rastreamento abaixo.',
disclaimer: 'Use o GPS para criar uma despesa a partir da sua viagem. Toque em Iniciar abaixo para começar o rastreamento.',
error: {failedToStart: 'Falha ao iniciar o rastreamento de localização.', failedToGetPermissions: 'Falha ao obter as permissões de localização necessárias.'},
trackingDistance: 'Acompanhando a distância...',
Expand Down
2 changes: 1 addition & 1 deletion src/languages/zh-hans.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7642,6 +7642,7 @@ ${reportName}
},
outstandingFilter: '<tooltip>筛选<strong>需要批准</strong>的报销</tooltip>',
scanTestDriveTooltip: '<tooltip>发送此收据以\n<strong>完成试用体验!</strong></tooltip>',
gpsTooltip: '<tooltip>GPS 跟踪进行中!完成后,请在下方停止跟踪。</tooltip>',
},
discardChangesConfirmation: {
title: '放弃更改?',
Expand Down Expand Up @@ -7800,7 +7801,6 @@ ${reportName}
domainAdmins: '域管理员',
},
gps: {
tooltip: 'GPS 跟踪进行中!完成后,请在下方停止跟踪。',
disclaimer: '使用 GPS 根据您的行程创建报销。点击下方的“开始”以开始跟踪。',
error: {failedToStart: '启动位置跟踪失败。', failedToGetPermissions: '获取必需的位置权限失败。'},
trackingDistance: '正在跟踪距离…',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
import React, {useState} from 'react';
import React from 'react';
import {View} from 'react-native';
import Icon from '@components/Icon';
import type {OnyxEntry} from 'react-native-onyx';
import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription';
import PressableWithoutFeedback from '@components/Pressable/PressableWithoutFeedback';
import Text from '@components/Text';
import {useProductTrainingContext} from '@components/ProductTrainingContext';
import EducationalTooltip from '@components/Tooltip/EducationalTooltip';
import {useMemoizedLazyExpensifyIcons} from '@hooks/useLazyAsset';
import useLocalize from '@hooks/useLocalize';
import useOnyx from '@hooks/useOnyx';
import useTheme from '@hooks/useTheme';
import useThemeStyles from '@hooks/useThemeStyles';
import useWindowDimensions from '@hooks/useWindowDimensions';
import CONST from '@src/CONST';
import ONYXKEYS from '@src/ONYXKEYS';
import type {GpsDraftDetails} from '@src/types/onyx';

function Waypoints() {
const styles = useThemeStyles();
Expand Down Expand Up @@ -64,50 +63,23 @@ export default Waypoints;

const GPS_TOOLTIP_HORIZONTAL_PADDING = 40;

function GPSTooltip({children}: React.PropsWithChildren) {
const [hasUserClosedTooltip, setHasUserClosedTooltip] = useState(false);
const isTrackingSelector = (gpsDraftDetails: OnyxEntry<GpsDraftDetails>) => gpsDraftDetails?.isTracking;

const [gpsDraftDetails] = useOnyx(ONYXKEYS.GPS_DRAFT_DETAILS, {canBeMissing: true});
const [firstCreatedGPSExpenseDate] = useOnyx(ONYXKEYS.NVP_FIRST_CREATED_GPS_EXPENSE_DATE_NEW_DOT, {canBeMissing: true});
function GPSTooltip({children}: React.PropsWithChildren) {
const [isTracking] = useOnyx(ONYXKEYS.GPS_DRAFT_DETAILS, {canBeMissing: true, selector: isTrackingSelector});

const styles = useThemeStyles();
const {windowWidth} = useWindowDimensions();
Comment thread
GCyganek marked this conversation as resolved.
const theme = useTheme();
const {translate} = useLocalize();
const icons = useMemoizedLazyExpensifyIcons(['Close', 'Lightbulb']);

const showEducationalTooltip = !hasUserClosedTooltip && !firstCreatedGPSExpenseDate && gpsDraftDetails?.isTracking;

const renderTooltipContent = () => (
<View style={[styles.ph1, styles.pv2, styles.flexRow, styles.overflowHidden, styles.gap3, styles.alignItemsCenter]}>
<Icon
src={icons.Lightbulb}
fill={theme.tooltipHighlightText}
small
/>
<Text style={[styles.fontSizeLabel, styles.flexShrink1, styles.productTrainingTooltipText, styles.fontWeightNormal]}>{translate('gps.tooltip')}</Text>

<PressableWithoutFeedback
onPress={() => setHasUserClosedTooltip(true)}
role={CONST.ROLE.BUTTON}
accessibilityLabel={translate('common.close')}
>
<Icon
fill={theme.icon}
src={icons.Close}
extraSmall
/>
</PressableWithoutFeedback>
</View>
);
const {renderProductTrainingTooltip, shouldShowProductTrainingTooltip} = useProductTrainingContext(CONST.PRODUCT_TRAINING_TOOLTIP_NAMES.GPS_TOOLTIP, !!isTracking);

return (
<EducationalTooltip
wrapperStyle={styles.productTrainingTooltipWrapper}
shiftVertical={-12}
maxWidth={windowWidth - GPS_TOOLTIP_HORIZONTAL_PADDING}
renderTooltipContent={renderTooltipContent}
shouldRender={showEducationalTooltip}
renderTooltipContent={renderProductTrainingTooltip}
shouldRender={shouldShowProductTrainingTooltip}
>
{children}
</EducationalTooltip>
Expand Down
6 changes: 6 additions & 0 deletions src/types/onyx/DismissedProductTraining.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ const {
ACCOUNT_SWITCHER,
SCAN_TEST_DRIVE_CONFIRMATION,
MULTI_SCAN_EDUCATIONAL_MODAL,
GPS_TOOLTIP,
} = CONST.PRODUCT_TRAINING_TOOLTIP_NAMES;

/**
Expand Down Expand Up @@ -82,6 +83,11 @@ type DismissedProductTraining = {
* When user dismisses the ChangeReportPolicy feature training modal, we store the timestamp here.
*/
[CONST.CHANGE_POLICY_TRAINING_MODAL]: DismissedProductTrainingElement;

/**
* When user dismisses the GPS tooltip, we store the timestamp here.
*/
[GPS_TOOLTIP]: DismissedProductTrainingElement;
};

export default DismissedProductTraining;
4 changes: 4 additions & 0 deletions tests/utils/TestHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,10 @@ function getNvpDismissedProductTraining(): OnyxEntry<DismissedProductTraining> {
timestamp: '',
dismissedMethod: 'click',
},
[CONST.PRODUCT_TRAINING_TOOLTIP_NAMES.GPS_TOOLTIP]: {
timestamp: '',
dismissedMethod: 'click',
},
};
}

Expand Down
Loading