-
Notifications
You must be signed in to change notification settings - Fork 2.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove unused report functions #12357
Closed
Closed
Changes from all commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
921e6ae
Remove unused fetchAllReports function
roryabraham e5a6191
Make fetchChatReportsByIDs no longer return a promise
roryabraham e42fde7
Remove fetchChatReportsByIDs and replace usages with openReport
roryabraham 56dc4e2
Stop returning a promise from fetchOrCreateChatReport
roryabraham 0af1291
Remove unused INACCESSIBLE_REPORT error
roryabraham c8e3c91
Remove unused GetReportSummaryList
roryabraham 739c4ea
Remove unused fetchIOUReportID function
roryabraham File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,7 +13,6 @@ import Navigation from '../Navigation/Navigation'; | |
import * as ActiveClientManager from '../ActiveClientManager'; | ||
import Visibility from '../Visibility'; | ||
import ROUTES from '../../ROUTES'; | ||
import Timing from './Timing'; | ||
import * as DeprecatedAPI from '../deprecatedAPI'; | ||
import * as API from '../API'; | ||
import CONFIG from '../../CONFIG'; | ||
|
@@ -216,118 +215,6 @@ function fetchIOUReport(iouReportID, chatReportID) { | |
}); | ||
} | ||
|
||
/** | ||
* Given debtorEmail finds active IOU report ID via GetIOUReport API call | ||
* | ||
* @param {String} debtorEmail | ||
* @returns {Promise} | ||
*/ | ||
function fetchIOUReportID(debtorEmail) { | ||
return DeprecatedAPI.GetIOUReport({ | ||
debtorEmail, | ||
}).then((response) => { | ||
const iouReportID = response.reportID || 0; | ||
if (response.jsonCode !== 200) { | ||
console.error(response.message); | ||
return; | ||
} | ||
if (iouReportID === 0) { | ||
// If there is no IOU report for this user then we will assume it has been paid and do nothing here. | ||
// All reports are initialized with hasOutstandingIOU: false. Since the IOU report we were looking for has | ||
// been settled then there's nothing more to do. | ||
Log.info('GetIOUReport returned a reportID of 0, not fetching IOU report data'); | ||
return; | ||
} | ||
return iouReportID; | ||
}); | ||
} | ||
|
||
/** | ||
* Fetches chat reports when provided a list of chat report IDs. | ||
* If the shouldRedirectIfInaccessible flag is set, we redirect to the Concierge chat | ||
* when we find an inaccessible chat | ||
* @param {Array} chatList | ||
* @param {Boolean} shouldRedirectIfInaccessible | ||
* @returns {Promise<Object[]>} only used internally when fetchAllReports() is called | ||
*/ | ||
function fetchChatReportsByIDs(chatList, shouldRedirectIfInaccessible = false) { | ||
let fetchedReports; | ||
const simplifiedReports = {}; | ||
return DeprecatedAPI.GetReportSummaryList({reportIDList: chatList.join(',')}) | ||
.then(({reportSummaryList, jsonCode}) => { | ||
Log.info('[Report] successfully fetched report data', false, {chatList}); | ||
fetchedReports = reportSummaryList; | ||
|
||
// If we receive a 404 response while fetching a single report, treat that report as inaccessible. | ||
if (jsonCode === 404 && shouldRedirectIfInaccessible) { | ||
throw new Error(CONST.REPORT.ERROR.INACCESSIBLE_REPORT); | ||
} | ||
|
||
return Promise.all(_.map(fetchedReports, (chatReport) => { | ||
// If there aren't any IOU actions, we don't need to fetch any additional data | ||
if (!chatReport.hasIOUAction) { | ||
return; | ||
} | ||
|
||
// Group chat reports cannot and should not be associated with a specific IOU report | ||
const participants = getParticipantEmailsFromReport(chatReport); | ||
if (participants.length > 1) { | ||
return; | ||
} | ||
if (participants.length === 0) { | ||
Log.alert('[Report] Report with IOU action but does not have any participant.', { | ||
reportID: chatReport.reportID, | ||
participants, | ||
}); | ||
return; | ||
} | ||
|
||
return fetchIOUReportID(participants[0]) | ||
.then((iouReportID) => { | ||
if (!iouReportID) { | ||
return Promise.resolve(); | ||
} | ||
|
||
return fetchIOUReport(iouReportID, chatReport.reportID); | ||
}); | ||
})); | ||
}) | ||
.then((iouReportObjects) => { | ||
// Process the reports and store them in Onyx. At the same time we'll save the simplified reports in this | ||
// variable called simplifiedReports which hold the participants (minus the current user) for each report. | ||
// Using this simplifiedReport we can call PersonalDetails.getFromReportParticipants to get the | ||
// personal details of all the participants and even link up their avatars to report icons. | ||
const reportIOUData = {}; | ||
_.each(fetchedReports, (report) => { | ||
const simplifiedReport = getSimplifiedReportObject(report); | ||
simplifiedReports[`${ONYXKEYS.COLLECTION.REPORT}${report.reportID}`] = simplifiedReport; | ||
}); | ||
|
||
_.each(iouReportObjects, (iouReportObject) => { | ||
if (!iouReportObject) { | ||
return; | ||
} | ||
|
||
const iouReportKey = `${ONYXKEYS.COLLECTION.REPORT_IOUS}${iouReportObject.reportID}`; | ||
const reportKey = `${ONYXKEYS.COLLECTION.REPORT}${iouReportObject.chatReportID}`; | ||
reportIOUData[iouReportKey] = iouReportObject; | ||
simplifiedReports[reportKey].iouReportID = iouReportObject.reportID; | ||
simplifiedReports[reportKey].hasOutstandingIOU = iouReportObject.stateNum | ||
=== CONST.REPORT.STATE_NUM.PROCESSING && iouReportObject.total !== 0; | ||
}); | ||
|
||
// We use mergeCollection such that it updates the collection in one go. | ||
// Any withOnyx subscribers to this key will also receive the complete updated props just once | ||
// than updating props for each report and re-rendering had merge been used. | ||
Onyx.mergeCollection(ONYXKEYS.COLLECTION.REPORT_IOUS, reportIOUData); | ||
Onyx.mergeCollection(ONYXKEYS.COLLECTION.REPORT, simplifiedReports); | ||
|
||
// Fetch the personal details if there are any | ||
PersonalDetails.getFromReportParticipants(_.values(simplifiedReports)); | ||
return simplifiedReports; | ||
}); | ||
} | ||
|
||
/** | ||
* Given IOU object, save the data to Onyx. | ||
* | ||
|
@@ -487,14 +374,13 @@ function unsubscribeFromReportChannel(reportID) { | |
* | ||
* @param {String[]} participants | ||
* @param {Boolean} shouldNavigate | ||
* @returns {Promise<Object[]>} | ||
*/ | ||
function fetchOrCreateChatReport(participants, shouldNavigate = true) { | ||
if (participants.length < 2) { | ||
throw new Error('fetchOrCreateChatReport() must have at least two participants.'); | ||
} | ||
|
||
return DeprecatedAPI.CreateChatReport({ | ||
DeprecatedAPI.CreateChatReport({ | ||
emailList: participants.join(','), | ||
}) | ||
.then((data) => { | ||
|
@@ -515,54 +401,6 @@ function fetchOrCreateChatReport(participants, shouldNavigate = true) { | |
// Redirect the logged in person to the new report | ||
Navigation.navigate(ROUTES.getReportRoute(data.reportID)); | ||
} | ||
|
||
// We are returning an array with a report object here since fetchAllReports calls this method or | ||
// fetchChatReportsByIDs which returns an array of report objects. | ||
return [simplifiedReportObject]; | ||
}); | ||
} | ||
|
||
/** | ||
* Get all of our reports | ||
* | ||
* @param {Boolean} shouldRecordHomePageTiming whether or not performance timing should be measured | ||
* @returns {Promise} | ||
*/ | ||
function fetchAllReports( | ||
shouldRecordHomePageTiming = false, | ||
) { | ||
Onyx.set(ONYXKEYS.IS_LOADING_REPORT_DATA, true); | ||
return DeprecatedAPI.Get({ | ||
returnValueList: 'chatList', | ||
}) | ||
.then((response) => { | ||
if (response.jsonCode !== 200) { | ||
return; | ||
} | ||
|
||
// The cast here is necessary as Get rvl='chatList' may return an int or Array | ||
const reportIDs = _.filter(String(response.chatList).split(','), _.identity); | ||
|
||
// Get all the chat reports if they have any, otherwise create one with concierge | ||
if (reportIDs.length > 0) { | ||
return fetchChatReportsByIDs(reportIDs); | ||
} | ||
|
||
return fetchOrCreateChatReport([currentUserEmail, CONST.EMAIL.CONCIERGE], false); | ||
}) | ||
.then((returnedReports) => { | ||
Onyx.set(ONYXKEYS.IS_LOADING_REPORT_DATA, false); | ||
|
||
// If at this point the user still doesn't have a Concierge report, create it for them. | ||
// This means they were a participant in reports before their account was created (e.g. default rooms) | ||
const hasConciergeChat = _.some(returnedReports, report => ReportUtils.isConciergeChatReport(report)); | ||
if (!hasConciergeChat) { | ||
fetchOrCreateChatReport([currentUserEmail, CONST.EMAIL.CONCIERGE], false); | ||
} | ||
|
||
if (shouldRecordHomePageTiming) { | ||
Timing.end(CONST.TIMING.HOMEPAGE_REPORTS_LOADED); | ||
} | ||
}); | ||
} | ||
|
||
|
@@ -969,7 +807,7 @@ function handleReportChanged(report) { | |
// A report can be missing a name if a comment is received via pusher event | ||
// and the report does not yet exist in Onyx (eg. a new DM created with the logged in person) | ||
if (report.reportID && report.reportName === undefined) { | ||
fetchChatReportsByIDs([report.reportID]); | ||
openReport(report.reportID); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is the only risky change – need to make extra sure that |
||
} | ||
} | ||
|
||
|
@@ -1250,8 +1088,8 @@ function addPolicyReport(policy, reportName, visibility) { | |
); | ||
|
||
// Onyx.set is used on the optimistic data so that it is present before navigating to the workspace room. With Onyx.merge the workspace room reportID is not present when | ||
// fetchReportIfNeeded is called on the ReportScreen, so fetchChatReportsByIDs is called which is unnecessary since the optimistic data will be stored in Onyx. | ||
// If there was an error creating the room, then fetchChatReportsByIDs throws an error and the user is navigated away from the report instead of showing the RBR error message. | ||
// fetchReportIfNeeded is called on the ReportScreen, so openReport is called which is unnecessary since the optimistic data will be stored in Onyx. | ||
// If there was an error creating the room, then openReport throws an error and the user is navigated away from the report instead of showing the RBR error message. | ||
// Therefore, Onyx.set is used instead of Onyx.merge. | ||
const optimisticData = [ | ||
{ | ||
|
@@ -1503,9 +1341,7 @@ Onyx.connect({ | |
}); | ||
|
||
export { | ||
fetchAllReports, | ||
fetchOrCreateChatReport, | ||
fetchChatReportsByIDs, | ||
fetchIOUReportByID, | ||
addComment, | ||
addAttachment, | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This timer was being started but never stopped / recorded, because the stop for it was in
fetchAllReports
, which was no longer being called anywhere.