From 6167f94bc3c86002387e47c3e55264a7162f824e Mon Sep 17 00:00:00 2001 From: BChoudhury-ms Date: Mon, 29 Dec 2025 21:46:47 +0530 Subject: [PATCH 1/4] fix: restore SidePanel component for Container Copy feature (#2295) --- src/Main.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Main.tsx b/src/Main.tsx index ddb6a22fe..f30ff9902 100644 --- a/src/Main.tsx +++ b/src/Main.tsx @@ -125,7 +125,10 @@ const App = (): JSX.Element => {
{userContext.features.enableContainerCopy && userContext.apiType === "SQL" ? ( - + <> + + + ) : ( )} From c8ebca6da42cbb444cbc724a2813a35436700c47 Mon Sep 17 00:00:00 2001 From: sakshigupta12feb Date: Mon, 5 Jan 2026 17:02:19 +0530 Subject: [PATCH 2/4] Fixed homepage UI for fabric (#2304) * Fixed homePage UI for fabric Co-authored-by: Sakshi Gupta --- less/documentDBFabric.less | 1 + 1 file changed, 1 insertion(+) diff --git a/less/documentDBFabric.less b/less/documentDBFabric.less index 7e3c15429..c1c0ec00c 100644 --- a/less/documentDBFabric.less +++ b/less/documentDBFabric.less @@ -218,6 +218,7 @@ a:focus { .tabPanesContainer { overflow: auto !important; + display: flex; } .tabs-container { From 258a6286e70cee53be5cb61a8c25608dc6c5e8a7 Mon Sep 17 00:00:00 2001 From: BChoudhury-ms Date: Tue, 6 Jan 2026 21:12:19 +0530 Subject: [PATCH 3/4] refactor(dataTransfers): replace fetch with armRequest for pagination (#2305) * refactor(dataTransfers): replace fetch with armRequest for pagination * added comment for next link url parsing --- src/Common/dataAccess/dataTransfers.ts | 32 ++++++++++++++++++-------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/Common/dataAccess/dataTransfers.ts b/src/Common/dataAccess/dataTransfers.ts index e639f9965..3e8829486 100644 --- a/src/Common/dataAccess/dataTransfers.ts +++ b/src/Common/dataAccess/dataTransfers.ts @@ -1,3 +1,4 @@ +import { configContext } from "ConfigContext"; import { ApiType, userContext } from "UserContext"; import * as NotificationConsoleUtils from "Utils/NotificationConsoleUtils"; import { @@ -14,9 +15,12 @@ import { DataTransferJobFeedResults, DataTransferJobGetResults, } from "Utils/arm/generatedClients/dataTransferService/types"; +import { armRequest } from "Utils/arm/request"; import { addToPolling, removeFromPolling, updateDataTransferJob, useDataTransferJobs } from "hooks/useDataTransferJobs"; import promiseRetry, { AbortError, FailedAttemptError } from "p-retry"; +export const DATA_TRANSFER_JOB_API_VERSION = "2025-05-01-preview"; + export interface DataTransferParams { jobName: string; apiType: ApiType; @@ -33,26 +37,34 @@ export const getDataTransferJobs = async ( subscriptionId: string, resourceGroup: string, accountName: string, + signal?: AbortSignal, ): Promise => { let dataTransferJobs: DataTransferJobGetResults[] = []; let dataTransferFeeds: DataTransferJobFeedResults = await listByDatabaseAccount( subscriptionId, resourceGroup, accountName, + signal, ); dataTransferJobs = [...dataTransferJobs, ...(dataTransferFeeds?.value || [])]; while (dataTransferFeeds?.nextLink) { - const nextResponse = await window.fetch(dataTransferFeeds.nextLink, { - headers: { - Authorization: userContext.authorizationToken, - }, + /** + * The `nextLink` URL returned by the Cosmos DB SQL API pointed to an incorrect endpoint, causing timeouts. + * (i.e: https://cdbmgmtprodby.documents.azure.com:450/subscriptions/{subId}/resourceGroups/{rg}/providers/Microsoft.DocumentDB/databaseAccounts/{account}/sql/dataTransferJobs?$top=100&$skiptoken=...) + * We manipulate the URL by parsing it to extract the path and query parameters, + * then construct the correct URL for the Azure Resource Manager (ARM) API. + * This ensures that the request is made to the correct base URL (`configContext.ARM_ENDPOINT`), + * which is required for ARM operations. + */ + const parsedUrl = new URL(dataTransferFeeds.nextLink); + const nextUrlPath = parsedUrl.pathname + parsedUrl.search; + dataTransferFeeds = await armRequest({ + host: configContext.ARM_ENDPOINT, + path: nextUrlPath, + method: "GET", + apiVersion: DATA_TRANSFER_JOB_API_VERSION, }); - if (nextResponse.ok) { - dataTransferFeeds = await nextResponse.json(); - dataTransferJobs = [...dataTransferJobs, ...(dataTransferFeeds?.value || [])]; - } else { - break; - } + dataTransferJobs.push(...(dataTransferFeeds?.value || [])); } return dataTransferJobs; }; From 53288dec6fe2bb46c499089f47ff9ef74d21e1be Mon Sep 17 00:00:00 2001 From: BChoudhury-ms Date: Tue, 6 Jan 2026 21:19:58 +0530 Subject: [PATCH 4/4] feat: add test identifiers (data-test) to Container Copy components (#2306) --- src/Common/LoadingOverlay.tsx | 1 + .../LoadingOverlay.test.tsx.snap | 4 ++ .../AssignPermissions/AddManagedIdentity.tsx | 1 + .../AddReadPermissionToDefaultIdentity.tsx | 1 + .../AssignPermissions/AssignPermissions.tsx | 13 ++++-- .../DefaultManagedIdentity.tsx | 1 + .../AssignPermissions/PointInTimeRestore.tsx | 2 + .../AddManagedIdentity.test.tsx.snap | 6 +++ ...dPermissionToDefaultIdentity.test.tsx.snap | 6 +++ .../AssignPermissions.test.tsx.snap | 42 +++++++++++++++++++ .../DefaultManagedIdentity.test.tsx.snap | 5 +++ .../PointInTimeRestore.test.tsx.snap | 5 +++ .../Screens/Components/NavigationControls.tsx | 18 ++++++-- .../Screens/Components/PopoverContainer.tsx | 1 + .../PopoverContainer.test.tsx.snap | 8 ++++ .../Screens/CreateCopyJobScreens.tsx | 1 + .../Screens/PreviewCopyJob/PreviewCopyJob.tsx | 8 ++-- .../PreviewCopyJob.test.tsx.snap | 34 +++++++++++++++ .../Components/AccountDropdown.test.tsx | 27 +++++++++--- .../Components/AccountDropdown.tsx | 13 ++++-- .../Components/MigrationTypeCheckbox.tsx | 2 +- .../MigrationTypeCheckbox.test.tsx.snap | 2 + .../SelectSourceAndTargetContainers.tsx | 8 +++- .../DatabaseContainerSection.test.tsx | 6 +++ .../components/DatabaseContainerSection.tsx | 3 ++ .../DatabaseContainerSection.test.tsx.snap | 8 ++++ .../Components/CopyJobActionMenu.tsx | 1 + .../Components/CopyJobsList.tsx | 1 + .../ContainerCopy/Types/CopyJobTypes.ts | 1 + 29 files changed, 206 insertions(+), 23 deletions(-) diff --git a/src/Common/LoadingOverlay.tsx b/src/Common/LoadingOverlay.tsx index 320576533..2cbf34213 100644 --- a/src/Common/LoadingOverlay.tsx +++ b/src/Common/LoadingOverlay.tsx @@ -13,6 +13,7 @@ const LoadingOverlay: React.FC = ({ isLoading, label }) => return (
= () => { = ({ id, title, Component, completed, disabled }) => ( - + {title} @@ -25,13 +25,13 @@ const PermissionSection: React.FC = ({ id, title, Compo height={completed ? 20 : 24} /> - + ); -const PermissionGroup: React.FC = ({ title, description, sections }) => { +const PermissionGroup: React.FC = ({ id, title, description, sections }) => { const [openItems, setOpenItems] = React.useState([]); useEffect(() => { @@ -44,6 +44,7 @@ const PermissionGroup: React.FC = ({ title, description, return ( { }, []); return ( - + {isSameAccount && copyJobState.migrationType === CopyJobMigrationType.Online ? ContainerCopyMessages.assignPermissions.intraAccountOnlineDescription( diff --git a/src/Explorer/ContainerCopy/CreateCopyJob/Screens/AssignPermissions/DefaultManagedIdentity.tsx b/src/Explorer/ContainerCopy/CreateCopyJob/Screens/AssignPermissions/DefaultManagedIdentity.tsx index 69e12e72e..3eeb60bbf 100644 --- a/src/Explorer/ContainerCopy/CreateCopyJob/Screens/AssignPermissions/DefaultManagedIdentity.tsx +++ b/src/Explorer/ContainerCopy/CreateCopyJob/Screens/AssignPermissions/DefaultManagedIdentity.tsx @@ -31,6 +31,7 @@ const DefaultManagedIdentity: React.FC = () => {
{ {showRefreshButton ? ( { /> ) : (
Incomplete Component @@ -142,6 +147,7 @@ exports[`AssignPermissions Component Accordion Behavior should render accordion
Incomplete Component @@ -339,6 +350,7 @@ exports[`AssignPermissions Component Edge Cases should calculate correct indent
Incomplete Component @@ -536,6 +553,7 @@ exports[`AssignPermissions Component Edge Cases should calculate correct indent
Incomplete Component @@ -733,6 +756,7 @@ exports[`AssignPermissions Component Edge Cases should handle missing account na
@@ -301,6 +305,7 @@ exports[`PointInTimeRestore Snapshots should match snapshot with refresh button