diff --git a/src/Common/CosmosClient.ts b/src/Common/CosmosClient.ts index a6ac05a11..94a7959d6 100644 --- a/src/Common/CosmosClient.ts +++ b/src/Common/CosmosClient.ts @@ -253,10 +253,13 @@ export function client(): Cosmos.CosmosClient { const currentWriteRegion = await client.getWriteEndpoint(); console.log(`Current write endpoint: ${JSON.stringify(currentWriteRegion)}`); + console.log(`Current userContext endpoint: ${JSON.stringify(userContext?.endpoint)}`); } const options: Cosmos.CosmosClientOptions = { endpoint: endpoint() || "https://cosmos.azure.com", // CosmosClient gets upset if we pass a bad URL. This should never actually get called + // endpoint: "https://test-craig-nosql-westus3.documents.azure.com:443/", + // endpoint: "https://test-craig-nosql-eastus2.documents.azure.com:443/", key: userContext.dataPlaneRbacEnabled ? "" : userContext.masterKey, tokenProvider, userAgentSuffix: "Azure Portal", diff --git a/src/Explorer/Panes/SettingsPane/SettingsPane.tsx b/src/Explorer/Panes/SettingsPane/SettingsPane.tsx index d6f95717b..a5b1f7abb 100644 --- a/src/Explorer/Panes/SettingsPane/SettingsPane.tsx +++ b/src/Explorer/Panes/SettingsPane/SettingsPane.tsx @@ -273,6 +273,26 @@ export const SettingsPane: FunctionComponent<{ explorer: Explorer }> = ({ } } + // Check if region selection has been updated. Update database account in user context accordingly. + const updatedDatabaseAccount = { + ...userContext.databaseAccount, + properties: { + ...userContext.databaseAccount.properties, + documentEndpoint: userContext?.databaseAccount?.properties?.readLocations?.find( + (loc) => loc.locationName === readRegion, + )?.documentEndpoint, + }, + }; + updateUserContext({ + databaseAccount: updatedDatabaseAccount, + hasCosmosClientRegionSettingChanged: true, + }); + console.log( + `userContext?.databaseAccount?.properties?.documentEndpoint details: ${JSON.stringify( + userContext?.databaseAccount?.properties?.documentEndpoint, + )}`, + ); + LocalStorageUtility.setEntryBoolean(StorageKey.RUThresholdEnabled, ruThresholdEnabled); LocalStorageUtility.setEntryBoolean(StorageKey.QueryTimeoutEnabled, queryTimeoutEnabled); LocalStorageUtility.setEntryString(StorageKey.ReadRegion, readRegion); @@ -425,23 +445,6 @@ export const SettingsPane: FunctionComponent<{ explorer: Explorer }> = ({ const handleOnReadRegionOptionChange = (ev: React.FormEvent, option: IDropdownOption): void => { // TODO: Region validation? - const updatedDatabaseAccount = { - ...userContext.databaseAccount, - properties: { - ...userContext.databaseAccount.properties, - documentEndpoint: userContext?.databaseAccount?.properties?.readLocations?.find( - (loc) => loc.locationName === readRegion, - )?.documentEndpoint, - }, - }; - updateUserContext({ - databaseAccount: updatedDatabaseAccount, - }); - console.log( - `userContext?.databaseAccount?.properties?.documentEndpoint details: ${JSON.stringify( - userContext?.databaseAccount?.properties?.documentEndpoint, - )}`, - ); setReadRegion(option.text); }; diff --git a/src/Utils/AuthorizationUtils.ts b/src/Utils/AuthorizationUtils.ts index d2ef4e8ff..ad9f41947 100644 --- a/src/Utils/AuthorizationUtils.ts +++ b/src/Utils/AuthorizationUtils.ts @@ -73,10 +73,11 @@ export async function acquireMsalTokenForAccount( if (userContext.databaseAccount.properties?.documentEndpoint === undefined) { throw new Error("Database account has no document endpoint defined"); } - const hrefEndpoint = new URL(userContext.databaseAccount.properties.documentEndpoint).href.replace( - /\/+$/, - "/.default", - ); + // const hrefEndpoint = new URL(userContext.databaseAccount.properties.documentEndpoint).href.replace( + // /\/+$/, + // "/.default", + // ); + const hrefEndpoint = new URL("https://test-craig-nosql.documents.azure.com").href.replace(/\/+$/, "/.default"); const msalInstance = await getMsalInstance(); const knownAccounts = msalInstance.getAllAccounts(); // If user_hint is provided, we will try to use it to find the account.