Skip to content

Commit 042f966

Browse files
Merge pull request Expensify#79649 from shubham1206agra/refactor-optionslistutils-1
Refactor: OptionsListUtils from translateLocal to translate from hook (part 1)
2 parents 8f66a85 + 35bff3c commit 042f966

4 files changed

Lines changed: 55 additions & 82 deletions

File tree

src/components/LHNOptionsList/LHNOptionsList.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,7 @@ function LHNOptionsList({style, contentContainerStyles, data, onSelectRow, optio
230230
const movedToReport = reports?.[`${ONYXKEYS.COLLECTION.REPORT}${getMovedReportID(lastReportAction, CONST.REPORT.MOVE_TYPE.TO)}`];
231231
const itemReportMetadata = reportMetadataCollection?.[`${ONYXKEYS.COLLECTION.REPORT_METADATA}${reportID}`];
232232
const lastMessageTextFromReport = getLastMessageTextForReport({
233+
translate,
233234
report: item,
234235
lastActorDetails,
235236
movedFromReport,

src/libs/OptionsListUtils/index.ts

Lines changed: 39 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import type {OnyxCollection, OnyxEntry} from 'react-native-onyx';
77
import Onyx from 'react-native-onyx';
88
import type {SetNonNullable} from 'type-fest';
99
import {FallbackAvatar} from '@components/Icon/Expensicons';
10-
import type {LocaleContextProps} from '@components/LocaleContextProvider';
10+
import type {LocaleContextProps, LocalizedTranslate} from '@components/LocaleContextProvider';
1111
import {getEnabledCategoriesCount} from '@libs/CategoryUtils';
1212
import filterArrayByMatch from '@libs/filterArrayByMatch';
1313
import {isReportMessageAttachment} from '@libs/isReportMessageAttachment';
@@ -477,7 +477,8 @@ function getAlternateText(
477477
const isGroupChat = reportUtilsIsGroupChat(report);
478478
const isExpenseThread = isMoneyRequest(report);
479479
const formattedLastMessageText =
480-
formatReportLastMessageText(Parser.htmlToText(option.lastMessageText ?? '')) || getLastMessageTextForReport({report, lastActorDetails, isReportArchived});
480+
// eslint-disable-next-line @typescript-eslint/no-deprecated
481+
formatReportLastMessageText(Parser.htmlToText(option.lastMessageText ?? '')) || getLastMessageTextForReport({translate: translateLocal, report, lastActorDetails, isReportArchived});
481482
const reportPrefix = getReportSubtitlePrefix(report);
482483
const formattedLastMessageTextWithPrefix = reportPrefix + formattedLastMessageText;
483484

@@ -598,6 +599,7 @@ function getLastActorDisplayNameFromLastVisibleActions(report: OnyxEntry<Report>
598599
* Get the last message text from the report directly or from other sources for special cases.
599600
*/
600601
function getLastMessageTextForReport({
602+
translate,
601603
report,
602604
lastActorDetails,
603605
movedFromReport,
@@ -607,6 +609,7 @@ function getLastMessageTextForReport({
607609
policyForMovingExpensesID,
608610
reportMetadata,
609611
}: {
612+
translate: LocalizedTranslate;
610613
report: OnyxEntry<Report>;
611614
lastActorDetails: Partial<PersonalDetails> | null;
612615
movedFromReport?: OnyxEntry<Report>;
@@ -632,21 +635,18 @@ function getLastMessageTextForReport({
632635
case CONST.REPORT.ARCHIVE_REASON.ACCOUNT_CLOSED:
633636
case CONST.REPORT.ARCHIVE_REASON.REMOVED_FROM_POLICY:
634637
case CONST.REPORT.ARCHIVE_REASON.POLICY_DELETED: {
635-
// eslint-disable-next-line @typescript-eslint/no-deprecated
636-
lastMessageTextFromReport = translateLocal(`reportArchiveReasons.${archiveReason}`, {
638+
lastMessageTextFromReport = translate(`reportArchiveReasons.${archiveReason}`, {
637639
displayName: formatPhoneNumberPhoneUtils(getDisplayNameOrDefault(lastActorDetails)),
638640
policyName: getPolicyName({report, policy}),
639641
});
640642
break;
641643
}
642644
case CONST.REPORT.ARCHIVE_REASON.BOOKING_END_DATE_HAS_PASSED: {
643-
// eslint-disable-next-line @typescript-eslint/no-deprecated
644-
lastMessageTextFromReport = translateLocal(`reportArchiveReasons.${archiveReason}`);
645+
lastMessageTextFromReport = translate(`reportArchiveReasons.${archiveReason}`);
645646
break;
646647
}
647648
default: {
648-
// eslint-disable-next-line @typescript-eslint/no-deprecated
649-
lastMessageTextFromReport = translateLocal(`reportArchiveReasons.default`);
649+
lastMessageTextFromReport = translate(`reportArchiveReasons.default`);
650650
}
651651
}
652652
} else if (isMoneyRequestAction(lastReportAction)) {
@@ -685,14 +685,11 @@ function getLastMessageTextForReport({
685685
} else if (isDeletedParentAction(lastReportAction) && reportUtilsIsChatReport(report)) {
686686
lastMessageTextFromReport = getDeletedParentActionMessageForChatReport(lastReportAction);
687687
} else if (isPendingRemove(lastReportAction) && report?.reportID && isThreadParentMessage(lastReportAction, report.reportID)) {
688-
// eslint-disable-next-line @typescript-eslint/no-deprecated
689-
lastMessageTextFromReport = translateLocal('parentReportAction.hiddenMessage');
688+
lastMessageTextFromReport = translate('parentReportAction.hiddenMessage');
690689
} else if (isActionOfType(lastReportAction, CONST.REPORT.ACTIONS.TYPE.MARKED_REIMBURSED)) {
691-
// eslint-disable-next-line @typescript-eslint/no-deprecated
692690
lastMessageTextFromReport = getMarkedReimbursedMessage(lastReportAction);
693691
} else if (isReportMessageAttachment({text: report?.lastMessageText ?? '', html: report?.lastMessageHtml, type: ''})) {
694-
// eslint-disable-next-line @typescript-eslint/no-deprecated
695-
lastMessageTextFromReport = `[${translateLocal('common.attachment')}]`;
692+
lastMessageTextFromReport = `[${translate('common.attachment')}]`;
696693
} else if (isModifiedExpenseAction(lastReportAction)) {
697694
const properSchemaForModifiedExpenseMessage = getForReportAction({
698695
reportAction: lastReportAction,
@@ -705,11 +702,9 @@ function getLastMessageTextForReport({
705702
} else if (isMovedTransactionAction(lastReportAction)) {
706703
lastMessageTextFromReport = Parser.htmlToText(getMovedTransactionMessage(lastReportAction));
707704
} else if (isTaskAction(lastReportAction)) {
708-
// eslint-disable-next-line @typescript-eslint/no-deprecated
709-
lastMessageTextFromReport = formatReportLastMessageText(getTaskReportActionMessage(translateLocal, lastReportAction).text);
705+
lastMessageTextFromReport = formatReportLastMessageText(getTaskReportActionMessage(translate, lastReportAction).text);
710706
} else if (isCreatedTaskReportAction(lastReportAction)) {
711-
// eslint-disable-next-line @typescript-eslint/no-deprecated
712-
lastMessageTextFromReport = getTaskCreatedMessage(translateLocal, lastReportAction, getReportOrDraftReport(lastReportAction?.childReportID));
707+
lastMessageTextFromReport = getTaskCreatedMessage(translate, lastReportAction, getReportOrDraftReport(lastReportAction?.childReportID));
713708
} else if (
714709
isActionOfType(lastReportAction, CONST.REPORT.ACTIONS.TYPE.SUBMITTED) ||
715710
isActionOfType(lastReportAction, CONST.REPORT.ACTIONS.TYPE.SUBMITTED_AND_CLOSED) ||
@@ -720,38 +715,29 @@ function getLastMessageTextForReport({
720715
const isPendingAdd = lastReportAction.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD;
721716

722717
if (wasSubmittedViaHarvesting) {
723-
// eslint-disable-next-line @typescript-eslint/no-deprecated
724-
lastMessageTextFromReport = Parser.htmlToText(translateLocal('iou.automaticallySubmitted'));
718+
lastMessageTextFromReport = Parser.htmlToText(translate('iou.automaticallySubmitted'));
725719
} else if (hasPendingDEWSubmit(reportMetadata, isDEWPolicy) && isPendingAdd) {
726-
// eslint-disable-next-line @typescript-eslint/no-deprecated
727-
lastMessageTextFromReport = translateLocal('iou.queuedToSubmitViaDEW');
720+
lastMessageTextFromReport = translate('iou.queuedToSubmitViaDEW');
728721
} else {
729-
// eslint-disable-next-line @typescript-eslint/no-deprecated
730-
lastMessageTextFromReport = translateLocal('iou.submitted', {memo: getOriginalMessage(lastReportAction)?.message});
722+
lastMessageTextFromReport = translate('iou.submitted', {memo: getOriginalMessage(lastReportAction)?.message});
731723
}
732724
} else if (isActionOfType(lastReportAction, CONST.REPORT.ACTIONS.TYPE.APPROVED)) {
733725
const {automaticAction} = getOriginalMessage(lastReportAction) ?? {};
734726
if (automaticAction) {
735-
// eslint-disable-next-line @typescript-eslint/no-deprecated
736-
lastMessageTextFromReport = Parser.htmlToText(translateLocal('iou.automaticallyApproved'));
727+
lastMessageTextFromReport = Parser.htmlToText(translate('iou.automaticallyApproved'));
737728
} else {
738-
// eslint-disable-next-line @typescript-eslint/no-deprecated
739-
lastMessageTextFromReport = translateLocal('iou.approvedMessage');
729+
lastMessageTextFromReport = translate('iou.approvedMessage');
740730
}
741731
} else if (isDynamicExternalWorkflowSubmitFailedAction(lastReportAction)) {
742-
// eslint-disable-next-line @typescript-eslint/no-deprecated
743-
lastMessageTextFromReport = getOriginalMessage(lastReportAction)?.message ?? translateLocal('iou.error.genericCreateFailureMessage');
732+
lastMessageTextFromReport = getOriginalMessage(lastReportAction)?.message ?? translate('iou.error.genericCreateFailureMessage');
744733
} else if (isUnapprovedAction(lastReportAction)) {
745-
// eslint-disable-next-line @typescript-eslint/no-deprecated
746-
lastMessageTextFromReport = translateLocal('iou.unapproved');
734+
lastMessageTextFromReport = translate('iou.unapproved');
747735
} else if (isActionOfType(lastReportAction, CONST.REPORT.ACTIONS.TYPE.FORWARDED)) {
748736
const {automaticAction} = getOriginalMessage(lastReportAction) ?? {};
749737
if (automaticAction) {
750-
// eslint-disable-next-line @typescript-eslint/no-deprecated
751-
lastMessageTextFromReport = Parser.htmlToText(translateLocal('iou.automaticallyForwarded'));
738+
lastMessageTextFromReport = Parser.htmlToText(translate('iou.automaticallyForwarded'));
752739
} else {
753-
// eslint-disable-next-line @typescript-eslint/no-deprecated
754-
lastMessageTextFromReport = translateLocal('iou.forwarded');
740+
lastMessageTextFromReport = translate('iou.forwarded');
755741
}
756742
} else if (lastReportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.REJECTED) {
757743
lastMessageTextFromReport = getRejectedReportMessage();
@@ -764,61 +750,45 @@ function getLastMessageTextForReport({
764750
} else if (isActionableAddPaymentCard(lastReportAction)) {
765751
lastMessageTextFromReport = getReportActionMessageText(lastReportAction);
766752
} else if (lastReportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.EXPORTED_TO_INTEGRATION) {
767-
// eslint-disable-next-line @typescript-eslint/no-deprecated
768-
lastMessageTextFromReport = getExportIntegrationLastMessageText(translateLocal, lastReportAction);
753+
lastMessageTextFromReport = getExportIntegrationLastMessageText(translate, lastReportAction);
769754
} else if (lastReportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.RECEIPT_SCAN_FAILED) {
770-
// eslint-disable-next-line @typescript-eslint/no-deprecated
771-
lastMessageTextFromReport = translateLocal('iou.receiptScanningFailed');
755+
lastMessageTextFromReport = translate('iou.receiptScanningFailed');
772756
} else if (lastReportAction?.actionName && isOldDotReportAction(lastReportAction)) {
773-
// eslint-disable-next-line @typescript-eslint/no-deprecated
774-
lastMessageTextFromReport = getMessageOfOldDotReportAction(translateLocal, lastReportAction, false);
757+
lastMessageTextFromReport = getMessageOfOldDotReportAction(translate, lastReportAction, false);
775758
} else if (isActionableJoinRequest(lastReportAction)) {
776-
// eslint-disable-next-line @typescript-eslint/no-deprecated
777-
lastMessageTextFromReport = getJoinRequestMessage(translateLocal, lastReportAction);
759+
lastMessageTextFromReport = getJoinRequestMessage(translate, lastReportAction);
778760
} else if (lastReportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.ROOM_CHANGE_LOG.LEAVE_ROOM) {
779-
// eslint-disable-next-line @typescript-eslint/no-deprecated
780-
lastMessageTextFromReport = translateLocal('report.actions.type.leftTheChat');
761+
lastMessageTextFromReport = translate('report.actions.type.leftTheChat');
781762
} else if (lastReportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.RESOLVED_DUPLICATES) {
782-
// eslint-disable-next-line @typescript-eslint/no-deprecated
783-
lastMessageTextFromReport = translateLocal('violations.resolvedDuplicates');
763+
lastMessageTextFromReport = translate('violations.resolvedDuplicates');
784764
} else if (isActionOfType(lastReportAction, CONST.REPORT.ACTIONS.TYPE.ROOM_CHANGE_LOG.UPDATE_ROOM_DESCRIPTION)) {
785-
// eslint-disable-next-line @typescript-eslint/no-deprecated
786-
lastMessageTextFromReport = Parser.htmlToText(getUpdateRoomDescriptionMessage(translateLocal, lastReportAction));
765+
lastMessageTextFromReport = Parser.htmlToText(getUpdateRoomDescriptionMessage(translate, lastReportAction));
787766
} else if (isActionOfType(lastReportAction, CONST.REPORT.ACTIONS.TYPE.ROOM_CHANGE_LOG.UPDATE_ROOM_AVATAR)) {
788-
// eslint-disable-next-line @typescript-eslint/no-deprecated
789-
lastMessageTextFromReport = getRoomAvatarUpdatedMessage(translateLocal, lastReportAction);
767+
lastMessageTextFromReport = getRoomAvatarUpdatedMessage(translate, lastReportAction);
790768
} else if (isActionOfType(lastReportAction, CONST.REPORT.ACTIONS.TYPE.RETRACTED)) {
791-
// eslint-disable-next-line @typescript-eslint/no-deprecated
792-
lastMessageTextFromReport = translateLocal('iou.retracted');
769+
lastMessageTextFromReport = translate('iou.retracted');
793770
} else if (isActionOfType(lastReportAction, CONST.REPORT.ACTIONS.TYPE.REOPENED)) {
794-
// eslint-disable-next-line @typescript-eslint/no-deprecated
795-
lastMessageTextFromReport = translateLocal('iou.reopened');
771+
lastMessageTextFromReport = translate('iou.reopened');
796772
} else if (isActionOfType(lastReportAction, CONST.REPORT.ACTIONS.TYPE.CHANGE_POLICY)) {
797773
lastMessageTextFromReport = getPolicyChangeMessage(lastReportAction);
798774
} else if (isActionOfType(lastReportAction, CONST.REPORT.ACTIONS.TYPE.TRAVEL_UPDATE)) {
799-
// eslint-disable-next-line @typescript-eslint/no-deprecated
800-
lastMessageTextFromReport = getTravelUpdateMessage(translateLocal, lastReportAction);
775+
lastMessageTextFromReport = getTravelUpdateMessage(translate, lastReportAction);
801776
} else if (isInviteOrRemovedAction(lastReportAction)) {
802-
// eslint-disable-next-line @typescript-eslint/no-deprecated
803-
lastMessageTextFromReport = getRoomChangeLogMessage(translateLocal, lastReportAction);
777+
lastMessageTextFromReport = getRoomChangeLogMessage(translate, lastReportAction);
804778
} else if (isRenamedAction(lastReportAction)) {
805-
// eslint-disable-next-line @typescript-eslint/no-deprecated
806-
lastMessageTextFromReport = getRenamedAction(translateLocal, lastReportAction, isExpenseReport(report));
779+
lastMessageTextFromReport = getRenamedAction(translate, lastReportAction, isExpenseReport(report));
807780
} else if (isActionOfType(lastReportAction, CONST.REPORT.ACTIONS.TYPE.DELETED_TRANSACTION)) {
808781
lastMessageTextFromReport = getDeletedTransactionMessage(lastReportAction);
809782
} else if (isActionOfType(lastReportAction, CONST.REPORT.ACTIONS.TYPE.TAKE_CONTROL) || isActionOfType(lastReportAction, CONST.REPORT.ACTIONS.TYPE.REROUTE)) {
810-
// eslint-disable-next-line @typescript-eslint/no-deprecated
811-
lastMessageTextFromReport = Parser.htmlToText(getChangedApproverActionMessage(translateLocal, lastReportAction));
783+
lastMessageTextFromReport = Parser.htmlToText(getChangedApproverActionMessage(translate, lastReportAction));
812784
} else if (isMovedAction(lastReportAction)) {
813785
lastMessageTextFromReport = Parser.htmlToText(getMovedActionMessage(lastReportAction, report));
814786
} else if (isActionOfType(lastReportAction, CONST.REPORT.ACTIONS.TYPE.UNREPORTED_TRANSACTION)) {
815787
lastMessageTextFromReport = Parser.htmlToText(getUnreportedTransactionMessage(lastReportAction));
816788
} else if (isActionableMentionWhisper(lastReportAction)) {
817-
// eslint-disable-next-line @typescript-eslint/no-deprecated
818-
lastMessageTextFromReport = Parser.htmlToText(getActionableMentionWhisperMessage(translateLocal, lastReportAction));
789+
lastMessageTextFromReport = Parser.htmlToText(getActionableMentionWhisperMessage(translate, lastReportAction));
819790
} else if (isActionOfType(lastReportAction, CONST.REPORT.ACTIONS.TYPE.DYNAMIC_EXTERNAL_WORKFLOW_ROUTED)) {
820-
// eslint-disable-next-line @typescript-eslint/no-deprecated
821-
lastMessageTextFromReport = getDynamicExternalWorkflowRoutedMessage(lastReportAction, translateLocal);
791+
lastMessageTextFromReport = getDynamicExternalWorkflowRoutedMessage(lastReportAction, translate);
822792
}
823793
if (isActionOfType(lastReportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT)) {
824794
// eslint-disable-next-line @typescript-eslint/no-deprecated
@@ -964,7 +934,8 @@ function createOption(
964934

965935
// If displaying chat preview line is needed, let's overwrite the default alternate text
966936
const lastActorDetails = personalDetails?.[report?.lastActorAccountID ?? String(CONST.DEFAULT_NUMBER_ID)] ?? {};
967-
result.lastMessageText = getLastMessageTextForReport({report, lastActorDetails, isReportArchived: !!result.private_isArchived});
937+
// eslint-disable-next-line @typescript-eslint/no-deprecated
938+
result.lastMessageText = getLastMessageTextForReport({translate: translateLocal, report, lastActorDetails, isReportArchived: !!result.private_isArchived});
968939
result.alternateText =
969940
showPersonalDetails && personalDetail?.login
970941
? personalDetail.login

src/libs/SidebarUtils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -801,7 +801,7 @@ function getOptionData({
801801
const lastActorDisplayName = getLastActorDisplayName(lastActorDetails, currentUserAccountID);
802802
let lastMessageTextFromReport = lastMessageTextFromReportProp;
803803
if (!lastMessageTextFromReport) {
804-
lastMessageTextFromReport = getLastMessageTextForReport({report, lastActorDetails, movedFromReport, movedToReport, policy, isReportArchived});
804+
lastMessageTextFromReport = getLastMessageTextForReport({translate, report, lastActorDetails, movedFromReport, movedToReport, policy, isReportArchived});
805805
}
806806

807807
// We need to remove sms domain in case the last message text has a phone number mention with sms domain.

0 commit comments

Comments
 (0)