Skip to content

Commit 90abb68

Browse files
DylanDylannclaude
andcommitted
refactor: move IOU types from index.ts into their function files
Completes the IOU/index.ts cleanup series by relocating the 4 types defined inline and dropping the 3 type re-exports: Types inlined into their function files: - ReplaceReceipt → Receipt.ts - StartSplitBilActionParams → Split.ts - UpdateMoneyRequestData<TKey> → UpdateMoneyRequest.ts IOURequestType is the canonical CONST alias, so callers now import it directly from @src/CONST (which already exports it). Re-exports dropped from index.ts — callers updated to import directly from the actual type files: - GpsPoint → ./types/TrackExpenseTransactionParams (GPSPoint) - RequestMoneyParticipantParams → ./types/RequestMoneyParticipantParams - BaseTransactionParams → ./types/BaseTransactionParams After this PR, IOU/index.ts contains only Onyx vars and getter functions — no types, no setters. File shrinks to 235 lines. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent e8c6aa8 commit 90abb68

25 files changed

Lines changed: 80 additions & 91 deletions

src/ROUTES.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,8 @@ import type {UpperCaseCharacters} from 'type-fest/source/internal';
99
import type {MultifactorAuthenticationPromptType} from './components/MultifactorAuthentication/config/types';
1010
import type {SearchFilterKey, SearchQueryString, UserFriendlyKey} from './components/Search/types';
1111
import type CONST from './CONST';
12-
import type {IOUAction, IOUType, OdometerImageType} from './CONST';
12+
import type {IOUAction, IOURequestType, IOUType, OdometerImageType} from './CONST';
1313
import type {ReplacementReason} from './libs/actions/Card';
14-
import type {IOURequestType} from './libs/actions/IOU';
1514
import Log from './libs/Log';
1615
import type {RootNavigatorParamList} from './libs/Navigation/types';
1716
import type {ReimbursementAccountStepToOpen} from './libs/ReimbursementAccountUtils';

src/hooks/useOdometerDraftHydrator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {useEffect} from 'react';
22
import type {OnyxEntry} from 'react-native-onyx';
3-
import type {IOURequestType} from '@userActions/IOU';
43
import {hydrateOdometerDraftIntoTransaction, isOdometerDraftPendingHydration} from '@userActions/OdometerTransactionUtils';
4+
import type {IOURequestType} from '@src/CONST';
55
import CONST from '@src/CONST';
66
import ONYXKEYS from '@src/ONYXKEYS';
77
import type {OdometerDraft, Transaction} from '@src/types/onyx';

src/hooks/useResetIOUType.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import {validTransactionDraftIDsSelector} from '@selectors/TransactionDraft';
44
import {useRef} from 'react';
55
import {Keyboard} from 'react-native';
66
import type {OnyxEntry} from 'react-native-onyx';
7-
import type {IOURequestType} from '@userActions/IOU';
87
import {initMoneyRequest} from '@userActions/IOU/MoneyRequest';
8+
import type {IOURequestType} from '@src/CONST';
99
import CONST from '@src/CONST';
1010
import ONYXKEYS from '@src/ONYXKEYS';
1111
import type {Policy, Report, Transaction} from '@src/types/onyx';

src/libs/IOUUtils.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import type {OnyxEntry} from 'react-native-onyx';
22
import type {ValueOf} from 'type-fest';
3-
import type {IOUAction, IOUType} from '@src/CONST';
3+
import type {IOUAction, IOURequestType, IOUType} from '@src/CONST';
44
import CONST from '@src/CONST';
55
import ROUTES from '@src/ROUTES';
66
import type {OnyxInputOrEntry, PersonalDetails, Policy, Report, ReportAction, Transaction} from '@src/types/onyx';
77
import type {Attendee, Participant} from '@src/types/onyx/IOU';
88
import SafeString from '@src/utils/SafeString';
9-
import type {IOURequestType} from './actions/IOU';
109
import {getCurrencyUnit} from './CurrencyUtils';
1110
import Navigation from './Navigation/Navigation';
1211
import {isPaidGroupPolicy} from './PolicyUtils';

