From 504420edff37a30b7a6c81aa37d5d1b3d0e515fb Mon Sep 17 00:00:00 2001 From: Daniel Gale-Rosen Date: Mon, 22 May 2023 15:22:56 -0400 Subject: [PATCH 1/6] initial command --- src/libs/actions/Report.js | 74 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/src/libs/actions/Report.js b/src/libs/actions/Report.js index 6a4cd9fe3050..ae24c313ebad 100644 --- a/src/libs/actions/Report.js +++ b/src/libs/actions/Report.js @@ -1635,6 +1635,79 @@ function leaveRoom(reportID) { navigateToConciergeChat(); } +/** + * Flag a comment as offensive + * + * @param {String} reportID + * @param {Object} reportAction + * @param {String} severity + */ +function flagComment(reportID, reportAction, severity) { + const newDecision = { + "decision": "pending", + }; + + const message = reportAction.message[0]; + const reportActionID = reportAction.reportActionID; + + const updatedDecisions = [...(message.moderationDecisions || []), newDecision]; + + const updatedMessage = { + ...message, + moderationDecisions: updatedDecisions, + }; + + const optimisticReportActions = { + [reportActionID]: { + pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE, + message: [updatedMessage], + }, + }; + + const optimisticData = [ + { + onyxMethod: CONST.ONYX.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${reportID}`, value: optimisticReportActions, + }, + ]; + + const failureData = [ + { + onyxMethod: CONST.ONYX.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${reportID}`, + value: { + [reportActionID]: { + ...reportAction, + pendingAction: null, + }, + }, + }, + ]; + + const successData = [ + { + onyxMethod: CONST.ONYX.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${reportID}`, + value: { + [reportActionID]: { + pendingAction: null, + }, + }, + }, + ]; + + const timestamp = Date.now(); + + const parameters = { + reportID, + severity, + reportActionID, + timestamp, + }; + + API.write('FlagComment', parameters, {optimisticData, successData, failureData}); +} + export { addComment, addAttachment, @@ -1677,4 +1750,5 @@ export { hasAccountIDReacted, shouldShowReportActionNotification, leaveRoom, + flagComment, }; From c18b381d49f701b81ad00f29470150e6d1125af0 Mon Sep 17 00:00:00 2001 From: Daniel Gale-Rosen Date: Wed, 24 May 2023 10:54:07 -0400 Subject: [PATCH 2/6] address comments --- src/CONST.js | 3 +++ src/libs/actions/Report.js | 20 ++++++++------------ 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/CONST.js b/src/CONST.js index a04c20192037..c790af3b1118 100755 --- a/src/CONST.js +++ b/src/CONST.js @@ -2385,6 +2385,9 @@ const CONST = { // This ID is used in SelectionScraper.js to query the DOM for UnreadActionIndicator's // div and then remove it from copied contents in the getHTMLOfSelection() method. UNREAD_ACTION_INDICATOR_ID: 'no-copy-area-unread-action-indicator', + MODERATION: { + MODERATOR_DECISION_PENDING: 'pending', + } }; export default CONST; diff --git a/src/libs/actions/Report.js b/src/libs/actions/Report.js index ae24c313ebad..fbf7542cee79 100644 --- a/src/libs/actions/Report.js +++ b/src/libs/actions/Report.js @@ -1644,7 +1644,7 @@ function leaveRoom(reportID) { */ function flagComment(reportID, reportAction, severity) { const newDecision = { - "decision": "pending", + "decision": CONST.MODERATION.MODERATOR_DECISION_PENDING, }; const message = reportAction.message[0]; @@ -1657,17 +1657,16 @@ function flagComment(reportID, reportAction, severity) { moderationDecisions: updatedDecisions, }; - const optimisticReportActions = { - [reportActionID]: { - pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE, - message: [updatedMessage], - }, - }; - const optimisticData = [ { onyxMethod: CONST.ONYX.METHOD.MERGE, - key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${reportID}`, value: optimisticReportActions, + key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${reportID}`, + value: { + [reportActionID]: { + pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE, + message: [updatedMessage], + }, + }, }, ]; @@ -1696,13 +1695,10 @@ function flagComment(reportID, reportAction, severity) { }, ]; - const timestamp = Date.now(); - const parameters = { reportID, severity, reportActionID, - timestamp, }; API.write('FlagComment', parameters, {optimisticData, successData, failureData}); From ab0b8bc6cb746fce43e4f9349615c4427b0fbdeb Mon Sep 17 00:00:00 2001 From: Daniel Gale-Rosen Date: Wed, 24 May 2023 11:44:05 -0400 Subject: [PATCH 3/6] dont send reportID --- src/libs/actions/Report.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libs/actions/Report.js b/src/libs/actions/Report.js index fbf7542cee79..43bb62e0693e 100644 --- a/src/libs/actions/Report.js +++ b/src/libs/actions/Report.js @@ -1696,7 +1696,6 @@ function flagComment(reportID, reportAction, severity) { ]; const parameters = { - reportID, severity, reportActionID, }; From 1d11f20e0298fba4b851c9e42294f07feddf3f5f Mon Sep 17 00:00:00 2001 From: Daniel Gale-Rosen Date: Wed, 24 May 2023 11:45:13 -0400 Subject: [PATCH 4/6] prettier --- src/CONST.js | 2 +- src/libs/actions/Report.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/CONST.js b/src/CONST.js index c790af3b1118..c9d53b6980bd 100755 --- a/src/CONST.js +++ b/src/CONST.js @@ -2387,7 +2387,7 @@ const CONST = { UNREAD_ACTION_INDICATOR_ID: 'no-copy-area-unread-action-indicator', MODERATION: { MODERATOR_DECISION_PENDING: 'pending', - } + }, }; export default CONST; diff --git a/src/libs/actions/Report.js b/src/libs/actions/Report.js index 43bb62e0693e..4b61df6a4078 100644 --- a/src/libs/actions/Report.js +++ b/src/libs/actions/Report.js @@ -1644,7 +1644,7 @@ function leaveRoom(reportID) { */ function flagComment(reportID, reportAction, severity) { const newDecision = { - "decision": CONST.MODERATION.MODERATOR_DECISION_PENDING, + decision: CONST.MODERATION.MODERATOR_DECISION_PENDING, }; const message = reportAction.message[0]; @@ -1699,7 +1699,7 @@ function flagComment(reportID, reportAction, severity) { severity, reportActionID, }; - + API.write('FlagComment', parameters, {optimisticData, successData, failureData}); } From 2101499263ef1ed2053ef50aa493b48cb910b773 Mon Sep 17 00:00:00 2001 From: Daniel Gale-Rosen Date: Thu, 25 May 2023 12:24:14 -0400 Subject: [PATCH 5/6] update to add two statuses --- src/libs/actions/Report.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/libs/actions/Report.js b/src/libs/actions/Report.js index 4b61df6a4078..029ee89ff952 100644 --- a/src/libs/actions/Report.js +++ b/src/libs/actions/Report.js @@ -1643,9 +1643,16 @@ function leaveRoom(reportID) { * @param {String} severity */ function flagComment(reportID, reportAction, severity) { - const newDecision = { - decision: CONST.MODERATION.MODERATOR_DECISION_PENDING, - }; + let newDecision; + if (severity === CONST.MODERATION.FLAG_SEVERITY_SPAM || severity === CONST.MODERATION.FLAG_SEVERITY_INCONSIDERATE) { + newDecision = { + decision: CONST.MODERATION.MODERATOR_DECISION_PENDING, + }; + } else { + newDecision = { + decision: CONST.MODERATION.MODERATOR_DECISION_PENDING_HIDE, + }; + } const message = reportAction.message[0]; const reportActionID = reportAction.reportActionID; From a2b0689a2ff07195ea6d1e7b996bc4bdc1eb324d Mon Sep 17 00:00:00 2001 From: Daniel Gale-Rosen Date: Thu, 25 May 2023 12:25:39 -0400 Subject: [PATCH 6/6] actually add the constants I was using --- src/CONST.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/CONST.js b/src/CONST.js index c9d53b6980bd..6442d083f644 100755 --- a/src/CONST.js +++ b/src/CONST.js @@ -2387,6 +2387,9 @@ const CONST = { UNREAD_ACTION_INDICATOR_ID: 'no-copy-area-unread-action-indicator', MODERATION: { MODERATOR_DECISION_PENDING: 'pending', + MODERATOR_DECISION_PENDING_HIDE: 'pendingHide', + FLAG_SEVERITY_SPAM: 'spam', + FLAG_SEVERITY_INCONSIDERATE: 'inconsiderate', }, };