From 432eb2c80c9cd84c48bb5214ecd78b29054774c3 Mon Sep 17 00:00:00 2001 From: Laurent Nguyen Date: Fri, 19 Jan 2024 10:28:38 +0000 Subject: [PATCH] Update message de->fabric to v3 --- src/Common/CosmosClient.ts | 4 +- src/Common/MessageHandler.ts | 3 +- src/Contracts/DataExplorerMessagesContract.ts | 43 ++++++------------- src/Contracts/FabricMessageTypes.ts | 19 ++++++++ src/Contracts/MessageTypes.ts | 16 +------ src/Platform/Fabric/FabricUtil.ts | 4 +- src/hooks/useKnockoutExplorer.ts | 3 +- 7 files changed, 42 insertions(+), 50 deletions(-) create mode 100644 src/Contracts/FabricMessageTypes.ts diff --git a/src/Common/CosmosClient.ts b/src/Common/CosmosClient.ts index f35efbd00..2a1913c83 100644 --- a/src/Common/CosmosClient.ts +++ b/src/Common/CosmosClient.ts @@ -1,7 +1,7 @@ import * as Cosmos from "@azure/cosmos"; import { sendCachedDataMessage } from "Common/MessageHandler"; import { getAuthorizationTokenUsingResourceTokens } from "Common/getAuthorizationTokenUsingResourceTokens"; -import { AuthorizationToken, MessageTypes } from "Contracts/MessageTypes"; +import { AuthorizationToken, FabricMessageTypes } from "Contracts/FabricMessageTypes"; import { checkDatabaseResourceTokensValidity } from "Platform/Fabric/FabricUtil"; import { LocalStorageUtility, StorageKey } from "Shared/StorageUtility"; import { AuthType } from "../AuthType"; @@ -53,7 +53,7 @@ export const tokenProvider = async (requestInfo: Cosmos.RequestInfo) => { case Cosmos.ResourceType.permission: // User master tokens const authorizationToken = await sendCachedDataMessage( - MessageTypes.GetAuthorizationToken, + FabricMessageTypes.GetAuthorizationToken, [requestInfo], userContext.fabricContext.connectionId, ); diff --git a/src/Common/MessageHandler.ts b/src/Common/MessageHandler.ts index 0d8304d95..378c58b5f 100644 --- a/src/Common/MessageHandler.ts +++ b/src/Common/MessageHandler.ts @@ -1,3 +1,4 @@ +import { FabricMessageTypes } from "Contracts/FabricMessageTypes"; import Q from "q"; import * as _ from "underscore"; import { MessageTypes } from "../Contracts/ExplorerContracts"; @@ -36,7 +37,7 @@ export function handleCachedDataMessage(message: any): void { * @returns */ export function sendCachedDataMessage( - messageType: MessageTypes, + messageType: MessageTypes | FabricMessageTypes, params: Object[], scope?: string, timeoutInMs?: number, diff --git a/src/Contracts/DataExplorerMessagesContract.ts b/src/Contracts/DataExplorerMessagesContract.ts index e47e4c384..5055ab5a3 100644 --- a/src/Contracts/DataExplorerMessagesContract.ts +++ b/src/Contracts/DataExplorerMessagesContract.ts @@ -1,39 +1,24 @@ -import { MessageTypes } from "./MessageTypes"; +import { FabricMessageTypes } from "./FabricMessageTypes"; // This is the current version of these messages -export const DATA_EXPLORER_RPC_VERSION = "2"; +export const DATA_EXPLORER_RPC_VERSION = "3"; // Data Explorer to Fabric - -// TODO Remove when upgrading to Fabric v2 -export type DataExploreMessageV1 = - | "ready" +export type DataExploreMessageV3 = | { - type: MessageTypes.GetAuthorizationToken; - id: string; - params: GetCosmosTokenMessageOptions[]; - } + type: FabricMessageTypes.Ready; + id: string; + params: [string]; // version + } | { - type: MessageTypes.GetAllResourceTokens; - id: string; - }; -// ----------------------------- - -export type DataExploreMessageV2 = + type: FabricMessageTypes.GetAuthorizationToken; + id: string; + params: GetCosmosTokenMessageOptions[]; + } | { - type: MessageTypes.Ready; - id: string; - params: [string]; // version - } - | { - type: MessageTypes.GetAuthorizationToken; - id: string; - params: GetCosmosTokenMessageOptions[]; - } - | { - type: MessageTypes.GetAllResourceTokens; - id: string; - }; + type: FabricMessageTypes.GetAllResourceTokens; + id: string; + }; export type GetCosmosTokenMessageOptions = { verb: "connect" | "delete" | "get" | "head" | "options" | "patch" | "post" | "put" | "trace"; diff --git a/src/Contracts/FabricMessageTypes.ts b/src/Contracts/FabricMessageTypes.ts new file mode 100644 index 000000000..3b59ca1c3 --- /dev/null +++ b/src/Contracts/FabricMessageTypes.ts @@ -0,0 +1,19 @@ +/** + * Data Explorer -> Fabric communication. + * + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * WARNING: !!!!!!! YOU CAN ONLY ADD NEW TYPES TO THE END OF THIS ENUM !!!!!!! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * + * Enum are integers, so inserting or deleting a type will break the communication. + */ +export enum FabricMessageTypes { + GetAuthorizationToken = "GetAuthorizationToken", + GetAllResourceTokens = "GetAllResourceTokens", + Ready = "Ready", +} + +export interface AuthorizationToken { + XDate: string; + PrimaryReadWriteToken: string; +} diff --git a/src/Contracts/MessageTypes.ts b/src/Contracts/MessageTypes.ts index 75d11b426..3daeda669 100644 --- a/src/Contracts/MessageTypes.ts +++ b/src/Contracts/MessageTypes.ts @@ -1,12 +1,6 @@ /** * Messaging types used with Data Explorer <-> Portal communication, - * Hosted <-> Explorer communication and Data Explorer -> Fabric communication. - * - * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - * WARNING: !!!!!!! YOU CAN ONLY ADD NEW TYPES TO THE END OF THIS ENUM !!!!!!! - * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - * - * Enum are integers, so inserting or deleting a type will break the communication. + * Hosted <-> Explorer communication */ export enum MessageTypes { TelemetryInfo, @@ -43,12 +37,4 @@ export enum MessageTypes { DisplayNPSSurvey, OpenVCoreMongoNetworkingBlade, OpenVCoreMongoConnectionStringsBlade, - GetAuthorizationToken, // Data Explorer -> Fabric - GetAllResourceTokens, // Data Explorer -> Fabric - Ready, // Data Explorer -> Fabric -} - -export interface AuthorizationToken { - XDate: string; - PrimaryReadWriteToken: string; } diff --git a/src/Platform/Fabric/FabricUtil.ts b/src/Platform/Fabric/FabricUtil.ts index 99bf61898..53c38f988 100644 --- a/src/Platform/Fabric/FabricUtil.ts +++ b/src/Platform/Fabric/FabricUtil.ts @@ -1,6 +1,6 @@ import { sendCachedDataMessage } from "Common/MessageHandler"; +import { FabricMessageTypes } from "Contracts/FabricMessageTypes"; import { FabricDatabaseConnectionInfo } from "Contracts/FabricMessagesContract"; -import { MessageTypes } from "Contracts/MessageTypes"; import { updateUserContext, userContext } from "UserContext"; import { logConsoleError } from "Utils/NotificationConsoleUtils"; @@ -19,7 +19,7 @@ const requestDatabaseResourceTokens = async (): Promise => { lastRequestTimestamp = Date.now(); try { const fabricDatabaseConnectionInfo = await sendCachedDataMessage( - MessageTypes.GetAllResourceTokens, + FabricMessageTypes.GetAllResourceTokens, [], userContext.fabricContext.connectionId, ); diff --git a/src/hooks/useKnockoutExplorer.ts b/src/hooks/useKnockoutExplorer.ts index ce2d03874..6bbe37583 100644 --- a/src/hooks/useKnockoutExplorer.ts +++ b/src/hooks/useKnockoutExplorer.ts @@ -1,5 +1,6 @@ import { createUri } from "Common/UrlUtility"; import { DATA_EXPLORER_RPC_VERSION } from "Contracts/DataExplorerMessagesContract"; +import { FabricMessageTypes } from "Contracts/FabricMessageTypes"; import { FABRIC_RPC_VERSION, FabricMessageV2 } from "Contracts/FabricMessagesContract"; import Explorer from "Explorer/Explorer"; import { useCommandBar } from "Explorer/Menus/CommandBar/CommandBarComponentAdapter"; @@ -145,7 +146,7 @@ async function configureFabric(): Promise { ); sendMessage({ - type: MessageTypes.Ready, + type: FabricMessageTypes.Ready, id: "ready", params: [DATA_EXPLORER_RPC_VERSION], });