From 48e8f14e2b520e1ad8e7f14149e3ce7d571d2295 Mon Sep 17 00:00:00 2001 From: Puneet Lath Date: Fri, 7 Feb 2025 15:16:56 -0800 Subject: [PATCH 1/9] Show custom rules as multi-line --- .../workspace/rules/CustomRulesSection.tsx | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/pages/workspace/rules/CustomRulesSection.tsx b/src/pages/workspace/rules/CustomRulesSection.tsx index 284eb4743545..9c97976641c3 100644 --- a/src/pages/workspace/rules/CustomRulesSection.tsx +++ b/src/pages/workspace/rules/CustomRulesSection.tsx @@ -7,6 +7,7 @@ import usePolicy from '@hooks/usePolicy'; import useThemeStyles from '@hooks/useThemeStyles'; import Navigation from '@libs/Navigation/Navigation'; import ROUTES from '@src/ROUTES'; +import OfflineWithFeedback from '@components/OfflineWithFeedback'; type CustomRulesSectionProps = { policyID: string; @@ -26,19 +27,20 @@ function CustomRulesSection({policyID}: CustomRulesSectionProps) { subtitleMuted > - {/* */} - Navigation.navigate(ROUTES.RULES_CUSTOM.getRoute(policyID))} - wrapperStyle={[styles.sectionMenuItemTopDescription]} - numberOfLinesTitle={2} - /> - {/* */} + + Navigation.navigate(ROUTES.RULES_CUSTOM.getRoute(policyID))} + shouldRenderAsHTML + /> + ); From 32e771df5a02ba7589a9952dd23ed8822d4875d3 Mon Sep 17 00:00:00 2001 From: Puneet Lath Date: Fri, 7 Feb 2025 15:33:22 -0800 Subject: [PATCH 2/9] Parse the custom rules to html --- src/libs/actions/Policy/Policy.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index 142f19a11db8..4c688abd5f85 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -3877,6 +3877,10 @@ function setPolicyMaxExpenseAge(policyID: string, maxExpenseAge: string) { function updateCustomRules(policyID: string, customRules: string) { const policy = getPolicy(policyID); const originalCustomRules = policy?.customRules; + const parsedCustomRules = ReportUtils.getParsedComment(customRules); + if (parsedCustomRules === originalCustomRules) { + return; + } const onyxData: OnyxData = { optimisticData: [ @@ -3884,7 +3888,7 @@ function updateCustomRules(policyID: string, customRules: string) { onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, value: { - customRules, + parsedCustomRules, }, }, ], @@ -3916,7 +3920,7 @@ function updateCustomRules(policyID: string, customRules: string) { const parameters = { policyID, - description: customRules, + description: parsedCustomRules, }; API.write(WRITE_COMMANDS.UPDATE_CUSTOM_RULES, parameters, onyxData); From ee66d7cc35f448432383dc8b021566fa0cffe33f Mon Sep 17 00:00:00 2001 From: Puneet Lath Date: Fri, 7 Feb 2025 15:35:17 -0800 Subject: [PATCH 3/9] prettier --- src/pages/workspace/rules/CustomRulesSection.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/workspace/rules/CustomRulesSection.tsx b/src/pages/workspace/rules/CustomRulesSection.tsx index 9c97976641c3..8c7a4242df48 100644 --- a/src/pages/workspace/rules/CustomRulesSection.tsx +++ b/src/pages/workspace/rules/CustomRulesSection.tsx @@ -1,13 +1,13 @@ import React from 'react'; import {View} from 'react-native'; import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription'; +import OfflineWithFeedback from '@components/OfflineWithFeedback'; import Section from '@components/Section'; import useLocalize from '@hooks/useLocalize'; import usePolicy from '@hooks/usePolicy'; import useThemeStyles from '@hooks/useThemeStyles'; import Navigation from '@libs/Navigation/Navigation'; import ROUTES from '@src/ROUTES'; -import OfflineWithFeedback from '@components/OfflineWithFeedback'; type CustomRulesSectionProps = { policyID: string; From 4e0d1d36e7929b711d84c703e8beaacae847b8e6 Mon Sep 17 00:00:00 2001 From: Puneet Lath Date: Fri, 7 Feb 2025 15:38:29 -0800 Subject: [PATCH 4/9] Comment out offline without feedback --- .../workspace/rules/CustomRulesSection.tsx | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/pages/workspace/rules/CustomRulesSection.tsx b/src/pages/workspace/rules/CustomRulesSection.tsx index 8c7a4242df48..217b9cec78b0 100644 --- a/src/pages/workspace/rules/CustomRulesSection.tsx +++ b/src/pages/workspace/rules/CustomRulesSection.tsx @@ -27,20 +27,20 @@ function CustomRulesSection({policyID}: CustomRulesSectionProps) { subtitleMuted > - - Navigation.navigate(ROUTES.RULES_CUSTOM.getRoute(policyID))} - shouldRenderAsHTML - /> - + > */} + Navigation.navigate(ROUTES.RULES_CUSTOM.getRoute(policyID))} + shouldRenderAsHTML + /> + {/* */} ); From 1fabaa228451f0a777c367d2df0dbe4e4f59222f Mon Sep 17 00:00:00 2001 From: Puneet Lath Date: Fri, 7 Feb 2025 15:45:25 -0800 Subject: [PATCH 5/9] prettier --- src/pages/workspace/rules/CustomRulesSection.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/workspace/rules/CustomRulesSection.tsx b/src/pages/workspace/rules/CustomRulesSection.tsx index 217b9cec78b0..40ac93f67061 100644 --- a/src/pages/workspace/rules/CustomRulesSection.tsx +++ b/src/pages/workspace/rules/CustomRulesSection.tsx @@ -1,7 +1,6 @@ import React from 'react'; import {View} from 'react-native'; import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription'; -import OfflineWithFeedback from '@components/OfflineWithFeedback'; import Section from '@components/Section'; import useLocalize from '@hooks/useLocalize'; import usePolicy from '@hooks/usePolicy'; From afefa9f475536a697544fdec6bb1e0c231a0294f Mon Sep 17 00:00:00 2001 From: Puneet Lath Date: Fri, 7 Feb 2025 15:46:28 -0800 Subject: [PATCH 6/9] set optimistic data correctly --- src/libs/actions/Policy/Policy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index 4c688abd5f85..d39b7bfe6649 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -3888,7 +3888,7 @@ function updateCustomRules(policyID: string, customRules: string) { onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, value: { - parsedCustomRules, + customRules: parsedCustomRules, }, }, ], From 95eba5bdb4a45cfce1b0ece5fb0597ceadd34f4e Mon Sep 17 00:00:00 2001 From: Puneet Lath Date: Fri, 7 Feb 2025 16:14:30 -0800 Subject: [PATCH 7/9] parse on display isntead of save --- src/libs/actions/Policy/Policy.ts | 7 +++---- src/pages/workspace/rules/CustomRulesSection.tsx | 7 +++++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index d39b7bfe6649..62b131cf2682 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -3877,8 +3877,7 @@ function setPolicyMaxExpenseAge(policyID: string, maxExpenseAge: string) { function updateCustomRules(policyID: string, customRules: string) { const policy = getPolicy(policyID); const originalCustomRules = policy?.customRules; - const parsedCustomRules = ReportUtils.getParsedComment(customRules); - if (parsedCustomRules === originalCustomRules) { + if (customRules === originalCustomRules) { return; } @@ -3888,7 +3887,7 @@ function updateCustomRules(policyID: string, customRules: string) { onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, value: { - customRules: parsedCustomRules, + customRules, }, }, ], @@ -3920,7 +3919,7 @@ function updateCustomRules(policyID: string, customRules: string) { const parameters = { policyID, - description: parsedCustomRules, + description: customRules, }; API.write(WRITE_COMMANDS.UPDATE_CUSTOM_RULES, parameters, onyxData); diff --git a/src/pages/workspace/rules/CustomRulesSection.tsx b/src/pages/workspace/rules/CustomRulesSection.tsx index 40ac93f67061..d470f6d5fd46 100644 --- a/src/pages/workspace/rules/CustomRulesSection.tsx +++ b/src/pages/workspace/rules/CustomRulesSection.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useMemo } from 'react'; import {View} from 'react-native'; import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription'; import Section from '@components/Section'; @@ -7,6 +7,7 @@ import usePolicy from '@hooks/usePolicy'; import useThemeStyles from '@hooks/useThemeStyles'; import Navigation from '@libs/Navigation/Navigation'; import ROUTES from '@src/ROUTES'; +import * as ReportUtils from '@libs/ReportUtils'; type CustomRulesSectionProps = { policyID: string; @@ -16,6 +17,8 @@ function CustomRulesSection({policyID}: CustomRulesSectionProps) { const {translate} = useLocalize(); const styles = useThemeStyles(); const policy = usePolicy(policyID); + const parsedRules = useMemo(() => ReportUtils.getParsedComment(policy?.customRules ?? ''), [policy]); + const rulesDescription = typeof parsedRules === 'string' ? parsedRules : ''; return (
*/} Date: Fri, 7 Feb 2025 16:19:38 -0800 Subject: [PATCH 8/9] prettier --- src/pages/workspace/rules/CustomRulesSection.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pages/workspace/rules/CustomRulesSection.tsx b/src/pages/workspace/rules/CustomRulesSection.tsx index d470f6d5fd46..0a55f63e7437 100644 --- a/src/pages/workspace/rules/CustomRulesSection.tsx +++ b/src/pages/workspace/rules/CustomRulesSection.tsx @@ -1,4 +1,4 @@ -import React, { useMemo } from 'react'; +import React, {useMemo} from 'react'; import {View} from 'react-native'; import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription'; import Section from '@components/Section'; @@ -6,8 +6,8 @@ import useLocalize from '@hooks/useLocalize'; import usePolicy from '@hooks/usePolicy'; import useThemeStyles from '@hooks/useThemeStyles'; import Navigation from '@libs/Navigation/Navigation'; +import {getParsedComment} from '@libs/ReportUtils'; import ROUTES from '@src/ROUTES'; -import * as ReportUtils from '@libs/ReportUtils'; type CustomRulesSectionProps = { policyID: string; @@ -17,7 +17,7 @@ function CustomRulesSection({policyID}: CustomRulesSectionProps) { const {translate} = useLocalize(); const styles = useThemeStyles(); const policy = usePolicy(policyID); - const parsedRules = useMemo(() => ReportUtils.getParsedComment(policy?.customRules ?? ''), [policy]); + const parsedRules = useMemo(() => getParsedComment(policy?.customRules ?? ''), [policy]); const rulesDescription = typeof parsedRules === 'string' ? parsedRules : ''; return ( From 77ca310621c8958789efac83987ca3cca8991314 Mon Sep 17 00:00:00 2001 From: Puneet Lath Date: Fri, 7 Feb 2025 16:35:11 -0800 Subject: [PATCH 9/9] Parse on save also --- src/libs/actions/Policy/Policy.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index 62b131cf2682..d39b7bfe6649 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -3877,7 +3877,8 @@ function setPolicyMaxExpenseAge(policyID: string, maxExpenseAge: string) { function updateCustomRules(policyID: string, customRules: string) { const policy = getPolicy(policyID); const originalCustomRules = policy?.customRules; - if (customRules === originalCustomRules) { + const parsedCustomRules = ReportUtils.getParsedComment(customRules); + if (parsedCustomRules === originalCustomRules) { return; } @@ -3887,7 +3888,7 @@ function updateCustomRules(policyID: string, customRules: string) { onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, value: { - customRules, + customRules: parsedCustomRules, }, }, ], @@ -3919,7 +3920,7 @@ function updateCustomRules(policyID: string, customRules: string) { const parameters = { policyID, - description: customRules, + description: parsedCustomRules, }; API.write(WRITE_COMMANDS.UPDATE_CUSTOM_RULES, parameters, onyxData);