Skip to content

Commit

Permalink
Merge branch 'main' into juancard/messageDelay
Browse files Browse the repository at this point in the history
  • Loading branch information
juanscr authored Oct 29, 2024
2 parents cf8fdd9 + a3455df commit 9baa1bf
Show file tree
Hide file tree
Showing 19 changed files with 1,368 additions and 1,294 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "minor",
"comment": "Made the `pages` file treeshakable",
"packageName": "@microsoft/teams-js",
"email": "[email protected]",
"dependentChangeType": "patch"
}
2 changes: 1 addition & 1 deletion packages/teams-js/src/internal/appHelpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import * as authentication from '../public/authentication';
import { FrameContexts } from '../public/constants';
import * as dialog from '../public/dialog/dialog';
import * as menus from '../public/menus';
import { pages } from '../public/pages';
import * as pages from '../public/pages/pages';
import {
applyRuntimeConfig,
generateVersionBasedTeamsRuntimeConfig,
Expand Down
2 changes: 1 addition & 1 deletion packages/teams-js/src/internal/handlers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import { ApiName, ApiVersionNumber, getApiVersionTag } from '../internal/telemetry';
import { FrameContexts } from '../public/constants';
import { HostToAppPerformanceMetrics, LoadContext, ResumeContext } from '../public/interfaces';
import { pages } from '../public/pages';
import * as pages from '../public/pages/pages';
import { runtime } from '../public/runtime';
import { Communication, sendMessageEventToChild, sendMessageToParent } from './communication';
import { ensureInitialized } from './internalAPIs';
Expand Down
185 changes: 185 additions & 0 deletions packages/teams-js/src/internal/pagesHelpers.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,185 @@
import { AppId } from '../public/appId';
import { errorNotSupportedOnPlatform, FrameContexts } from '../public/constants';
import {
FrameInfo,
ShareDeepLinkParameters,
TabInformation,
TabInstance,
TabInstanceParameters,
} from '../public/interfaces';
import * as pages from '../public/pages/pages';
import { runtime } from '../public/runtime';
import {
sendAndHandleStatusAndReason,
sendAndHandleStatusAndReasonWithDefaultError,
sendAndUnwrap,
sendMessageToParent,
} from './communication';
import { ensureInitialized } from './internalAPIs';
import { ApiVersionNumber } from './telemetry';

/**
* v2 APIs telemetry file: All of APIs in this capability file should send out API version v2 ONLY
*/
export const pagesTelemetryVersionNumber: ApiVersionNumber = ApiVersionNumber.V_2;

export function navigateCrossDomainHelper(apiVersionTag: string, url: string): Promise<void> {
return new Promise<void>((resolve) => {
ensureInitialized(
runtime,
FrameContexts.content,
FrameContexts.sidePanel,
FrameContexts.settings,
FrameContexts.remove,
FrameContexts.task,
FrameContexts.stage,
FrameContexts.meetingStage,
);
if (!pages.isSupported()) {
throw errorNotSupportedOnPlatform;
}
const errorMessage =
'Cross-origin navigation is only supported for URLs matching the pattern registered in the manifest.';
resolve(sendAndHandleStatusAndReasonWithDefaultError(apiVersionTag, 'navigateCrossDomain', errorMessage, url));
});
}

export function backStackNavigateBackHelper(apiVersionTag: string): Promise<void> {
return new Promise<void>((resolve) => {
ensureInitialized(runtime);
if (!pages.backStack.isSupported()) {
throw errorNotSupportedOnPlatform;
}
const errorMessage = 'Back navigation is not supported in the current client or context.';
resolve(sendAndHandleStatusAndReasonWithDefaultError(apiVersionTag, 'navigateBack', errorMessage));
});
}

export function tabsNavigateToTabHelper(apiVersionTag: string, tabInstance: TabInstance): Promise<void> {
return new Promise<void>((resolve) => {
ensureInitialized(runtime);
if (!pages.tabs.isSupported()) {
throw errorNotSupportedOnPlatform;
}
const errorMessage = 'Invalid internalTabInstanceId and/or channelId were/was provided';
resolve(sendAndHandleStatusAndReasonWithDefaultError(apiVersionTag, 'navigateToTab', errorMessage, tabInstance));
});
}
/**
* @hidden
*/
export function returnFocusHelper(apiVersionTag: string, navigateForward?: boolean): void {
ensureInitialized(runtime);
if (!pages.isSupported()) {
throw errorNotSupportedOnPlatform;
}
sendMessageToParent(apiVersionTag, 'returnFocus', [navigateForward]);
}

export function getTabInstancesHelper(
apiVersionTag: string,
tabInstanceParameters?: TabInstanceParameters,
): Promise<TabInformation> {
return new Promise<TabInformation>((resolve) => {
ensureInitialized(runtime);
if (!pages.tabs.isSupported()) {
throw errorNotSupportedOnPlatform;
}
/* eslint-disable-next-line strict-null-checks/all */ /* Fix tracked by 5730662 */
resolve(sendAndUnwrap(apiVersionTag, 'getTabInstances', tabInstanceParameters));
});
}

export function getMruTabInstancesHelper(
apiVersionTag: string,
tabInstanceParameters?: TabInstanceParameters,
): Promise<TabInformation> {
return new Promise<TabInformation>((resolve) => {
ensureInitialized(runtime);
if (!pages.tabs.isSupported()) {
throw errorNotSupportedOnPlatform;
}
/* eslint-disable-next-line strict-null-checks/all */ /* Fix tracked by 5730662 */
resolve(sendAndUnwrap(apiVersionTag, 'getMruTabInstances', tabInstanceParameters));
});
}

export function shareDeepLinkHelper(apiVersionTag: string, deepLinkParameters: ShareDeepLinkParameters): void {
ensureInitialized(runtime, FrameContexts.content, FrameContexts.sidePanel, FrameContexts.meetingStage);
if (!pages.isSupported()) {
throw errorNotSupportedOnPlatform;
}
sendMessageToParent(apiVersionTag, 'shareDeepLink', [
deepLinkParameters.subPageId,
deepLinkParameters.subPageLabel,
deepLinkParameters.subPageWebUrl,
]);
}

export function setCurrentFrameHelper(apiVersionTag: string, frameInfo: FrameInfo): void {
ensureInitialized(runtime, FrameContexts.content);
if (!pages.isSupported()) {
throw errorNotSupportedOnPlatform;
}
sendMessageToParent(apiVersionTag, 'setFrameContext', [frameInfo]);
}

export function configSetValidityStateHelper(apiVersionTag: string, validityState: boolean): void {
ensureInitialized(runtime, FrameContexts.settings, FrameContexts.remove);
if (!pages.config.isSupported()) {
throw errorNotSupportedOnPlatform;
}
sendMessageToParent(apiVersionTag, 'settings.setValidityState', [validityState]);
}

export function getConfigHelper(apiVersionTag: string): Promise<pages.InstanceConfig> {
return new Promise<pages.InstanceConfig>((resolve) => {
ensureInitialized(
runtime,
FrameContexts.content,
FrameContexts.settings,
FrameContexts.remove,
FrameContexts.sidePanel,
);
if (!pages.isSupported()) {
throw errorNotSupportedOnPlatform;
}
resolve(sendAndUnwrap(apiVersionTag, 'settings.getSettings'));
});
}

export function configSetConfigHelper(apiVersionTag: string, instanceConfig: pages.InstanceConfig): Promise<void> {
return new Promise<void>((resolve) => {
ensureInitialized(runtime, FrameContexts.content, FrameContexts.settings, FrameContexts.sidePanel);
if (!pages.config.isSupported()) {
throw errorNotSupportedOnPlatform;
}
resolve(sendAndHandleStatusAndReason(apiVersionTag, 'settings.setSettings', instanceConfig));
});
}

export function isAppNavigationParametersObject(
obj: pages.AppNavigationParameters | pages.NavigateToAppParams,
): obj is pages.AppNavigationParameters {
return obj.appId instanceof AppId;
}

export function convertNavigateToAppParamsToAppNavigationParameters(
params: pages.NavigateToAppParams,
): pages.AppNavigationParameters {
return {
...params,
appId: new AppId(params.appId),
webUrl: params.webUrl ? new URL(params.webUrl) : undefined,
};
}

export function convertAppNavigationParametersToNavigateToAppParams(
params: pages.AppNavigationParameters,
): pages.NavigateToAppParams {
return {
...params,
appId: params.appId.toString(),
webUrl: params.webUrl ? params.webUrl.toString() : undefined,
};
}
2 changes: 1 addition & 1 deletion packages/teams-js/src/internal/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import * as uuid from 'uuid';

import { minAdaptiveCardVersion } from '../public/constants';
import { AdaptiveCardVersion, SdkError } from '../public/interfaces';
import { pages } from '../public/pages';
import * as pages from '../public/pages/pages';

/**
* @internal
Expand Down
2 changes: 1 addition & 1 deletion packages/teams-js/src/public/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ export * as dialog from './dialog/dialog';
export * as nestedAppAuth from './nestedAppAuth';
export * as geoLocation from './geoLocation/geoLocation';
export { getAdaptiveCardSchemaVersion } from './adaptiveCards';
export { pages } from './pages';
export * as pages from './pages/pages';
export {
addEventListnerFunctionType,
ChildAppWindow,
Expand Down
10 changes: 5 additions & 5 deletions packages/teams-js/src/public/navigation.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import { ensureInitialized } from '../internal/internalAPIs';
import { ApiName, ApiVersionNumber, getApiVersionTag } from '../internal/telemetry';
import { getGenericOnCompleteHandler } from '../internal/utils';
import { FrameContexts } from './constants';
import { TabInstance } from './interfaces';
import {
backStackNavigateBackHelper,
navigateCrossDomainHelper,
returnFocusHelper,
tabsNavigateToTabHelper,
} from './pages';
} from '../internal/pagesHelpers';
import { ApiName, ApiVersionNumber, getApiVersionTag } from '../internal/telemetry';
import { getGenericOnCompleteHandler } from '../internal/utils';
import { FrameContexts } from './constants';
import { TabInstance } from './interfaces';
import { runtime } from './runtime';

/**
Expand Down
Loading

0 comments on commit 9baa1bf

Please sign in to comment.