From a36139b7a7c32b352bd05cf0b92b27f2739fa114 Mon Sep 17 00:00:00 2001 From: Nam Le Date: Wed, 12 Jul 2023 08:25:36 +0700 Subject: [PATCH 1/6] fix remove only first request --- src/libs/actions/PersistedRequests.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libs/actions/PersistedRequests.js b/src/libs/actions/PersistedRequests.js index d893ee255287..52e86966b996 100644 --- a/src/libs/actions/PersistedRequests.js +++ b/src/libs/actions/PersistedRequests.js @@ -25,7 +25,10 @@ function save(requestsToPersist) { * @param {Object} requestToRemove */ function remove(requestToRemove) { - persistedRequests = _.reject(persistedRequests, (persistedRequest) => _.isEqual(persistedRequest, requestToRemove)); + const index = _.findIndex(persistedRequests, (persistedRequest) => _.isEqual(persistedRequest, requestToRemove)); + if (index !== -1) { + persistedRequests.splice(index, 1); + } Onyx.set(ONYXKEYS.PERSISTED_REQUESTS, persistedRequests); } From 09774bbf118028360c49f1e44ee2f094c734df0f Mon Sep 17 00:00:00 2001 From: Nam Le Date: Thu, 13 Jul 2023 09:13:19 +0700 Subject: [PATCH 2/6] fix use clone object --- src/libs/actions/PersistedRequests.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/libs/actions/PersistedRequests.js b/src/libs/actions/PersistedRequests.js index 52e86966b996..b46233355d5e 100644 --- a/src/libs/actions/PersistedRequests.js +++ b/src/libs/actions/PersistedRequests.js @@ -25,11 +25,14 @@ function save(requestsToPersist) { * @param {Object} requestToRemove */ function remove(requestToRemove) { - const index = _.findIndex(persistedRequests, (persistedRequest) => _.isEqual(persistedRequest, requestToRemove)); + const persistedRequestsCopy = JSON.parse(JSON.stringify(persistedRequests)); + const index = _.findIndex(persistedRequestsCopy, (persistedRequest) => _.isEqual(persistedRequest, requestToRemove)); if (index !== -1) { - persistedRequests.splice(index, 1); + persistedRequestsCopy.splice(index, 1); + persistedRequests = persistedRequestsCopy; } - Onyx.set(ONYXKEYS.PERSISTED_REQUESTS, persistedRequests); + + Onyx.set(ONYXKEYS.PERSISTED_REQUESTS, persistedRequestsCopy); } /** From a52c6d50a98bfe4fec048b5010dc4d397bb5abf1 Mon Sep 17 00:00:00 2001 From: Nam Le Date: Thu, 13 Jul 2023 09:21:34 +0700 Subject: [PATCH 3/6] use underscore clone --- src/libs/actions/PersistedRequests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/actions/PersistedRequests.js b/src/libs/actions/PersistedRequests.js index b46233355d5e..f2bafb0d131a 100644 --- a/src/libs/actions/PersistedRequests.js +++ b/src/libs/actions/PersistedRequests.js @@ -25,7 +25,7 @@ function save(requestsToPersist) { * @param {Object} requestToRemove */ function remove(requestToRemove) { - const persistedRequestsCopy = JSON.parse(JSON.stringify(persistedRequests)); + const persistedRequestsCopy = _.clone(persistedRequests); const index = _.findIndex(persistedRequestsCopy, (persistedRequest) => _.isEqual(persistedRequest, requestToRemove)); if (index !== -1) { persistedRequestsCopy.splice(index, 1); From 46595c37d5bd4359a2b63839542bbd1be0bff0b2 Mon Sep 17 00:00:00 2001 From: Nam Le Date: Fri, 14 Jul 2023 01:27:03 +0700 Subject: [PATCH 4/6] revert change directly --- src/libs/actions/PersistedRequests.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/libs/actions/PersistedRequests.js b/src/libs/actions/PersistedRequests.js index f2bafb0d131a..7b2b112157b0 100644 --- a/src/libs/actions/PersistedRequests.js +++ b/src/libs/actions/PersistedRequests.js @@ -25,14 +25,12 @@ function save(requestsToPersist) { * @param {Object} requestToRemove */ function remove(requestToRemove) { - const persistedRequestsCopy = _.clone(persistedRequests); - const index = _.findIndex(persistedRequestsCopy, (persistedRequest) => _.isEqual(persistedRequest, requestToRemove)); + const index = _.findIndex(persistedRequests, (persistedRequest) => _.isEqual(persistedRequest, requestToRemove)); if (index !== -1) { - persistedRequestsCopy.splice(index, 1); - persistedRequests = persistedRequestsCopy; + persistedRequests.splice(index, 1); } - Onyx.set(ONYXKEYS.PERSISTED_REQUESTS, persistedRequestsCopy); + Onyx.set(ONYXKEYS.PERSISTED_REQUESTS, persistedRequests); } /** From 94683d9bdf0ce22c1cd7dc238d5e424b7722f8c0 Mon Sep 17 00:00:00 2001 From: Nam Le Date: Fri, 21 Jul 2023 15:18:10 +0700 Subject: [PATCH 5/6] add comment --- src/libs/actions/PersistedRequests.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/libs/actions/PersistedRequests.js b/src/libs/actions/PersistedRequests.js index 7b2b112157b0..651710afc0c8 100644 --- a/src/libs/actions/PersistedRequests.js +++ b/src/libs/actions/PersistedRequests.js @@ -25,6 +25,10 @@ function save(requestsToPersist) { * @param {Object} requestToRemove */ function remove(requestToRemove) { + /** + * Removes the first matching request, even if there are multiple matching requests. + * Because if multiple identical requests are queued. We want to keep the same requests then see more here: https://github.com/Expensify/App/issues/19640 + */ const index = _.findIndex(persistedRequests, (persistedRequest) => _.isEqual(persistedRequest, requestToRemove)); if (index !== -1) { persistedRequests.splice(index, 1); From 9489b257f4712d9904664ee215bef77554f59c3b Mon Sep 17 00:00:00 2001 From: Nam Le Date: Mon, 24 Jul 2023 22:51:40 +0700 Subject: [PATCH 6/6] fix comment --- src/libs/actions/PersistedRequests.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/actions/PersistedRequests.js b/src/libs/actions/PersistedRequests.js index 651710afc0c8..c99ed2ace7fe 100644 --- a/src/libs/actions/PersistedRequests.js +++ b/src/libs/actions/PersistedRequests.js @@ -26,8 +26,8 @@ function save(requestsToPersist) { */ function remove(requestToRemove) { /** - * Removes the first matching request, even if there are multiple matching requests. - * Because if multiple identical requests are queued. We want to keep the same requests then see more here: https://github.com/Expensify/App/issues/19640 + * We only remove the first matching request because the order of requests matters. + * If we were to remove all matching requests, we can end up with a final state that is different than what the user intended. */ const index = _.findIndex(persistedRequests, (persistedRequest) => _.isEqual(persistedRequest, requestToRemove)); if (index !== -1) {