diff --git a/l10n/bundle.l10n.json b/l10n/bundle.l10n.json index f1aa72cdf..d5fe4b7b6 100644 --- a/l10n/bundle.l10n.json +++ b/l10n/bundle.l10n.json @@ -7,7 +7,6 @@ "You are editing a live, public site ": "You are editing a live, public site ", "Preview site": "Preview site", "Open in Power Pages studio": "Open in Power Pages studio", - "Preview site URL is not available": "Preview site URL is not available", "Preview site URL is not valid": "Preview site URL is not valid", "Opening preview site...": "Opening preview site...", "Power Pages studio URL is not available": "Power Pages studio URL is not available", diff --git a/loc/translations-export/vscode-powerplatform.xlf b/loc/translations-export/vscode-powerplatform.xlf index dd9afe3d9..347bcc108 100644 --- a/loc/translations-export/vscode-powerplatform.xlf +++ b/loc/translations-export/vscode-powerplatform.xlf @@ -398,9 +398,6 @@ The {3} represents Dataverse Environment's Organization ID (GUID) Preview site - - Preview site URL is not available - Preview site URL is not valid diff --git a/src/web/client/common/constants.ts b/src/web/client/common/constants.ts index bc2d613b6..e6bdf2288 100644 --- a/src/web/client/common/constants.ts +++ b/src/web/client/common/constants.ts @@ -96,7 +96,6 @@ export enum queryParameters { ENV_ID = "envid", GEO = "geo", // User geo location ENABLE_MULTIFILE = "enablemultifile", - WEBSITE_PREVIEW_URL = "websitepreviewurl", ENTITY = "entity", ENTITY_ID = "entityid", REFERRER_SOURCE = "referrersource", diff --git a/src/web/client/utilities/commonUtil.ts b/src/web/client/utilities/commonUtil.ts index b859f8450..9f393829d 100644 --- a/src/web/client/utilities/commonUtil.ts +++ b/src/web/client/utilities/commonUtil.ts @@ -54,7 +54,7 @@ export function GetFileNameWithExtension( } export function isLanguageCodeNeededInFileName(entity: string) { - return entity === schemaEntityName.WEBPAGES ||entity === schemaEntityName.CONTENTSNIPPETS; + return entity === schemaEntityName.WEBPAGES || entity === schemaEntityName.CONTENTSNIPPETS; } export function isExtensionNeededInFileName(entity: string) { @@ -310,7 +310,7 @@ export function getRangeForMultilineMatch(text: string, pattern: string, index: return range; } -export async function validateWebsitePreviewURL(): Promise { +export async function getValidWebsitePreviewUrl(): Promise<{ websiteUrl: string, isValid: boolean }> { const envId = getEnvironmentIdFromUrl(); const serviceEndpointStamp = WebExtensionContext.serviceEndpointCategory; const websitePreviewId = WebExtensionContext.urlParametersMap?.get(queryParameters.PORTAL_ID); @@ -318,10 +318,10 @@ export async function validateWebsitePreviewURL(): Promise { if (serviceEndpointStamp === ServiceEndpointCategory.NONE || !envId || !websitePreviewId) { WebExtensionContext.telemetry.sendErrorTelemetry( webExtensionTelemetryEventNames.WEB_EXTENSION_WEBSITE_PREVIEW_URL_VALIDATION_INSUFFICIENT_PARAMETERS, - validateWebsitePreviewURL.name, + getValidWebsitePreviewUrl.name, `serviceEndpointStamp:${serviceEndpointStamp}, envId:${envId}, websitePreviewId:${websitePreviewId}` ); - return false; + return { websiteUrl: '', isValid: false }; } const siteDetails = await PPAPIService.getWebsiteDetailsById(serviceEndpointStamp, envId, websitePreviewId, WebExtensionContext.telemetry.getTelemetryReporter()); @@ -329,13 +329,14 @@ export async function validateWebsitePreviewURL(): Promise { if (siteDetails == null) { WebExtensionContext.telemetry.sendErrorTelemetry( webExtensionTelemetryEventNames.WEB_EXTENSION_WEBSITE_PREVIEW_URL_VALIDATION_SITE_DETAILS_FETCH_FAILED, - validateWebsitePreviewURL.name, + getValidWebsitePreviewUrl.name, ); - return false; + return { websiteUrl: '', isValid: false }; } - return siteDetails.websiteUrl.length !== 0 && - WebExtensionContext.urlParametersMap.get(queryParameters.WEBSITE_PREVIEW_URL) !== undefined && - siteDetails.websiteUrl.toLocaleLowerCase().trim() === WebExtensionContext.urlParametersMap.get(queryParameters.WEBSITE_PREVIEW_URL)?.toLocaleLowerCase().trim(); -} + if (siteDetails.websiteUrl.length !== 0) { + return { websiteUrl: siteDetails.websiteUrl, isValid: true }; + } + return { websiteUrl: '', isValid: false }; +} diff --git a/src/web/client/webViews/powerPagesNavigationProvider.ts b/src/web/client/webViews/powerPagesNavigationProvider.ts index 93e0b1567..8d1d112d3 100644 --- a/src/web/client/webViews/powerPagesNavigationProvider.ts +++ b/src/web/client/webViews/powerPagesNavigationProvider.ts @@ -6,15 +6,15 @@ import * as vscode from 'vscode'; import * as path from 'path'; import WebExtensionContext from "../WebExtensionContext"; -import { httpMethod, queryParameters } from '../common/constants'; -import { getBackToStudioURL, isStringUndefinedOrEmpty, validateWebsitePreviewURL } from '../utilities/commonUtil'; +import { httpMethod } from '../common/constants'; +import { getBackToStudioURL, getValidWebsitePreviewUrl } from '../utilities/commonUtil'; import { webExtensionTelemetryEventNames } from '../../../common/OneDSLoggerTelemetry/web/client/webExtensionTelemetryEvents'; export class PowerPagesNavigationProvider implements vscode.TreeDataProvider { private _onDidChangeTreeData: vscode.EventEmitter = new vscode.EventEmitter(); readonly onDidChangeTreeData: vscode.Event = this._onDidChangeTreeData.event; - private isWebsitePreviewURLValid: Promise = validateWebsitePreviewURL(); + private isWebsitePreviewURLValid: Promise<{ websiteUrl: string, isValid: boolean }> = getValidWebsitePreviewUrl(); refresh(): void { this._onDidChangeTreeData.fire(); @@ -63,33 +63,22 @@ export class PowerPagesNavigationProvider implements vscode.TreeDataProvider { let requestSentAtTime = new Date().getTime(); - const websitePreviewUrl = WebExtensionContext.urlParametersMap.get(queryParameters.WEBSITE_PREVIEW_URL) as string; - if (isStringUndefinedOrEmpty(websitePreviewUrl)) { - vscode.window.showErrorMessage(vscode.l10n.t("Preview site URL is not available")); + const { isValid, websiteUrl } = await this.isWebsitePreviewURLValid; - WebExtensionContext.telemetry.sendErrorTelemetry( - webExtensionTelemetryEventNames.WEB_EXTENSION_WEBSITE_PREVIEW_URL_UNAVAILABLE, - this.previewPowerPageSite.name, - `websitePreviewUrl:${websitePreviewUrl}` - ); - return; - } - - const isValid = await this.isWebsitePreviewURLValid; if (!isValid) { vscode.window.showErrorMessage(vscode.l10n.t("Preview site URL is not valid")); WebExtensionContext.telemetry.sendErrorTelemetry( webExtensionTelemetryEventNames.WEB_EXTENSION_WEBSITE_PREVIEW_URL_INVALID, this.previewPowerPageSite.name, - `websitePreviewUrl:${websitePreviewUrl}` + `websitePreviewUrl:${websiteUrl}` ); return; } // Runtime clear cache call - const requestUrl = `${websitePreviewUrl.endsWith('/') ? websitePreviewUrl : websitePreviewUrl.concat('/')}_services/cache/config`; + const requestUrl = `${websiteUrl.endsWith('/') ? websiteUrl : websiteUrl.concat('/')}_services/cache/config`; WebExtensionContext.telemetry.sendAPITelemetry( requestUrl, @@ -141,7 +130,7 @@ export class PowerPagesNavigationProvider implements vscode.TreeDataProvider