Skip to content

Commit ce2c1f6

Browse files
Merge branch 'Expensify:main' into fix/58556-scan-page-bottom-button-misaligned
2 parents ace3976 + 069891a commit ce2c1f6

4 files changed

Lines changed: 40 additions & 4 deletions

File tree

src/components/TransactionItemRow/DataCells/ReceiptCell.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ function ReceiptCell({transactionItem, isSelected}: {transactionItem: Transactio
2121

2222
let source = transactionItem?.receipt?.source ?? '';
2323

24-
if (source) {
24+
if (source && typeof source === 'string') {
2525
const filename = getFileName(source);
2626
const receiptURIs = getThumbnailAndImageURIs(transactionItem, null, filename);
2727
const isReceiptPDF = Str.isPDF(filename);

src/libs/actions/Policy/Category.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import {hasEnabledOptions} from '@libs/OptionsListUtils';
3131
import {getPolicy, goBackWhenEnableFeature} from '@libs/PolicyUtils';
3232
import {getAllPolicyReports} from '@libs/ReportUtils';
3333
import {resolveEnableFeatureConflicts} from '@userActions/RequestConflictUtils';
34+
import {getFinishOnboardingTaskOnyxData} from '@userActions/Task';
3435
import CONST from '@src/CONST';
3536
import ONYXKEYS from '@src/ONYXKEYS';
3637
import type {Policy, PolicyCategories, PolicyCategory, RecentlyUsedCategories, Report} from '@src/types/onyx';
@@ -85,6 +86,14 @@ Onyx.connect({
8586
callback: (val) => (allPolicyCategories = val),
8687
});
8788

89+
function appendSetupCategoriesOnboardingData(onyxData: OnyxData) {
90+
const finishOnboardingTaskData = getFinishOnboardingTaskOnyxData('setupCategories');
91+
onyxData.optimisticData?.push(...(finishOnboardingTaskData.optimisticData ?? []));
92+
onyxData.successData?.push(...(finishOnboardingTaskData.successData ?? []));
93+
onyxData.failureData?.push(...(finishOnboardingTaskData.failureData ?? []));
94+
return onyxData;
95+
}
96+
8897
function buildOptimisticPolicyCategories(policyID: string, categories: readonly string[]) {
8998
const optimisticCategoryMap = categories.reduce<Record<string, Partial<PolicyCategory>>>((acc, category) => {
9099
acc[category] = {
@@ -359,6 +368,7 @@ function setWorkspaceCategoryEnabled(policyID: string, categoriesToUpdate: Recor
359368
},
360369
],
361370
};
371+
appendSetupCategoriesOnboardingData(onyxData);
362372
if (shouldDisableRequiresCategory) {
363373
onyxData.optimisticData?.push({
364374
onyxMethod: Onyx.METHOD.MERGE,
@@ -591,7 +601,7 @@ function removePolicyCategoryReceiptsRequired(policyID: string, categoryName: st
591601

592602
function createPolicyCategory(policyID: string, categoryName: string) {
593603
const onyxData = buildOptimisticPolicyCategories(policyID, [categoryName]);
594-
604+
appendSetupCategoriesOnboardingData(onyxData);
595605
const parameters = {
596606
policyID,
597607
categories: JSON.stringify([{name: categoryName}]),
@@ -999,6 +1009,7 @@ function deleteWorkspaceCategories(policyID: string, categoryNamesToDelete: stri
9991009
},
10001010
],
10011011
};
1012+
appendSetupCategoriesOnboardingData(onyxData);
10021013
if (shouldDisableRequiresCategory) {
10031014
onyxData.optimisticData?.push({
10041015
onyxMethod: Onyx.METHOD.MERGE,

src/libs/actions/Task.ts

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import type * as OnyxTypes from '@src/types/onyx';
2323
import type {Icon} from '@src/types/onyx/OnyxCommon';
2424
import type {ReportActions} from '@src/types/onyx/ReportAction';
2525
import type ReportAction from '@src/types/onyx/ReportAction';
26+
import type {OnyxData} from '@src/types/onyx/Request';
2627
import {isEmptyObject} from '@src/types/utils/EmptyObject';
2728
import {getMostRecentReportID, navigateToConciergeChatAndDeleteReport, notifyNewAction} from './Report';
2829

@@ -87,6 +88,12 @@ Onyx.connect({
8788
},
8889
});
8990

91+
let introSelected: OnyxEntry<OnyxTypes.IntroSelected> = {};
92+
Onyx.connect({
93+
key: ONYXKEYS.NVP_INTRO_SELECTED,
94+
callback: (val) => (introSelected = val),
95+
});
96+
9097
/**
9198
* Clears out the task info from the store
9299
*/
@@ -370,11 +377,11 @@ function getOutstandingChildTask(taskReport: OnyxEntry<OnyxTypes.Report>) {
370377
/**
371378
* Complete a task
372379
*/
373-
function completeTask(taskReport: OnyxEntry<OnyxTypes.Report>, reportIDFromAction?: string) {
380+
function completeTask(taskReport: OnyxEntry<OnyxTypes.Report>, reportIDFromAction?: string): OnyxData {
374381
const taskReportID = taskReport?.reportID ?? reportIDFromAction;
375382

376383
if (!taskReportID) {
377-
return;
384+
return {};
378385
}
379386

380387
const message = `marked as complete`;
@@ -455,6 +462,7 @@ function completeTask(taskReport: OnyxEntry<OnyxTypes.Report>, reportIDFromActio
455462

456463
playSound(SOUNDS.SUCCESS);
457464
API.write(WRITE_COMMANDS.COMPLETE_TASK, parameters, {optimisticData, successData, failureData});
465+
return {optimisticData, successData, failureData};
458466
}
459467

460468
/**
@@ -1266,6 +1274,19 @@ function clearTaskErrors(reportID: string | undefined) {
12661274
});
12671275
}
12681276

1277+
function getFinishOnboardingTaskOnyxData(taskName: keyof OnyxTypes.IntroSelected): OnyxData {
1278+
const taskReportID = introSelected?.[taskName];
1279+
if (taskReportID) {
1280+
const taskReport = allReports?.[`${ONYXKEYS.COLLECTION.REPORT}${taskReportID}`];
1281+
if (taskReport) {
1282+
if (taskReport.stateNum !== CONST.REPORT.STATE_NUM.APPROVED || taskReport.statusNum !== CONST.REPORT.STATUS_NUM.APPROVED) {
1283+
return completeTask(taskReport);
1284+
}
1285+
}
1286+
}
1287+
1288+
return {};
1289+
}
12691290
function completeTestDriveTask() {
12701291
const onboardingReport = ReportUtils.getChatUsedForOnboarding();
12711292
if (!onboardingReport) {
@@ -1312,5 +1333,6 @@ export {
13121333
setNewOptimisticAssignee,
13131334
getNavigationUrlOnTaskDelete,
13141335
canActionTask,
1336+
getFinishOnboardingTaskOnyxData,
13151337
completeTestDriveTask,
13161338
};

src/types/onyx/IntroSelected.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ type IntroSelected = {
2020

2121
/** Company size selected during onboarding */
2222
companySize?: string;
23+
24+
/** Task reportID for 'setupCategories' type */
25+
setupCategories?: string;
2326
};
2427

2528
export default IntroSelected;

0 commit comments

Comments
 (0)