src/libs/Navigation/types.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,13 @@ import type {UpperCaseCharacters} from 'type-fest/source/internal';
44
import type {MultifactorAuthenticationPromptType} from '@components/MultifactorAuthentication/config/types';
55
import type {SearchQueryString} from '@components/Search/types';
66
import type {ReplacementReason} from '@libs/actions/Card';
7-
import type {IOURequestType} from '@libs/actions/IOU';
87
import type {SaveSearchParams} from '@libs/API/parameters';
98
import type {ReimbursementAccountStepToOpen} from '@libs/ReimbursementAccountUtils';
109
import type {AvatarSource} from '@libs/UserAvatarUtils';
1110
import type {AttachmentModalContainerModalProps} from '@pages/media/AttachmentModalScreen/types';
1211
import type RECONCILIATION_ACCOUNT_SETTINGS_TYPE from '@pages/workspace/accounting/reconciliation/constants';
12+
import type {Country, IOUAction, IOURequestType, IOUType, OdometerImageType} from '@src/CONST';
1313
import type CONST from '@src/CONST';
14-
import type {Country, IOUAction, IOUType, OdometerImageType} from '@src/CONST';
1514
import type NAVIGATORS from '@src/NAVIGATORS';
1615
import type {Route as ExpensifyRoute, Route as Routes} from '@src/ROUTES';
1716
import type SCREENS from '@src/SCREENS';

src/libs/ReceiptUploadRetryHandler/handleFileRetry.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import type * as IOU from '@userActions/IOU';
21
import type {RequestMoneyInformation} from '@userActions/IOU/MoneyRequestBuilder';
2+
import type {ReplaceReceipt} from '@userActions/IOU/Receipt';
33
import {replaceReceipt} from '@userActions/IOU/Receipt';
4+
import type {StartSplitBilActionParams} from '@userActions/IOU/Split';
45
import {startSplitBill} from '@userActions/IOU/Split';
56
import * as TrackExpense from '@userActions/IOU/TrackExpense';
67
import CONST from '@src/CONST';
@@ -12,22 +13,22 @@ export default function handleFileRetry(message: ReceiptError, file: File, dismi
1213
return;
1314
}
1415

15-
const retryParams: IOU.ReplaceReceipt | IOU.StartSplitBilActionParams | TrackExpense.CreateTrackExpenseParams | RequestMoneyInformation =
16+
const retryParams: ReplaceReceipt | StartSplitBilActionParams | TrackExpense.CreateTrackExpenseParams | RequestMoneyInformation =
1617
typeof message.retryParams === 'string'
17-
? (JSON.parse(message.retryParams) as IOU.ReplaceReceipt | IOU.StartSplitBilActionParams | TrackExpense.CreateTrackExpenseParams | RequestMoneyInformation)
18+
? (JSON.parse(message.retryParams) as ReplaceReceipt | StartSplitBilActionParams | TrackExpense.CreateTrackExpenseParams | RequestMoneyInformation)
1819
: message.retryParams;
1920

