diff --git a/src/libs/API.js b/src/libs/API.js index f7d5678d3043..d7d8c6d6ba2e 100644 --- a/src/libs/API.js +++ b/src/libs/API.js @@ -1118,6 +1118,19 @@ function UpdatePolicy(parameters) { return Network.post(commandName, parameters); } +/** + * @param {Object} parameters + * @param {String} parameters.policyID + * @param {String} parameters.reportName + * @param {String} parameters.visibility + * @return {Promise} + */ +function CreatePolicyRoom(parameters) { + const commandName = 'CreatePolicyRoom'; + requireParameters(['policyID', 'reportName', 'visibility'], parameters, commandName); + return Network.post(commandName, parameters); +} + export { Authenticate, AuthenticateWithAccountID, @@ -1129,6 +1142,7 @@ export { ChangePassword, CreateChatReport, CreateLogin, + CreatePolicyRoom, DeleteLogin, DeleteBankAccount, Get, diff --git a/src/libs/actions/Report.js b/src/libs/actions/Report.js index 39434b5ab3fc..438618944270 100644 --- a/src/libs/actions/Report.js +++ b/src/libs/actions/Report.js @@ -1419,6 +1419,31 @@ function handleInaccessibleReport() { navigateToConciergeChat(); } +/** + * Creates a policy room and fetches it + * @param {String} policyID + * @param {String} reportName + * @param {String} visibility + * @return {Promise} + */ +function createPolicyRoom(policyID, reportName, visibility) { + return API.CreatePolicyRoom({policyID, reportName, visibility}) + .then((response) => { + if (response.jsonCode !== 200) { + Log.hmmm(response.message); + return; + } + return fetchChatReportsByIDs([response.reportID]); + }) + .then(([{reportID}]) => { + if (!reportID) { + Log.hmmm('Unable to grab policy room after creation'); + return; + } + Navigation.navigate(ROUTES.getReportRoute(reportID)); + }); +} + export { fetchAllReports, fetchActions, @@ -1447,4 +1472,5 @@ export { handleInaccessibleReport, setReportWithDraft, fetchActionsWithLoadingState, + createPolicyRoom, };