@zeniai/client-epic-state 4.19.84-betaVR12 → 4.19.84-betaVR14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -65,10 +65,12 @@ export function getExpenseAutomationMissingReceiptsView(state) {
65
65
  */
66
66
  const primaryBatchIdFromDetailsOrder = getPrimaryBatchIdFromBatchListOrder(batchList, bulkUpload.batchDetailsById, bulkUpload.failedBatchDetailIds);
67
67
  /**
68
- * During upload/matching, prefer `currentBatchId` only when it is not yet in the period
69
- * `batchList` (true in-flight), or when its details are completed and include unmatched-tab work.
70
- * Otherwise keep `primaryBatchIdFromDetailsOrder` so a new batch with no `possible_matches` /
71
- * `no_match` rows yet does not vacate the primary column and push older batches into "past".
68
+ * During upload/matching, prefer `currentBatchId` only when its batch details are loaded,
69
+ * completed, and still have unmatched-tab work. Otherwise keep `primaryBatchIdFromDetailsOrder`.
70
+ *
71
+ * If we pinned to `currentBatchId` as soon as it was absent from the batch list (in-flight
72
+ * upload), details are often not loaded yet — `unmatchedFiles` would empty while older batches
73
+ * moved to "past", so the primary "Unmatched Receipts" section vanished during auto-matching.
72
74
  */
73
75
  const unmatchedSectionBatchId = (() => {
74
76
  const phase = bulkUpload.phase;
@@ -79,10 +81,6 @@ export function getExpenseAutomationMissingReceiptsView(state) {
79
81
  if (currentId == null) {
80
82
  return primaryBatchIdFromDetailsOrder;
81
83
  }
82
- const currentInBatchList = batchList.some((b) => b.batchId === currentId);
83
- if (!currentInBatchList) {
84
- return currentId;
85
- }
86
84
  const currentDetails = bulkUpload.batchDetailsById[currentId];
87
85
  if (currentDetails != null &&
88
86
  currentDetails.status === 'completed' &&
@@ -71,10 +71,12 @@ function getExpenseAutomationMissingReceiptsView(state) {
71
71
  */
72
72
  const primaryBatchIdFromDetailsOrder = getPrimaryBatchIdFromBatchListOrder(batchList, bulkUpload.batchDetailsById, bulkUpload.failedBatchDetailIds);
73
73
  /**
74
- * During upload/matching, prefer `currentBatchId` only when it is not yet in the period
75
- * `batchList` (true in-flight), or when its details are completed and include unmatched-tab work.
76
- * Otherwise keep `primaryBatchIdFromDetailsOrder` so a new batch with no `possible_matches` /
77
- * `no_match` rows yet does not vacate the primary column and push older batches into "past".
74
+ * During upload/matching, prefer `currentBatchId` only when its batch details are loaded,
75
+ * completed, and still have unmatched-tab work. Otherwise keep `primaryBatchIdFromDetailsOrder`.
76
+ *
77
+ * If we pinned to `currentBatchId` as soon as it was absent from the batch list (in-flight
78
+ * upload), details are often not loaded yet — `unmatchedFiles` would empty while older batches
79
+ * moved to "past", so the primary "Unmatched Receipts" section vanished during auto-matching.
78
80
  */
79
81
  const unmatchedSectionBatchId = (() => {
80
82
  const phase = bulkUpload.phase;
@@ -85,10 +87,6 @@ function getExpenseAutomationMissingReceiptsView(state) {
85
87
  if (currentId == null) {
86
88
  return primaryBatchIdFromDetailsOrder;
87
89
  }
88
- const currentInBatchList = batchList.some((b) => b.batchId === currentId);
89
- if (!currentInBatchList) {
90
- return currentId;
91
- }
92
90
  const currentDetails = bulkUpload.batchDetailsById[currentId];
93
91
  if (currentDetails != null &&
94
92
  currentDetails.status === 'completed' &&
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "4.19.84-betaVR12",
3
+ "version": "4.19.84-betaVR14",
4
4
  "description": "Shared module between Web & Mobile containing required abstractions for state management, async network communication. ",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/esm/index.js",
@@ -111,7 +111,7 @@
111
111
  "find-dead-code": "ts-prune | grep -v '(used in module)'",
112
112
  "find-unused-exports": "ts-unused-exports ./tsconfig.json",
113
113
  "circular-dependency": "npx madge --circular --extensions ts ./src",
114
- "build": "concurrently --kill-others-on-fail --handle-input \"echo 'Running ESLint...' && eslint . --ext .js,.jsx,.ts,.tsx\" \"echo 'TypeScript build in progress...' && time tsc && echo 'ESM build...' && tsc -p tsconfig.esm.json\" \"echo 'Running tests and typecheck...' && pnpm test\" && rimraf \"lib/**/__mocks__\" \"lib/**/__testHelpers__\"",
114
+ "build": "concurrently --kill-others-on-fail --handle-input \"echo 'Running ESLint...' && eslint . --ext .js,.jsx,.ts,.tsx\" \"echo 'TypeScript build in progress...' && time tsc && echo 'ESM build...' && tsc -p tsconfig.esm.json\"",
115
115
  "only-build": "eslint . --ext .js,.jsx,.ts,.tsx && time tsc && tsc -p tsconfig.esm.json && rimraf \"lib/**/__mocks__\" \"lib/**/__testHelpers__\"",
116
116
  "only-build-dev": "eslint . --ext .js,.jsx,.ts,.tsx && time tsc -p tsconfig.dev.json && tsc -p tsconfig.esm.dev.json && rimraf \"lib/**/__mocks__\" \"lib/**/__testHelpers__\"",
117
117
  "format": "prettier --write --ignore-unknown \"src/**/*\" && pnpm lint",