diff --git a/src/Contracts/ViewModels.ts b/src/Contracts/ViewModels.ts index 45bf16fc1..4f78015fd 100644 --- a/src/Contracts/ViewModels.ts +++ b/src/Contracts/ViewModels.ts @@ -390,7 +390,6 @@ export interface DataExplorerInputsFrame { sharedThroughputMaximum?: number; sharedThroughputDefault?: number; dataExplorerVersion?: string; - isAuthWithresourceToken?: boolean; defaultCollectionThroughput?: CollectionCreationDefaults; flights?: readonly string[]; } diff --git a/src/Explorer/Controls/Settings/__snapshots__/SettingsComponent.test.tsx.snap b/src/Explorer/Controls/Settings/__snapshots__/SettingsComponent.test.tsx.snap index 9384cab74..742d0b932 100644 --- a/src/Explorer/Controls/Settings/__snapshots__/SettingsComponent.test.tsx.snap +++ b/src/Explorer/Controls/Settings/__snapshots__/SettingsComponent.test.tsx.snap @@ -920,7 +920,6 @@ exports[`SettingsComponent renders 1`] = ` "hasStorageAnalyticsAfecFeature": [Function], "hasWriteAccess": [Function], "isAccountReady": [Function], - "isAuthWithResourceToken": [Function], "isAutoscaleDefaultEnabled": [Function], "isCopyNotebookPaneEnabled": [Function], "isEnableMongoCapabilityPresent": [Function], @@ -2121,7 +2120,6 @@ exports[`SettingsComponent renders 1`] = ` "hasStorageAnalyticsAfecFeature": [Function], "hasWriteAccess": [Function], "isAccountReady": [Function], - "isAuthWithResourceToken": [Function], "isAutoscaleDefaultEnabled": [Function], "isCopyNotebookPaneEnabled": [Function], "isEnableMongoCapabilityPresent": [Function], @@ -3335,7 +3333,6 @@ exports[`SettingsComponent renders 1`] = ` "hasStorageAnalyticsAfecFeature": [Function], "hasWriteAccess": [Function], "isAccountReady": [Function], - "isAuthWithResourceToken": [Function], "isAutoscaleDefaultEnabled": [Function], "isCopyNotebookPaneEnabled": [Function], "isEnableMongoCapabilityPresent": [Function], @@ -4536,7 +4533,6 @@ exports[`SettingsComponent renders 1`] = ` "hasStorageAnalyticsAfecFeature": [Function], "hasWriteAccess": [Function], "isAccountReady": [Function], - "isAuthWithResourceToken": [Function], "isAutoscaleDefaultEnabled": [Function], "isCopyNotebookPaneEnabled": [Function], "isEnableMongoCapabilityPresent": [Function], diff --git a/src/Explorer/Explorer.tsx b/src/Explorer/Explorer.tsx index c75373ff8..c4ea90dfe 100644 --- a/src/Explorer/Explorer.tsx +++ b/src/Explorer/Explorer.tsx @@ -198,9 +198,8 @@ export default class Explorer { public resourceTokenCollectionId: ko.Observable; public resourceTokenCollection: ko.Observable; public resourceTokenPartitionKey: ko.Observable; - public isAuthWithResourceToken: ko.Observable; public isResourceTokenCollectionNodeSelected: ko.Computed; - private resourceTreeForResourceToken: ResourceTreeAdapterForResourceToken; + public resourceTreeForResourceToken: ResourceTreeAdapterForResourceToken; // Tabs public isTabsContentExpanded: ko.Observable; @@ -337,7 +336,9 @@ export default class Explorer { this.isSynapseLinkUpdating = ko.observable(false); this.isAccountReady.subscribe(async (isAccountReady: boolean) => { if (isAccountReady) { - this.isAuthWithResourceToken() ? this.refreshDatabaseForResourceToken() : this.refreshAllDatabases(true); + userContext.authType === AuthType.ResourceToken + ? this.refreshDatabaseForResourceToken() + : this.refreshAllDatabases(true); RouteHandler.getInstance().initHandler(); this.notebookWorkspaceManager = new NotebookWorkspaceManager(); this.arcadiaWorkspaces = ko.observableArray(); @@ -348,7 +349,7 @@ export default class Explorer { Promise.all([this._refreshNotebooksEnabledStateForAccount(), this._refreshSparkEnabledStateForAccount()]).then( async () => { this.isNotebookEnabled( - !this.isAuthWithResourceToken() && + userContext.authType !== AuthType.ResourceToken && ((await this._containsDefaultNotebookWorkspace(this.databaseAccount())) || this.isFeatureEnabled(Constants.Features.enableNotebooks)) ); @@ -405,7 +406,6 @@ export default class Explorer { this.resourceTokenCollectionId = ko.observable(); this.resourceTokenCollection = ko.observable(); this.resourceTokenPartitionKey = ko.observable(); - this.isAuthWithResourceToken = ko.observable(false); this.isGitHubPaneEnabled = ko.observable(false); this.isMongoIndexingEnabled = ko.observable(false); this.isPublishNotebookPaneEnabled = ko.observable(false); @@ -1192,7 +1192,9 @@ export default class Explorer { dataExplorerArea: Constants.Areas.ResourceTree, }); this.isRefreshingExplorer(true); - this.isAuthWithResourceToken() ? this.refreshDatabaseForResourceToken() : this.refreshAllDatabases(); + userContext.authType === AuthType.ResourceToken + ? this.refreshDatabaseForResourceToken() + : this.refreshAllDatabases(); this.refreshNotebookList(); }; @@ -1449,7 +1451,6 @@ export default class Explorer { this.flight(inputs.addCollectionDefaultFlight); } this.isTryCosmosDBSubscription(inputs.isTryCosmosDBSubscription ?? false); - this.isAuthWithResourceToken(inputs.isAuthWithresourceToken ?? false); this.setFeatureFlagsFromFlights(inputs.flights); TelemetryProcessor.traceSuccess( Action.LoadDatabaseAccount, diff --git a/src/Explorer/Menus/CommandBar/CommandBarComponentButtonFactory.test.ts b/src/Explorer/Menus/CommandBar/CommandBarComponentButtonFactory.test.ts index 9bec8f9e9..450f79d26 100644 --- a/src/Explorer/Menus/CommandBar/CommandBarComponentButtonFactory.test.ts +++ b/src/Explorer/Menus/CommandBar/CommandBarComponentButtonFactory.test.ts @@ -1,8 +1,10 @@ import * as ko from "knockout"; -import * as CommandBarComponentButtonFactory from "./CommandBarComponentButtonFactory"; +import { AuthType } from "../../../AuthType"; import { GitHubOAuthService } from "../../../GitHub/GitHubOAuthService"; -import NotebookManager from "../../Notebook/NotebookManager"; +import { updateUserContext } from "../../../UserContext"; import Explorer from "../../Explorer"; +import NotebookManager from "../../Notebook/NotebookManager"; +import * as CommandBarComponentButtonFactory from "./CommandBarComponentButtonFactory"; describe("CommandBarComponentButtonFactory tests", () => { let mockExplorer: Explorer; @@ -13,7 +15,6 @@ describe("CommandBarComponentButtonFactory tests", () => { beforeAll(() => { mockExplorer = {} as Explorer; mockExplorer.addCollectionText = ko.observable("mockText"); - mockExplorer.isAuthWithResourceToken = ko.observable(false); mockExplorer.isPreferredApiTable = ko.computed(() => true); mockExplorer.isPreferredApiMongoDB = ko.computed(() => false); mockExplorer.isPreferredApiCassandra = ko.computed(() => false); @@ -53,7 +54,6 @@ describe("CommandBarComponentButtonFactory tests", () => { beforeAll(() => { mockExplorer = {} as Explorer; mockExplorer.addCollectionText = ko.observable("mockText"); - mockExplorer.isAuthWithResourceToken = ko.observable(false); mockExplorer.isPreferredApiTable = ko.computed(() => true); mockExplorer.isPreferredApiMongoDB = ko.computed(() => false); mockExplorer.isPreferredApiCassandra = ko.computed(() => false); @@ -118,7 +118,6 @@ describe("CommandBarComponentButtonFactory tests", () => { beforeAll(() => { mockExplorer = {} as Explorer; mockExplorer.addCollectionText = ko.observable("mockText"); - mockExplorer.isAuthWithResourceToken = ko.observable(false); mockExplorer.isPreferredApiTable = ko.computed(() => true); mockExplorer.isPreferredApiCassandra = ko.computed(() => false); mockExplorer.isSparkEnabled = ko.observable(true); @@ -199,7 +198,6 @@ describe("CommandBarComponentButtonFactory tests", () => { beforeAll(() => { mockExplorer = {} as Explorer; mockExplorer.addCollectionText = ko.observable("mockText"); - mockExplorer.isAuthWithResourceToken = ko.observable(false); mockExplorer.isPreferredApiTable = ko.computed(() => true); mockExplorer.isPreferredApiMongoDB = ko.computed(() => false); mockExplorer.isSynapseLinkUpdating = ko.observable(false); @@ -281,7 +279,6 @@ describe("CommandBarComponentButtonFactory tests", () => { beforeAll(() => { mockExplorer = {} as Explorer; mockExplorer.addCollectionText = ko.observable("mockText"); - mockExplorer.isAuthWithResourceToken = ko.observable(false); mockExplorer.isPreferredApiTable = ko.computed(() => true); mockExplorer.isPreferredApiMongoDB = ko.computed(() => false); mockExplorer.isPreferredApiCassandra = ko.computed(() => false); @@ -340,12 +337,13 @@ describe("CommandBarComponentButtonFactory tests", () => { beforeAll(() => { mockExplorer = {} as Explorer; mockExplorer.addCollectionText = ko.observable("mockText"); - mockExplorer.isAuthWithResourceToken = ko.observable(true); mockExplorer.isPreferredApiDocumentDB = ko.computed(() => true); mockExplorer.isDatabaseNodeOrNoneSelected = () => true; - mockExplorer.isResourceTokenCollectionNodeSelected = ko.computed(() => true); mockExplorer.isServerlessEnabled = ko.computed(() => false); + updateUserContext({ + authType: AuthType.ResourceToken, + }); }); it("should only show New SQL Query and Open Query buttons", () => { diff --git a/src/Explorer/Menus/CommandBar/CommandBarComponentButtonFactory.tsx b/src/Explorer/Menus/CommandBar/CommandBarComponentButtonFactory.tsx index 35a98cc1e..02c53c01b 100644 --- a/src/Explorer/Menus/CommandBar/CommandBarComponentButtonFactory.tsx +++ b/src/Explorer/Menus/CommandBar/CommandBarComponentButtonFactory.tsx @@ -1,37 +1,38 @@ -import * as ViewModels from "../../../Contracts/ViewModels"; -import { Action, ActionModifiers } from "../../../Shared/Telemetry/TelemetryConstants"; -import { Areas } from "../../../Common/Constants"; -import * as TelemetryProcessor from "../../../Shared/Telemetry/TelemetryProcessor"; - -import AddDatabaseIcon from "../../../../images/AddDatabase.svg"; +import * as React from "react"; import AddCollectionIcon from "../../../../images/AddCollection.svg"; +import AddDatabaseIcon from "../../../../images/AddDatabase.svg"; import AddSqlQueryIcon from "../../../../images/AddSqlQuery_16x16.svg"; -import BrowseQueriesIcon from "../../../../images/BrowseQuery.svg"; -import * as Constants from "../../../Common/Constants"; -import OpenInTabIcon from "../../../../images/open-in-tab.svg"; -import OpenQueryFromDiskIcon from "../../../../images/OpenQueryFromDisk.svg"; -import CosmosTerminalIcon from "../../../../images/Cosmos-Terminal.svg"; -import HostedTerminalIcon from "../../../../images/Hosted-Terminal.svg"; import AddStoredProcedureIcon from "../../../../images/AddStoredProcedure.svg"; -import SettingsIcon from "../../../../images/settings_15x15.svg"; -import AddUdfIcon from "../../../../images/AddUdf.svg"; import AddTriggerIcon from "../../../../images/AddTrigger.svg"; +import AddUdfIcon from "../../../../images/AddUdf.svg"; +import BrowseQueriesIcon from "../../../../images/BrowseQuery.svg"; +import CosmosTerminalIcon from "../../../../images/Cosmos-Terminal.svg"; import FeedbackIcon from "../../../../images/Feedback-Command.svg"; +import GitHubIcon from "../../../../images/github.svg"; +import HostedTerminalIcon from "../../../../images/Hosted-Terminal.svg"; import EnableNotebooksIcon from "../../../../images/notebook/Notebook-enable.svg"; import NewNotebookIcon from "../../../../images/notebook/Notebook-new.svg"; import ResetWorkspaceIcon from "../../../../images/notebook/Notebook-reset-workspace.svg"; -import GitHubIcon from "../../../../images/github.svg"; +import OpenInTabIcon from "../../../../images/open-in-tab.svg"; +import OpenQueryFromDiskIcon from "../../../../images/OpenQueryFromDisk.svg"; +import SettingsIcon from "../../../../images/settings_15x15.svg"; import SynapseIcon from "../../../../images/synapse-link.svg"; +import { AuthType } from "../../../AuthType"; +import * as Constants from "../../../Common/Constants"; +import { Areas } from "../../../Common/Constants"; import { configContext, Platform } from "../../../ConfigContext"; -import Explorer from "../../Explorer"; +import * as ViewModels from "../../../Contracts/ViewModels"; +import { Action, ActionModifiers } from "../../../Shared/Telemetry/TelemetryConstants"; +import * as TelemetryProcessor from "../../../Shared/Telemetry/TelemetryProcessor"; +import { userContext } from "../../../UserContext"; import { CommandButtonComponentProps } from "../../Controls/CommandButton/CommandButtonComponent"; -import * as React from "react"; +import Explorer from "../../Explorer"; import { OpenFullScreen } from "../../OpenFullScreen"; let counter = 0; export function createStaticCommandBarButtons(container: Explorer): CommandButtonComponentProps[] { - if (container.isAuthWithResourceToken()) { + if (userContext.authType === AuthType.ResourceToken) { return createStaticCommandBarButtonsForResourceToken(container); } diff --git a/src/Explorer/SplashScreen/SplashScreen.tsx b/src/Explorer/SplashScreen/SplashScreen.tsx index acd4d5190..dd8bbb901 100644 --- a/src/Explorer/SplashScreen/SplashScreen.tsx +++ b/src/Explorer/SplashScreen/SplashScreen.tsx @@ -1,25 +1,26 @@ /** * Accordion top class */ -import * as React from "react"; -import * as ViewModels from "../../Contracts/ViewModels"; -import * as Constants from "../../Common/Constants"; import { Link } from "office-ui-fabric-react/lib/Link"; +import * as React from "react"; +import AddDatabaseIcon from "../../../images/AddDatabase.svg"; +import NewQueryIcon from "../../../images/AddSqlQuery_16x16.svg"; +import NewStoredProcedureIcon from "../../../images/AddStoredProcedure.svg"; +import OpenQueryIcon from "../../../images/BrowseQuery.svg"; import NewContainerIcon from "../../../images/Hero-new-container.svg"; import NewNotebookIcon from "../../../images/Hero-new-notebook.svg"; -import NewQueryIcon from "../../../images/AddSqlQuery_16x16.svg"; -import OpenQueryIcon from "../../../images/BrowseQuery.svg"; -import NewStoredProcedureIcon from "../../../images/AddStoredProcedure.svg"; -import ScaleAndSettingsIcon from "../../../images/Scale_15x15.svg"; -import * as MostRecentActivity from "../MostRecentActivity/MostRecentActivity"; -import AddDatabaseIcon from "../../../images/AddDatabase.svg"; import SampleIcon from "../../../images/Hero-sample.svg"; -import { DataSamplesUtil } from "../DataSamples/DataSamplesUtil"; -import Explorer from "../Explorer"; +import NotebookIcon from "../../../images/notebook/Notebook-resource.svg"; +import ScaleAndSettingsIcon from "../../../images/Scale_15x15.svg"; +import CollectionIcon from "../../../images/tree-collection.svg"; +import { AuthType } from "../../AuthType"; +import * as Constants from "../../Common/Constants"; +import * as ViewModels from "../../Contracts/ViewModels"; import { userContext } from "../../UserContext"; import { FeaturePanelLauncher } from "../Controls/FeaturePanel/FeaturePanelLauncher"; -import CollectionIcon from "../../../images/tree-collection.svg"; -import NotebookIcon from "../../../images/notebook/Notebook-resource.svg"; +import { DataSamplesUtil } from "../DataSamples/DataSamplesUtil"; +import Explorer from "../Explorer"; +import * as MostRecentActivity from "../MostRecentActivity/MostRecentActivity"; export interface SplashScreenItem { iconSrc: string; @@ -220,7 +221,7 @@ export class SplashScreen extends React.Component { private createCommonTaskItems(): SplashScreenItem[] { const items: SplashScreenItem[] = []; - if (this.container.isAuthWithResourceToken()) { + if (userContext.authType === AuthType.ResourceToken) { return items; } diff --git a/src/Main.tsx b/src/Main.tsx index 81bb6ea33..c6631c496 100644 --- a/src/Main.tsx +++ b/src/Main.tsx @@ -37,6 +37,7 @@ import "../less/TableStyles/EntityEditor.less"; import "../less/TableStyles/fulldatatables.less"; import "../less/TableStyles/queryBuilder.less"; import "../less/tree.less"; +import { AuthType } from "./AuthType"; import "./Explorer/Controls/Accordion/AccordionComponent.less"; import "./Explorer/Controls/CollapsiblePanel/CollapsiblePanelComponent.less"; import { Dialog, DialogProps } from "./Explorer/Controls/Dialog"; @@ -65,6 +66,7 @@ import { KOCommentEnd, KOCommentIfStart } from "./koComment"; import "./Libs/is-integer-polyfill"; import "./Libs/jquery"; import "./Shared/appInsights"; +import { userContext } from "./UserContext"; initializeIcons(); @@ -154,11 +156,11 @@ const App: React.FunctionComponent = () => { -
-
+ {userContext.authType === AuthType.ResourceToken ? ( +
+ ) : ( +
+ )}
{/* Collections Window - End */}
diff --git a/src/hooks/useKnockoutExplorer.ts b/src/hooks/useKnockoutExplorer.ts index ada6fe273..ff5609915 100644 --- a/src/hooks/useKnockoutExplorer.ts +++ b/src/hooks/useKnockoutExplorer.ts @@ -159,7 +159,6 @@ function configureHostedWithResourceToken(config: ResourceToken, explorerParams: explorer.configure({ databaseAccount, features: extractFeatures(), - isAuthWithresourceToken: true, }); explorer.isRefreshingExplorer(false); return explorer;