diff --git a/src/Common/dataAccess/readCollectionOffer.ts b/src/Common/dataAccess/readCollectionOffer.ts index 6fb6e9e4b..d3c8e25cd 100644 --- a/src/Common/dataAccess/readCollectionOffer.ts +++ b/src/Common/dataAccess/readCollectionOffer.ts @@ -1,3 +1,4 @@ +import { isFabric } from "Platform/Fabric/FabricUtil"; import { AuthType } from "../../AuthType"; import { Offer, ReadCollectionOfferParams } from "../../Contracts/DataModels"; import { userContext } from "../../UserContext"; @@ -13,6 +14,11 @@ import { readOfferWithSDK } from "./readOfferWithSDK"; export const readCollectionOffer = async (params: ReadCollectionOfferParams): Promise => { const clearMessage = logConsoleProgress(`Querying offer for collection ${params.collectionId}`); + if (isFabric()) { + // Not exposing offers in Fabric + return undefined; + } + try { if ( userContext.authType === AuthType.AAD && diff --git a/src/Explorer/Controls/Settings/SettingsComponent.tsx b/src/Explorer/Controls/Settings/SettingsComponent.tsx index 720bef874..5364eaa15 100644 --- a/src/Explorer/Controls/Settings/SettingsComponent.tsx +++ b/src/Explorer/Controls/Settings/SettingsComponent.tsx @@ -12,6 +12,7 @@ import { ThroughputBucketsComponentProps, } from "Explorer/Controls/Settings/SettingsSubComponents/ThroughputInputComponents/ThroughputBucketsComponent"; import { useDatabases } from "Explorer/useDatabases"; +import { isFabricNative } from "Platform/Fabric/FabricUtil"; import { isFullTextSearchEnabled, isVectorSearchEnabled } from "Utils/CapabilityUtils"; import { isRunningOnPublicCloud } from "Utils/CloudUtils"; import * as React from "react"; @@ -1270,6 +1271,7 @@ export class SettingsComponent extends React.Component = ({ database, collection, explorer }) => { +export const PartitionKeyComponent: React.FC = ({ + database, + collection, + explorer, + isReadOnly, +}) => { const { dataTransferJobs } = useDataTransferJobs(); const [portalDataTransferJob, setPortalDataTransferJob] = React.useState(null); React.useEffect(() => { + if (isReadOnly) { + return; + } + const loadDataTransferJobs = refreshDataTransferOperations; loadDataTransferJobs(); - }, []); + }, [isReadOnly]); React.useEffect(() => { const currentJob = findPortalDataTransferJob(); @@ -163,56 +173,61 @@ export const PartitionKeyComponent: React.FC = ({ da - - To safeguard the integrity of the data being copied to the new container, ensure that no updates are made to the - source container for the entire duration of the partition key change process. - - Learn more - - - - To change the partition key, a new destination container must be created or an existing destination container - selected. Data will then be copied to the destination container. - - {configContext.platform !== Platform.Emulator && ( - - )} - {portalDataTransferJob && ( - - {partitionKeyName} change job - - - {isCurrentJobInProgress(portalDataTransferJob) && ( - cancelRunningDataTransferJob(portalDataTransferJob)} /> - )} - - + + {!isReadOnly && ( + <> + + To safeguard the integrity of the data being copied to the new container, ensure that no updates are made to + the source container for the entire duration of the partition key change process. + + Learn more + + + + To change the partition key, a new destination container must be created or an existing destination + container selected. Data will then be copied to the destination container. + + {configContext.platform !== Platform.Emulator && ( + + )} + {portalDataTransferJob && ( + + {partitionKeyName} change job + + + {isCurrentJobInProgress(portalDataTransferJob) && ( + cancelRunningDataTransferJob(portalDataTransferJob)} /> + )} + + + )} + )} ); diff --git a/src/Explorer/Tree/treeNodeUtil.tsx b/src/Explorer/Tree/treeNodeUtil.tsx index 60fe9079b..f8dea59ab 100644 --- a/src/Explorer/Tree/treeNodeUtil.tsx +++ b/src/Explorer/Tree/treeNodeUtil.tsx @@ -6,7 +6,7 @@ import StoredProcedure from "Explorer/Tree/StoredProcedure"; import Trigger from "Explorer/Tree/Trigger"; import UserDefinedFunction from "Explorer/Tree/UserDefinedFunction"; import { useDatabases } from "Explorer/useDatabases"; -import { isFabricMirrored } from "Platform/Fabric/FabricUtil"; +import { isFabric, isFabricMirrored, isFabricNative } from "Platform/Fabric/FabricUtil"; import { getItemName } from "Utils/APITypeUtils"; import { isServerlessAccount } from "Utils/CapabilityUtils"; import { useTabs } from "hooks/useTabs"; @@ -23,7 +23,7 @@ import { useNotebook } from "../Notebook/useNotebook"; import { useSelectedNode } from "../useSelectedNode"; export const shouldShowScriptNodes = (): boolean => { - return !isFabricMirrored() && (userContext.apiType === "SQL" || userContext.apiType === "Gremlin"); + return !isFabric() && (userContext.apiType === "SQL" || userContext.apiType === "Gremlin"); }; const TreeDatabaseIcon = ; @@ -219,7 +219,7 @@ export const buildCollectionNode = ( ): TreeNode => { let children: TreeNode[]; // Flat Tree for Fabric - if (configContext.platform !== Platform.Fabric) { + if (!isFabricMirrored()) { children = buildCollectionNodeChildren(database, collection, isNotebookEnabled, container, refreshActiveTab); } @@ -317,7 +317,7 @@ const buildCollectionNodeChildren = ( children.push({ id, - label: database.isDatabaseShared() || isServerlessAccount() ? "Settings" : "Scale & Settings", + label: database.isDatabaseShared() || isServerlessAccount() || isFabricNative() ? "Settings" : "Scale & Settings", onClick: collection.onSettingsClick.bind(collection), isSelected: () => useSelectedNode