From 777538d9ad6716c0e444e38e2d6d4001f58369df Mon Sep 17 00:00:00 2001 From: truph01 Date: Sun, 22 Feb 2026 17:32:44 +0700 Subject: [PATCH 1/6] fix: Character limit error is not shown for sanskrit characters --- .../Wallet/ImportTransactionsCardNamePage.tsx | 7 ++-- .../WorkspaceExpensifyCardListPage.tsx | 33 ++++++++++++------- .../WorkspaceExpensifyCardPage.tsx | 1 + 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/pages/settings/Wallet/ImportTransactionsCardNamePage.tsx b/src/pages/settings/Wallet/ImportTransactionsCardNamePage.tsx index 496e9a1984e92..bce2c4a2d6e57 100644 --- a/src/pages/settings/Wallet/ImportTransactionsCardNamePage.tsx +++ b/src/pages/settings/Wallet/ImportTransactionsCardNamePage.tsx @@ -16,6 +16,7 @@ import Navigation from '@libs/Navigation/Navigation'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import INPUT_IDS from '@src/types/form/ImportTransactionsForm'; +import { isValidInputLength } from '@libs/ValidationUtils'; function ImportTransactionsCardNamePage() { const styles = useThemeStyles(); @@ -34,8 +35,10 @@ function ImportTransactionsCardNamePage() { const errors: FormInputErrors = {}; const name = values.cardDisplayName.trim(); - if ([...name].length > CONST.TITLE_CHARACTER_LIMIT) { - addErrorMessage(errors, 'cardDisplayName', translate('common.error.characterLimitExceedCounter', [...name].length, CONST.TITLE_CHARACTER_LIMIT)); + const {isValid, byteLength} = isValidInputLength(name, CONST.TITLE_CHARACTER_LIMIT); + + if (!isValid) { + addErrorMessage(errors, 'cardDisplayName', translate('common.error.characterLimitExceedCounter', byteLength, CONST.TITLE_CHARACTER_LIMIT)); } return errors; diff --git a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx index 5a89e09cde713..2d0bb88cfb9f8 100644 --- a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx +++ b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx @@ -7,6 +7,7 @@ import ButtonWithDropdownMenu from '@components/ButtonWithDropdownMenu'; import CardFeedIcon from '@components/CardFeedIcon'; import {useDelegateNoAccessActions, useDelegateNoAccessState} from '@components/DelegateNoAccessModalProvider'; import FeedSelector from '@components/FeedSelector'; +import FullScreenLoadingIndicator from '@components/FullscreenLoadingIndicator'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; // eslint-disable-next-line no-restricted-imports import {Plus} from '@components/Icon/Expensicons'; @@ -42,6 +43,7 @@ import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; import type SCREENS from '@src/SCREENS'; +import {Loading} from '@src/stories/Button.stories'; import type {Card, WorkspaceCardsList} from '@src/types/onyx'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; import EmptyCardView from './EmptyCardView'; @@ -58,9 +60,12 @@ type WorkspaceExpensifyCardListPageProps = { /** Fund ID */ fundID: number; + + /** Whether the page is in loading state or not */ + isLoading?: boolean; }; -function WorkspaceExpensifyCardListPage({route, cardsList, fundID}: WorkspaceExpensifyCardListPageProps) { +function WorkspaceExpensifyCardListPage({route, cardsList, fundID, isLoading}: WorkspaceExpensifyCardListPageProps) { const icons = useMemoizedLazyExpensifyIcons(['Gear']); const {shouldUseNarrowLayout, isMediumScreenWidth} = useResponsiveLayout(); const {translate, localeCompare} = useLocalize(); @@ -251,17 +256,21 @@ function WorkspaceExpensifyCardListPage({route, cardsList, fundID}: WorkspaceExp )} {isEmptyObject(cardsList) ? ( - + isLoading ? ( + + ) : ( + + ) ) : ( ); } From ba4d8230cb3e26ab814de28a137231a0b1c5ae83 Mon Sep 17 00:00:00 2001 From: truph01 Date: Sun, 22 Feb 2026 17:46:53 +0700 Subject: [PATCH 2/6] fix: lint --- src/libs/Permissions.ts | 1 + .../workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/Permissions.ts b/src/libs/Permissions.ts index 7d0e831f31007..fcd45b9f3bbc9 100644 --- a/src/libs/Permissions.ts +++ b/src/libs/Permissions.ts @@ -5,6 +5,7 @@ import type BetaConfiguration from '@src/types/onyx/BetaConfiguration'; // eslint-disable-next-line rulesdir/no-beta-handler function canUseAllBetas(betas: OnyxEntry): boolean { + return true return !!betas?.includes(CONST.BETAS.ALL); } diff --git a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx index 2d0bb88cfb9f8..8369f28f2dcc1 100644 --- a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx +++ b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx @@ -43,7 +43,6 @@ import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; import type SCREENS from '@src/SCREENS'; -import {Loading} from '@src/stories/Button.stories'; import type {Card, WorkspaceCardsList} from '@src/types/onyx'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; import EmptyCardView from './EmptyCardView'; From 305c5204ebeb66b532432645629e0fb4d3a00336 Mon Sep 17 00:00:00 2001 From: truph01 Date: Sun, 22 Feb 2026 17:47:16 +0700 Subject: [PATCH 3/6] fix: lint --- src/libs/Permissions.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libs/Permissions.ts b/src/libs/Permissions.ts index fcd45b9f3bbc9..7d0e831f31007 100644 --- a/src/libs/Permissions.ts +++ b/src/libs/Permissions.ts @@ -5,7 +5,6 @@ import type BetaConfiguration from '@src/types/onyx/BetaConfiguration'; // eslint-disable-next-line rulesdir/no-beta-handler function canUseAllBetas(betas: OnyxEntry): boolean { - return true return !!betas?.includes(CONST.BETAS.ALL); } From aa3b8f02290ba10f9da63d0ce9ada9052a57b94f Mon Sep 17 00:00:00 2001 From: truph01 Date: Sun, 22 Feb 2026 17:56:33 +0700 Subject: [PATCH 4/6] fix: lint --- .../Wallet/ImportTransactionsCardNamePage.tsx | 2 +- .../WorkspaceExpensifyCardListPage.tsx | 32 +++++++++---------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/pages/settings/Wallet/ImportTransactionsCardNamePage.tsx b/src/pages/settings/Wallet/ImportTransactionsCardNamePage.tsx index bce2c4a2d6e57..9ac9d3999bd02 100644 --- a/src/pages/settings/Wallet/ImportTransactionsCardNamePage.tsx +++ b/src/pages/settings/Wallet/ImportTransactionsCardNamePage.tsx @@ -13,10 +13,10 @@ import useThemeStyles from '@hooks/useThemeStyles'; import {setImportTransactionCardName} from '@libs/actions/ImportSpreadsheet'; import {addErrorMessage} from '@libs/ErrorUtils'; import Navigation from '@libs/Navigation/Navigation'; +import {isValidInputLength} from '@libs/ValidationUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import INPUT_IDS from '@src/types/form/ImportTransactionsForm'; -import { isValidInputLength } from '@libs/ValidationUtils'; function ImportTransactionsCardNamePage() { const styles = useThemeStyles(); diff --git a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx index 8369f28f2dcc1..82eb42681fcca 100644 --- a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx +++ b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx @@ -254,23 +254,21 @@ function WorkspaceExpensifyCardListPage({route, cardsList, fundID, isLoading}: W {isBankAccountVerified && getHeaderButtons()} )} - {isEmptyObject(cardsList) ? ( - isLoading ? ( - - ) : ( - - ) - ) : ( + {isEmptyObject(cardsList) && isLoading && } + {isEmptyObject(cardsList) && !isLoading && ( + + )} + {!isEmptyObject(cardsList) && ( Date: Thu, 5 Mar 2026 10:31:39 +0700 Subject: [PATCH 5/6] fix: conflicts --- Mobile-Expensify | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mobile-Expensify b/Mobile-Expensify index 08338ebdf8069..a1e5d7f2bf827 160000 --- a/Mobile-Expensify +++ b/Mobile-Expensify @@ -1 +1 @@ -Subproject commit 08338ebdf8069ec3da78de81de7541a8058202a3 +Subproject commit a1e5d7f2bf827d8e08ad6831474e0b308335fe4d From 745165cfc1865a3e0ce75e944e1c7c28d96bceaf Mon Sep 17 00:00:00 2001 From: truph01 Date: Thu, 5 Mar 2026 10:35:25 +0700 Subject: [PATCH 6/6] fix: revert loading indicator issue since it was fixed in another PR --- .../expensifyCard/WorkspaceExpensifyCardListPage.tsx | 12 +++--------- .../expensifyCard/WorkspaceExpensifyCardPage.tsx | 1 - 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx index fb0b21cb98439..f75b7e9eafa26 100644 --- a/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx +++ b/src/pages/workspace/expensifyCard/WorkspaceExpensifyCardListPage.tsx @@ -7,7 +7,6 @@ import ButtonWithDropdownMenu from '@components/ButtonWithDropdownMenu'; import CardFeedIcon from '@components/CardFeedIcon'; import {useDelegateNoAccessActions, useDelegateNoAccessState} from '@components/DelegateNoAccessModalProvider'; import FeedSelector from '@components/FeedSelector'; -import FullScreenLoadingIndicator from '@components/FullscreenLoadingIndicator'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import {useLockedAccountActions, useLockedAccountState} from '@components/LockedAccountModalProvider'; import OfflineWithFeedback from '@components/OfflineWithFeedback'; @@ -57,12 +56,9 @@ type WorkspaceExpensifyCardListPageProps = { /** Fund ID */ fundID: number; - - /** Whether the page is in loading state or not */ - isLoading?: boolean; }; -function WorkspaceExpensifyCardListPage({route, cardsList, fundID, isLoading}: WorkspaceExpensifyCardListPageProps) { +function WorkspaceExpensifyCardListPage({route, cardsList, fundID}: WorkspaceExpensifyCardListPageProps) { const icons = useMemoizedLazyExpensifyIcons(['Gear', 'Plus'] as const); const {shouldUseNarrowLayout, isMediumScreenWidth} = useResponsiveLayout(); const {translate, localeCompare} = useLocalize(); @@ -255,8 +251,7 @@ function WorkspaceExpensifyCardListPage({route, cardsList, fundID, isLoading}: W {isBankAccountVerified && getHeaderButtons()} )} - {isEmptyObject(cardsList) && isLoading && } - {isEmptyObject(cardsList) && !isLoading && ( + {isEmptyObject(cardsList) ? ( - )} - {!isEmptyObject(cardsList) && ( + ) : ( ); }