2021
switch (message.action) {
2122
case CONST.IOU.ACTION_PARAMS.REPLACE_RECEIPT: {
2223
dismissError();
23-
const replaceReceiptParams = {...retryParams} as IOU.ReplaceReceipt;
24+
const replaceReceiptParams = {...retryParams} as ReplaceReceipt;
2425
replaceReceiptParams.file = file;
2526
replaceReceipt(replaceReceiptParams);
2627
break;
2728
}
2829
case CONST.IOU.ACTION_PARAMS.START_SPLIT_BILL: {
2930
dismissError();
30-
const startSplitBillParams = {...retryParams} as IOU.StartSplitBilActionParams;
31+
const startSplitBillParams = {...retryParams} as StartSplitBilActionParams;
3132
startSplitBillParams.receipt = file;
3233
startSplitBillParams.shouldPlaySound = false;
3334
startSplitBill(startSplitBillParams);

src/libs/ReportUtils.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import type {TransactionWithOptionalSearchFields} from '@components/TransactionI
2424
import type PolicyData from '@hooks/usePolicyData/types';
2525
import type {PolicyTagList} from '@pages/workspace/tags/types';
2626
import type {ThemeColors} from '@styles/theme/types';
27-
import type {IOUAction, IOUType, OnboardingAccounting} from '@src/CONST';
27+
import type {IOUAction, IOURequestType, IOUType, OnboardingAccounting} from '@src/CONST';
2828
import CONST, {TASK_TO_FEATURE} from '@src/CONST';
2929
import type {ParentNavigationSummaryParams} from '@src/languages/params';
3030
import type {TranslationPaths} from '@src/languages/types';
@@ -87,7 +87,6 @@ import {isEmptyObject, isEmptyValueObject} from '@src/types/utils/EmptyObject';
8787
import type IconAsset from '@src/types/utils/IconAsset';
8888
import {getBankAccountFromID} from './actions/BankAccounts';
8989
import {getUserAccountID} from './actions/IOU';
90-
import type {IOURequestType} from './actions/IOU';
9190
import {unholdRequest} from './actions/IOU/Hold';
9291
import {
9392
createDraftTransaction,

src/libs/TransactionUtils/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,9 @@ import {
4646
isThread,
4747
} from '@libs/ReportUtils';
4848
import {isInvalidMerchantValue} from '@libs/ValidationUtils';
49-
import type {IOURequestType} from '@userActions/IOU';
5049
import type {UpdateMoneyRequestDataKeys} from '@userActions/IOU/UpdateMoneyRequest';
50+
import type {IOURequestType, IOUType} from '@src/CONST';
5151
import CONST from '@src/CONST';
52-
import type {IOUType} from '@src/CONST';
5352
import IntlStore from '@src/languages/IntlStore';
5453
import type {TranslationPaths} from '@src/languages/types';
5554
import ONYXKEYS from '@src/ONYXKEYS';

src/libs/actions/IOU/MoneyRequest.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import {
3737
import type {ReceiptFile} from '@pages/iou/request/step/IOURequestStepScan/types';
3838
import {setTransactionReport} from '@userActions/Transaction';
3939
import {getRemoveDraftTransactionsByIDsData, removeDraftTransactionsByIDs} from '@userActions/TransactionEdit';
40-
import type {IOUType} from '@src/CONST';
40+
import type {IOURequestType, IOUType} from '@src/CONST';
4141
import CONST from '@src/CONST';
4242
import IntlStore from '@src/languages/IntlStore';
4343
import type {TranslationParameters, TranslationPaths} from '@src/languages/types';
@@ -66,12 +66,12 @@ import type {CurrentUserPersonalDetails} from '@src/types/onyx/PersonalDetails';
6666
import type {Unit} from '@src/types/onyx/Policy';
6767
import type {Comment, Receipt, WaypointCollection} from '@src/types/onyx/Transaction';
6868
import {isEmptyObject} from '@src/types/utils/EmptyObject';
69-
import type {GpsPoint, IOURequestType} from './index';
7069
import {getAllTransactionDrafts} from './index';
7170
import {createDistanceRequest, resetSplitShares, startSplitBill} from './Split';
7271
import {submitWithDismissFirst} from './submitWithDismissFirst';
7372
import type {WriteOverrides} from './submitWithDismissFirst';
7473
import {requestMoney, trackExpense} from './TrackExpense';
74+
import type {GPSPoint as GpsPoint} from './types/TrackExpenseTransactionParams';
7575

7676
type CreateTransactionParams = {
7777
transactions: Transaction[];

src/libs/actions/IOU/MoneyRequestBuilder.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,9 @@ import type {OnyxData} from '@src/types/onyx/Request';
6565
import type {Receipt, TransactionChanges, TransactionCustomUnit, WaypointCollection} from '@src/types/onyx/Transaction';
6666
import {isEmptyObject} from '@src/types/utils/EmptyObject';
6767
import {getAllPersonalDetails, getAllReportActionsFromIOU, getAllReportNameValuePairs, getAllReports, getCurrentUserPersonalDetails, getUserAccountID} from './index';
68-
import type {ReplaceReceipt, StartSplitBilActionParams} from './index';
68+
import type {ReplaceReceipt} from './Receipt';
6969
import {getSearchOnyxUpdate} from './SearchUpdate';
70+
import type {StartSplitBilActionParams} from './Split';
7071
import type BasePolicyParams from './types/BasePolicyParams';
7172
import type BaseTransactionParams from './types/BaseTransactionParams';
7273
import type {CreateTrackExpenseParams} from './types/CreateTrackExpenseParams';

0 commit comments

Comments
 (0)