Mail App QA Batch: Grid Date Consistency, Upload Center Search, and Several Workflow Fixes
Executive summary
A batch promotion of nine frontend fixes from development into the QA environment for the Mail application. The changes standardize date display to US format across data grids, replace the Upload Center picker with a searchable, paginated dropdown when adding mail, and resolve several smaller workflow issues (duplicate-folder error handling, misleading toast messages, broken column filters, and inconsistent labels).
Why this was needed
Several inconsistencies and rough edges had accumulated in the Mail app: dates rendered in different formats (UK DD/MM/YYYY, browser-default, abbreviated month) depending on the screen; the Upload Center dropdown loaded every center at once and could be clipped inside modals; the "Mark as Unread" action incorrectly toasted "marked as read"; column filters on the Resolution grids returned 404 errors because the backend has no filter support for those modules; and a sort/label mismatch caused wrong server-side sort keys and confusing placeholder text. These needed to be consolidated and verified together in QA.
Client / user impact
Users see dates in a single, predictable US format (MM/DD/YYYY) across batch document grids, resolution grids, and status details. When adding mail, the Upload Center field is now searchable with results loaded on demand, and prefilled selections always show a readable label. Renaming a folder to an existing name now shows a clear inline error instead of failing silently. Toast messages correctly reflect whether mail was marked read or unread, the Resolution grids no longer surface filters that error out, and the tenant selector uses consistent wording.
Technical scope
Frontend-only changes in apps/mail (12 files, +168/-92), bundling these merged feature PRs:
- Date standardization (#849): replace ad-hoc
toLocaleDateString(en-GB/default/en-USshort) with sharedformatDateTimeConsistent/formatDateTimefrom@dsm/uiinDocumentContents,DocumentGrid,MailResolutionTab,DocumentResolutionTab, andUpdateStatus. - Upload Center async picker (#846, #851): swap the static
Select(anduseGetUploadCenters) inMailFormforAsyncPaginatebacked byuploadCenterServices.getUploadCentersPaginated(search + scroll paging);uploadCentertype changes fromstringtoOption | nullinMailFormData/AddMailsModal, with aUpload Center #<id>fallback label for prefilled batches. Menu uses inlinez-index(not body portal) so it scrolls inside Radix dialogs. - Resolution grid filters (#850): add
isFilterable/filterKey/sortKeytoColumnMeta;DataGridnow respectsisFilterable !== false, usesfilterKeyfor the filter popover, and remaps sort IDs throughmeta.sortKey. All text columns on both Resolution tabs setisFilterable: false. - Folder conflict (feat):
EditFolderModaladds anonErrorhandler usingisConflictErrorto set an inline "folder already exists" error and return to the details step. - Toast fix (#852):
updateBulkReadStatusdrops the hardcoded "Mails marked as read successfully" fallback so the caller's message wins. - Label fix (#847):
ShareWithinSystemDialogplaceholder changed from "entities" to "tenants".
Risk & mitigation
Low overall and confined to the Mail frontend. The widest-reaching change is in the shared DataGrid (sort-key remapping and per-column filter gating), which touches all grids that consume it, so sorting and filtering on unrelated grids should be regression-checked. The Upload Center type change from string to Option | null flows through the Add Mail form and modal; mismatched handling could break submission or prefill. Date helpers are display-only. Mitigation: focused QA on the grids and Add Mail flow listed below; backend behavior is unchanged.
QA validation focus
- Confirm dates render as
MM/DD/YYYY(with time where applicable) on batch document grids, both Resolution tabs (Reported Date), and the resolution status detail. - Add Mail: open the Upload Center dropdown, search and scroll to load more, select a value, and submit; verify prefill from a batch shows a readable label (or
Upload Center #<id>), and that the menu is fully scrollable inside the modal. - Verify the Resolution (Mail and Document) grids no longer show column-filter popovers on text columns and produce no 404s; confirm datetime columns still use the calendar picker.
- On grids with custom backend sort fields, confirm sorting hits the correct server key and returns correctly ordered results.
- Rename a folder to an existing name in Edit Folder and confirm an inline "A folder with this name already exists" error on the details step.
- Trigger Mark as Read and Mark as Unread and confirm each toast matches the action.
- In Share Within System, confirm the selector reads "Select tenants..." / "Loading tenants...".