Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
326f2e6
Add support for Personal Karma updates and related API parameters
fedirjh Mar 8, 2026
490e101
Add BillingCardDetails component and integrate into CardSection
fedirjh Mar 8, 2026
5cb185c
Add Personal Karma translations for multiple languages
fedirjh Mar 8, 2026
faefa73
Add SectionSubtitleHTML component and refactor subtitle rendering
fedirjh Mar 8, 2026
30c7058
Remove donation card title from translations in multiple languages
fedirjh Mar 8, 2026
94197a4
Add Personal Karma feature to SaveTheWorldPage
fedirjh Mar 8, 2026
824cf87
Refactor imports and enhance style
fedirjh Mar 8, 2026
2da801f
Merge remote-tracking branch 'upstream' into personal-karma-new-dot
fedirjh Mar 8, 2026
60c8b69
Enhance BillingCardDetails component and update translations
fedirjh Mar 8, 2026
cb1acb3
Merge remote-tracking branch 'upstream' into personal-karma-new-dot
fedirjh Mar 10, 2026
d6036ce
Add PaymentCardDetails component and update references in SaveTheWorl…
fedirjh Mar 10, 2026
e4dc325
Update personal karma copy
fedirjh Mar 11, 2026
9ab0629
Add new route and screen for adding payment card in Save The World fe…
fedirjh Mar 11, 2026
260ae39
Merge remote-tracking branch 'upstream' into personal-karma-new-dot
fedirjh Mar 11, 2026
d61d13a
Fix prettier formatting and ESLint prefer-early-return error
MelvinBot Mar 12, 2026
82bd712
Merge branch 'main' into personal-karma-new-dot
fedirjh Mar 15, 2026
d6e9015
Remove unused useCardFeeds import
MelvinBot Mar 15, 2026
68bc3fc
Merge branch 'Expensify:main' into personal-karma-new-dot
fedirjh Mar 16, 2026
c3d269d
Merge remote-tracking branch 'upstream' into personal-karma-new-dot
fedirjh Mar 23, 2026
f439482
Merge remote-tracking branch 'upstream' into personal-karma-new-dot
fedirjh Mar 23, 2026
b64503a
feat: add openSaveTheWorldPage command and corresponding API integration
fedirjh Mar 23, 2026
6739a42
Merge remote-tracking branch 'upstream' into personal-karma-new-dot
fedirjh Apr 1, 2026
d933acc
Merge branch 'Expensify:main' into personal-karma-new-dot
fedirjh Apr 1, 2026
f2d2b99
Merge branch 'Expensify:main' into personal-karma-new-dot
fedirjh Apr 6, 2026
b30b75f
chore: Remove unnecessary useMemo and update SaveTheWorldPage to util…
fedirjh Apr 6, 2026
b4dfd83
Merge branch 'Expensify:main' into personal-karma-new-dot
fedirjh Apr 6, 2026
82b996d
chore: Add "PINATM" to cspell.json dictionary
fedirjh Apr 6, 2026
be8f82d
feat: Add optimistic UI state for personal karma updates
fedirjh Apr 8, 2026
61d7ea8
feat: Integrate FullPageNotFoundView for enhanced user experience in …
fedirjh Apr 8, 2026
dc3adc8
Merge branch 'Expensify:main' into personal-karma-new-dot
fedirjh Apr 8, 2026
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 cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -554,6 +554,7 @@
"picklists",
"PINATM",
"PINGPONG",
"PINATM",
"pkill",
"Pluginfile",
"pluralrules",
Expand Down
1 change: 1 addition & 0 deletions src/CONST/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1198,6 +1198,7 @@ const CONST = {
BULK_UPLOAD_HELP_URL: 'https://help.expensify.com/articles/new-expensify/reports-and-expenses/Create-an-Expense#option-4-bulk-upload-receipts-desktop-only',
ENCRYPTION_AND_SECURITY_HELP_URL: 'https://help.expensify.com/articles/new-expensify/settings/Encryption-and-Data-Security',
PLAN_TYPES_AND_PRICING_HELP_URL: 'https://help.expensify.com/articles/new-expensify/billing-and-subscriptions/Plan-types-and-pricing',
PERSONAL_AND_CORPORATE_KARMA_HELP_URL: 'https://help.expensify.com/articles/expensify-classic/expensify-billing/Personal-and-Corporate-Karma',
COLLECT_UPGRADE_HELP_URL: 'https://help.expensify.com/Hidden/collect-upgrade',
MERGE_ACCOUNT_HELP_URL: 'https://help.expensify.com/articles/new-expensify/settings/Merge-Accounts',
CONNECT_A_BUSINESS_BANK_ACCOUNT_HELP_URL: 'https://help.expensify.com/articles/new-expensify/expenses-&-payments/Connect-a-Business-Bank-Account',
Expand Down
8 changes: 8 additions & 0 deletions src/ONYXKEYS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,9 @@ const ONYXKEYS = {
/** Store the state of the subscription */
NVP_PRIVATE_SUBSCRIPTION: 'nvp_private_subscription',

/** Store the state of Personal Karma donations */
NVP_PERSONAL_OFFSETS: 'nvp_expensify_enablePersonalOffsets',

/** Store the applied Expensify promo code */
NVP_PRIVATE_PROMO_CODE: 'nvp_private_promoCode',

Expand Down Expand Up @@ -390,6 +393,9 @@ const ONYXKEYS = {
/** Set when we are loading fresh subscription/billing data from the server */
IS_LOADING_SUBSCRIPTION_DATA: 'isLoadingSubscriptionData',

/** Set while UpdatePersonalKarma is in flight (optimistic UI for Save The World toggle) */
IS_PENDING_UPDATE_PERSONAL_KARMA: 'isPendingUpdatePersonalKarma',

/** Set whether we are loading the search filters card data */
IS_SEARCH_FILTERS_CARD_DATA_LOADED: 'isSearchFiltersCardDataLoaded',

Expand Down Expand Up @@ -1375,6 +1381,7 @@ type OnyxValuesMapping = {
[ONYXKEYS.NVP_DISMISSED_REFERRAL_BANNERS]: OnyxTypes.DismissedReferralBanners;
[ONYXKEYS.NVP_HAS_SEEN_TRACK_TRAINING]: boolean;
[ONYXKEYS.NVP_PRIVATE_SUBSCRIPTION]: OnyxTypes.PrivateSubscription;
[ONYXKEYS.NVP_PERSONAL_OFFSETS]: boolean;
[ONYXKEYS.NVP_PRIVATE_PROMO_CODE]: string | null;
[ONYXKEYS.NVP_PRIVATE_PROMO_DISCOUNT]: OnyxTypes.PrivatePromoDiscount | null;
[ONYXKEYS.NVP_PRIVATE_PROMO_CODE_VALID_BILLING_CYCLES]: number | null;
Expand Down Expand Up @@ -1405,6 +1412,7 @@ type OnyxValuesMapping = {
[ONYXKEYS.IS_LOADING_POLICY_CODING_RULES_PREVIEW]: boolean;
[ONYXKEYS.IS_SEARCH_FILTERS_CARD_DATA_LOADED]: boolean;
[ONYXKEYS.IS_LOADING_SUBSCRIPTION_DATA]: boolean;
[ONYXKEYS.IS_PENDING_UPDATE_PERSONAL_KARMA]: boolean;
[ONYXKEYS.IS_SEARCH_PAGE_DATA_LOADED]: boolean;
[ONYXKEYS.IS_LOADING_REPORT_DATA]: boolean;
[ONYXKEYS.IS_TEST_TOOLS_MODAL_OPEN]: boolean;
Expand Down
1 change: 1 addition & 0 deletions src/ROUTES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -807,6 +807,7 @@ const ROUTES = {
},

SETTINGS_SAVE_THE_WORLD: 'settings/teachersunite',
SETTINGS_SAVE_THE_WORLD_ADD_PAYMENT_CARD: 'settings/teachersunite/add-payment-card',

NEW: 'new',
NEW_CHAT: 'new/chat',
Expand Down
1 change: 1 addition & 0 deletions src/SCREENS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,7 @@ const SCREENS = {
},
SAVE_THE_WORLD: {
ROOT: 'SaveTheWorld_Root',
ADD_PAYMENT_CARD: 'SaveTheWorld_Add_Payment_Card',
},
RIGHT_MODAL: {
SETTINGS: 'Settings',
Expand Down
58 changes: 58 additions & 0 deletions src/components/PaymentCardDetails.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import type {ReactNode} from 'react';
import React from 'react';
import type {StyleProp, ViewStyle} from 'react-native';
import {View} from 'react-native';
import {useMemoizedLazyExpensifyIcons} from '@hooks/useLazyAsset';
import useLocalize from '@hooks/useLocalize';
import useTheme from '@hooks/useTheme';
import useThemeStyles from '@hooks/useThemeStyles';
import DateUtils from '@libs/DateUtils';
import {getPaymentMethodDescription} from '@libs/PaymentUtils';
import type Fund from '@src/types/onyx/Fund';
import {isEmptyObject} from '@src/types/utils/EmptyObject';
import Icon from './Icon';
import Text from './Text';

type PaymentCardDetailsProps = {
/** The billing card data */
card?: Fund;

/** Optional right side content (e.g. action menu) */
rightComponent?: ReactNode;

/** Optional wrapper styles */
wrapperStyle?: StyleProp<ViewStyle>;
};

function PaymentCardDetails({card, rightComponent, wrapperStyle}: PaymentCardDetailsProps) {
const styles = useThemeStyles();
const theme = useTheme();
const {translate} = useLocalize();
const icons = useMemoizedLazyExpensifyIcons(['CreditCard']);

const cardMonth = DateUtils.getMonthNames()[(card?.accountData?.cardMonth ?? 1) - 1];

if (!card?.accountData || isEmptyObject(card?.accountData)) {
return null;
}

return (
<View style={[styles.flexRow, styles.flex1, styles.gap3, wrapperStyle]}>
<Icon
src={icons.CreditCard}
additionalStyles={styles.subscriptionAddedCardIcon}
fill={theme.icon}
medium
/>
<View style={styles.flex1}>
<Text style={styles.textStrong}>{getPaymentMethodDescription(card.accountType, card.accountData, translate)}</Text>
<Text style={styles.mutedNormalTextLabel}>
{translate('subscription.cardSection.cardInfo', card.accountData.addressName ?? '', `${cardMonth} ${card.accountData.cardYear ?? ''}`, card.accountData.currency ?? '')}
</Text>
</View>
{rightComponent}
</View>
);
}

export default PaymentCardDetails;
37 changes: 37 additions & 0 deletions src/components/SectionSubtitleHTML.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import type {ComponentProps} from 'react';
import React from 'react';
import type {StyleProp, ViewStyle} from 'react-native';
import {View} from 'react-native';
import useThemeStyles from '@hooks/useThemeStyles';
import RenderHTML from './RenderHTML';

type SectionSubtitleHTMLProps = {
/** Subtitle HTML content */
html: string;

/** Whether the subtitle text should be muted */
subtitleMuted?: boolean;

/** Optional link press handler */
onLinkPress?: ComponentProps<typeof RenderHTML>['onLinkPress'];

/** Optional wrapper style */
wrapperStyle?: StyleProp<ViewStyle>;
};

function SectionSubtitleHTML({html, subtitleMuted = false, onLinkPress, wrapperStyle}: SectionSubtitleHTMLProps) {
const styles = useThemeStyles();
const shouldWrapWithMutedText = subtitleMuted && !/<\s*muted-text(?:-[a-z]+)?(?:\s|>)/.test(html);
const subtitleHTML = shouldWrapWithMutedText ? `<muted-text>${html}</muted-text>` : html;

return (
<View style={[styles.flexRow, styles.w100, styles.mt2, styles.renderHTML, wrapperStyle]}>
<RenderHTML
html={subtitleHTML}
onLinkPress={onLinkPress}
/>
</View>
);
}

export default SectionSubtitleHTML;
5 changes: 5 additions & 0 deletions src/languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7985,6 +7985,11 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc
'Schließ dich Expensify.org an, um Ungerechtigkeit auf der ganzen Welt zu beseitigen. Die aktuelle „Teachers Unite“-Kampagne unterstützt Lehrkräfte überall, indem sie die Kosten für grundlegende Schulmaterialien teilt.',
iKnowATeacher: 'Ich kenne eine Lehrkraft',
iAmATeacher: 'Ich bin Lehrer',
personalKarma: {
title: 'Persönliches Karma aktivieren',
description: 'Spende 1 $ an Expensify.org für je 500 $, die du jeden Monat ausgibst',
stopDonationsPrompt: 'Bist du sicher, dass du nicht mehr an Expensify.org spenden möchtest?',
},
getInTouch: 'Ausgezeichnet! Bitte teile ihre Kontaktdaten, damit wir sie erreichen können.',
introSchoolPrincipal: 'Einführung für Ihre Schulleitung',
schoolPrincipalVerifyExpense:
Expand Down
5 changes: 5 additions & 0 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7945,6 +7945,11 @@ const translations = {
'Join Expensify.org in eliminating injustice around the world. The current "Teachers Unite" campaign supports educators everywhere by splitting the costs of essential school supplies.',
iKnowATeacher: 'I know a teacher',
iAmATeacher: 'I am a teacher',
personalKarma: {
title: 'Enable Personal Karma',
description: 'Donate $1 to Expensify.org for every $500 you spend each month',
stopDonationsPrompt: 'Are you sure you want to stop donating to Expensify.org?',
},
getInTouch: 'Excellent! Please share their information so we can get in touch with them.',
introSchoolPrincipal: 'Intro to your school principal',
schoolPrincipalVerifyExpense:
Expand Down
5 changes: 5 additions & 0 deletions src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8261,6 +8261,11 @@ ${amount} para ${merchant} - ${date}`,
joinExpensifyOrg: 'Únete a Expensify.org para eliminar la injusticia en todo el mundo y ayuda a los profesores a dividir sus gastos para las aulas más necesitadas.',
iKnowATeacher: 'Yo conozco a un profesor',
iAmATeacher: 'Soy profesor',
personalKarma: {
title: 'Activar Karma personal',
description: 'Dona $1 a Expensify.org por cada $500 que gastes cada mes',
stopDonationsPrompt: '¿Seguro que quieres dejar de donar a Expensify.org?',
},
getInTouch: '¡Excelente! Por favor, comparte tu información para que podamos ponernos en contacto con ellos.',
introSchoolPrincipal: 'Introducción al director del colegio',
schoolPrincipalVerifyExpense:
Expand Down
5 changes: 5 additions & 0 deletions src/languages/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8008,6 +8008,11 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e
'Rejoignez Expensify.org pour éliminer l’injustice dans le monde entier. La campagne actuelle « Teachers Unite » soutient les enseignants partout en partageant le coût des fournitures scolaires essentielles.',
iKnowATeacher: 'Je connais un enseignant',
iAmATeacher: 'Je suis enseignant',
personalKarma: {
title: 'Activer le Karma personnel',
description: 'Faites un don de 1 $ à Expensify.org pour chaque tranche de 500 $ dépensée chaque mois',
stopDonationsPrompt: 'Êtes-vous sûr de vouloir arrêter de faire des dons à Expensify.org ?',
},
getInTouch: 'Excellent ! Veuillez partager leurs coordonnées afin que nous puissions les contacter.',
introSchoolPrincipal: 'Présentation de la direction de votre école',
schoolPrincipalVerifyExpense:
Expand Down
5 changes: 5 additions & 0 deletions src/languages/it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7974,6 +7974,11 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`,
'Unisciti a Expensify.org per eliminare le ingiustizie in tutto il mondo. L’attuale campagna “Teachers Unite” supporta gli insegnanti ovunque, dividendo i costi delle forniture scolastiche essenziali.',
iKnowATeacher: 'Conosco un insegnante',
iAmATeacher: 'Sono un insegnante',
personalKarma: {
title: 'Attiva il Karma personale',
description: 'Dona 1 $ a Expensify.org per ogni 500 $ che spendi ogni mese',
stopDonationsPrompt: 'Sei sicuro di voler smettere di donare a Expensify.org?',
},
getInTouch: 'Eccellente! Condividi le loro informazioni così possiamo metterci in contatto con loro.',
introSchoolPrincipal: 'Introduzione al dirigente scolastico',
schoolPrincipalVerifyExpense:
Expand Down
5 changes: 5 additions & 0 deletions src/languages/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7877,6 +7877,11 @@ ${reportName}
'Expensify.org に参加して、世界中の不公正の解消に取り組みましょう。現在実施中の「Teachers Unite」キャンペーンでは、必需の学用品の費用を分担することで、すべての教育者を支援しています。',
iKnowATeacher: '私は先生を知っています',
iAmATeacher: '私は教師です',
personalKarma: {
title: 'パーソナルカルマを有効にする',
description: '毎月の支出500ドルごとに1ドルを Expensify.org に寄付します',
stopDonationsPrompt: 'Expensify.org への寄付をやめてもよろしいですか?',
},
getInTouch: '素晴らしいです!その方の情報を共有していただければ、こちらからご連絡いたします。',
introSchoolPrincipal: '学校校長への紹介',
schoolPrincipalVerifyExpense: 'Expensify.org は、低所得世帯の生徒がより良い学習体験を得られるよう、必要な学用品の費用を分担します。あなたの経費は、校長により確認されます。',
Expand Down
5 changes: 5 additions & 0 deletions src/languages/nl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7951,6 +7951,11 @@ Voeg meer bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`,
'Sluit je aan bij Expensify.org om onrecht overal ter wereld uit te bannen. De huidige campagne “Teachers Unite” ondersteunt onderwijzers overal door de kosten van essentiële schoolbenodigdheden te delen.',
iKnowATeacher: 'Ik ken een leraar',
iAmATeacher: 'Ik ben een leraar',
personalKarma: {
title: 'Persoonlijke karma inschakelen',
description: 'Doneer $1 aan Expensify.org voor elke $500 die je elke maand uitgeeft',
stopDonationsPrompt: 'Weet je zeker dat je wilt stoppen met doneren aan Expensify.org?',
},
getInTouch: 'Uitstekend! Deel hun gegevens zodat we contact met hen kunnen opnemen.',
introSchoolPrincipal: 'Introductie bij je schooldirecteur',
schoolPrincipalVerifyExpense:
Expand Down
5 changes: 5 additions & 0 deletions src/languages/pl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7940,6 +7940,11 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`,
'Dołącz do Expensify.org w eliminowaniu niesprawiedliwości na całym świecie. Obecna kampania „Teachers Unite” wspiera nauczycieli wszędzie, dzieląc koszty niezbędnych przyborów szkolnych.',
iKnowATeacher: 'Znam nauczyciela',
iAmATeacher: 'Jestem nauczycielem',
personalKarma: {
title: 'Włącz osobistą karmę',
description: 'Przekaż 1 USD na Expensify.org za każde 500 USD wydane w miesiącu',
stopDonationsPrompt: 'Czy na pewno chcesz przestać przekazywać darowizny na rzecz Expensify.org?',
},
getInTouch: 'Świetnie! Udostępnij ich dane kontaktowe, abyśmy mogli się z nimi skontaktować.',
introSchoolPrincipal: 'Wprowadzenie dla dyrektora szkoły',
schoolPrincipalVerifyExpense:
Expand Down
5 changes: 5 additions & 0 deletions src/languages/pt-BR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7944,6 +7944,11 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`,
'Junte-se à Expensify.org para eliminar as injustiças ao redor do mundo. A atual campanha “Teachers Unite” apoia educadores em todos os lugares ao dividir os custos de materiais escolares essenciais.',
iKnowATeacher: 'Eu conheço um professor',
iAmATeacher: 'Sou professor(a)',
personalKarma: {
title: 'Ativar Karma pessoal',
description: 'Doe US$ 1 para Expensify.org a cada US$ 500 que você gastar por mês',
stopDonationsPrompt: 'Tem certeza de que deseja parar de doar para Expensify.org?',
},
getInTouch: 'Excelente! Compartilhe as informações deles para que possamos entrar em contato.',
introSchoolPrincipal: 'Apresentação ao diretor da sua escola',
schoolPrincipalVerifyExpense:
Expand Down
5 changes: 5 additions & 0 deletions src/languages/zh-hans.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7739,6 +7739,11 @@ ${reportName}
joinExpensifyOrg: '加入 Expensify.org,一起消除世界各地的不公现象。当前的“教师联合”活动通过分担基本学习用品的费用来支持全世界的教育工作者。',
iKnowATeacher: '我认识一位老师',
iAmATeacher: '我是老师',
personalKarma: {
title: '启用个人 Karma',
description: '您每月每消费 500 美元,就向 Expensify.org 捐赠 1 美元',
stopDonationsPrompt: '确定要停止向 Expensify.org 捐款吗?',
},
getInTouch: '太好了!请分享他们的联系方式,以便我们与他们取得联系。',
introSchoolPrincipal: '向你们学校校长的介绍',
schoolPrincipalVerifyExpense: 'Expensify.org 会分摊基本学习用品的费用,让来自低收入家庭的学生能够拥有更好的学习体验。我们会请你的校长核实你的报销。',
Expand Down
5 changes: 5 additions & 0 deletions src/libs/API/parameters/UpdatePersonalKarmaParams.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
type UpdatePersonalKarmaParams = {
enabled: boolean;
};

export default UpdatePersonalKarmaParams;
1 change: 1 addition & 0 deletions src/libs/API/parameters/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,7 @@ export type {default as UpdateSubscriptionTypeParams} from './UpdateSubscription
export type {default as SignUpUserParams} from './SignUpUserParams';
export type {default as UpdateSubscriptionAutoRenewParams} from './UpdateSubscriptionAutoRenewParams';
export type {default as UpdateSubscriptionAddNewUsersAutomaticallyParams} from './UpdateSubscriptionAddNewUsersAutomaticallyParams';
export type {default as UpdatePersonalKarmaParams} from './UpdatePersonalKarmaParams';
export type {default as GenerateSpotnanaTokenParams} from './GenerateSpotnanaTokenParams';
export type {default as UpdateSubscriptionSizeParams} from './UpdateSubscriptionSizeParams';
export type {default as SetPromoCodeParams} from './SetPromoCodeParams';
Expand Down
4 changes: 4 additions & 0 deletions src/libs/API/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,7 @@ const WRITE_COMMANDS = {
SIGN_UP_USER: 'SignUpUser',
UPDATE_SUBSCRIPTION_AUTO_RENEW: 'UpdateSubscriptionAutoRenew',
UPDATE_SUBSCRIPTION_ADD_NEW_USERS_AUTOMATICALLY: 'UpdateSubscriptionAddNewUsersAutomatically',
UPDATE_PERSONAL_KARMA: 'UpdatePersonalKarma',
UPDATE_SUBSCRIPTION_SIZE: 'UpdateSubscriptionSize',
REPORT_EXPORT: 'Report_Export',
MARK_AS_EXPORTED: 'MarkAsExported',
Expand Down Expand Up @@ -960,6 +961,7 @@ type WriteCommandParameters = {
[WRITE_COMMANDS.SIGN_UP_USER]: Parameters.SignUpUserParams;
[WRITE_COMMANDS.UPDATE_SUBSCRIPTION_AUTO_RENEW]: Parameters.UpdateSubscriptionAutoRenewParams;
[WRITE_COMMANDS.UPDATE_SUBSCRIPTION_ADD_NEW_USERS_AUTOMATICALLY]: Parameters.UpdateSubscriptionAddNewUsersAutomaticallyParams;
[WRITE_COMMANDS.UPDATE_PERSONAL_KARMA]: Parameters.UpdatePersonalKarmaParams;
[WRITE_COMMANDS.UPDATE_SUBSCRIPTION_SIZE]: Parameters.UpdateSubscriptionSizeParams;
[WRITE_COMMANDS.SET_PROMO_CODE]: Parameters.SetPromoCodeParams;
[WRITE_COMMANDS.REQUEST_TAX_EXEMPTION]: null;
Expand Down Expand Up @@ -1236,6 +1238,7 @@ const READ_COMMANDS = {
OPEN_DUPLICATE_POLICY_PAGE: 'OpenDuplicatePolicyPage',
OPEN_POLICY_INITIAL_PAGE: 'OpenPolicyInitialPage',
OPEN_SUBSCRIPTION_PAGE: 'OpenSubscriptionPage',
OPEN_SAVE_THE_WORLD_PAGE: 'OpenSaveTheWorldPage',
OPEN_DRAFT_DISTANCE_EXPENSE: 'OpenDraftDistanceExpense',
START_ISSUE_NEW_CARD_FLOW: 'StartIssueNewCardFlow',
OPEN_CARD_DETAILS_PAGE: 'OpenCardDetailsPage',
Expand Down Expand Up @@ -1326,6 +1329,7 @@ type ReadCommandParameters = {
[READ_COMMANDS.OPEN_POLICY_INITIAL_PAGE]: Parameters.OpenPolicyInitialPageParams;
[READ_COMMANDS.OPEN_POLICY_RECEIPT_PARTNERS_PAGE]: Parameters.OpenPolicyReceiptPartnersPageParams;
[READ_COMMANDS.OPEN_SUBSCRIPTION_PAGE]: null;
[READ_COMMANDS.OPEN_SAVE_THE_WORLD_PAGE]: null;
[READ_COMMANDS.OPEN_DRAFT_DISTANCE_EXPENSE]: null;
[READ_COMMANDS.OPEN_SEARCH_CARD_FILTERS_PAGE]: null;
[READ_COMMANDS.START_ISSUE_NEW_CARD_FLOW]: Parameters.StartIssueNewCardFlowParams;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -372,6 +372,7 @@ const NewTaskModalStackNavigator = createModalStackNavigator<NewTaskNavigatorPar

const NewTeachersUniteNavigator = createModalStackNavigator<TeachersUniteNavigatorParamList>({
[SCREENS.SAVE_THE_WORLD.ROOT]: () => require<ReactComponentModule>('../../../../pages/TeachersUnite/SaveTheWorldPage').default,
[SCREENS.SAVE_THE_WORLD.ADD_PAYMENT_CARD]: () => require<ReactComponentModule>('../../../../pages/settings/Subscription/PaymentCard').default,
[SCREENS.I_KNOW_A_TEACHER]: () => require<ReactComponentModule>('../../../../pages/TeachersUnite/KnowATeacherPage').default,
[SCREENS.INTRO_SCHOOL_PRINCIPAL]: () => require<ReactComponentModule>('../../../../pages/TeachersUnite/ImTeacherPage').default,
[SCREENS.I_AM_A_TEACHER]: () => require<ReactComponentModule>('../../../../pages/TeachersUnite/ImTeacherPage').default,
Expand Down
Loading
Loading