Skip to content
Merged
Show file tree
Hide file tree
Changes from 28 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
571a917
Add continue button to browserVersion UI
dmceachernmsft Dec 7, 2022
16f907f
update styles
dmceachernmsft Dec 7, 2022
bf84cab
add new button logic to call adapter
dmceachernmsft Dec 7, 2022
316404e
add logic to callWithChat
dmceachernmsft Dec 7, 2022
96f6b4d
fix handler logic
dmceachernmsft Dec 8, 2022
ffd83a8
fix styles
dmceachernmsft Dec 8, 2022
82778c7
Fix cc and build stable API
dmceachernmsft Dec 8, 2022
ed35b2d
remove console
dmceachernmsft Dec 8, 2022
762bd5a
Change files
dmceachernmsft Dec 8, 2022
d15b61d
Duplicate change files for beta release
dmceachernmsft Dec 8, 2022
4089459
Merge branch 'main' into dmceachernmsft/browser-version-continue
dmceachernmsft Dec 8, 2022
187f058
update strings
dmceachernmsft Dec 8, 2022
0b8ab11
Merge branch 'dmceachernmsft/browser-version-continue' of https://git…
dmceachernmsft Dec 8, 2022
e9a5486
update styles for strings
dmceachernmsft Dec 8, 2022
c1f5e77
update per comments
dmceachernmsft Dec 8, 2022
cf515a4
update UI state naming
dmceachernmsft Dec 8, 2022
3d00fb6
build API
dmceachernmsft Dec 8, 2022
f692236
fix test errors
dmceachernmsft Dec 8, 2022
4c76e09
Update packages/react-composites CallComposite browser test snapshots
github-actions[bot] Dec 8, 2022
b5a8b78
Update packages/react-composites CallComposite browser test snapshots
github-actions[bot] Dec 8, 2022
87c9261
Merge branch 'dmceachernmsft/browser-version-continue' of https://git…
github-actions[bot] Dec 8, 2022
1da6aeb
Merge branch 'main' into dmceachernmsft/browser-version-continue
dmceachernmsft Dec 8, 2022
ad48794
update styles
dmceachernmsft Dec 8, 2022
fcb0347
Update packages/react-composites CallComposite browser test snapshots
github-actions[bot] Dec 8, 2022
1b507bf
update styles
dmceachernmsft Dec 9, 2022
dca604f
Merge branch 'dmceachernmsft/browser-version-continue' of https://git…
dmceachernmsft Dec 9, 2022
9353d94
Update packages/react-composites CallComposite browser test snapshots
github-actions[bot] Dec 9, 2022
a420b88
Merge branch 'main' into dmceachernmsft/browser-version-continue
dmceachernmsft Dec 9, 2022
a90149a
update handler logic and other comments
dmceachernmsft Dec 10, 2022
03d3bb6
fix cc
dmceachernmsft Dec 10, 2022
403b2e7
update styles
dmceachernmsft Dec 10, 2022
9f05df5
Update packages/react-composites CallComposite browser test snapshots
github-actions[bot] Dec 10, 2022
2d69169
Merge branch 'main' into dmceachernmsft/browser-version-continue
dmceachernmsft Dec 12, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "Introduce unsupported browser version ability to let old browser into call in composites",
"packageName": "@azure/communication-react",
"email": "94866715+dmceachernmsft@users.noreply.github.com",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "Introduce unsupported browser version ability to let old browser into call in composites",
"packageName": "@azure/communication-react",
"email": "94866715+dmceachernmsft@users.noreply.github.com",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,7 @@ export interface CallAdapterCallOperations {
addParticipant(participant: PhoneNumberIdentifier, options?: AddPhoneNumberOptions): Promise<void>;
// (undocumented)
addParticipant(participant: CommunicationUserIdentifier): Promise<void>;
allowUnsupportedBrowserVersion(): void;
createStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise<void | CreateVideoStreamViewResult>;
disposeStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise<void>;
// @beta
Expand Down Expand Up @@ -322,7 +323,7 @@ export type CallAdapterLocator = TeamsMeetingLinkLocator | GroupCallLocator | /*

// @beta
export type CallAdapterOptionalFeatures = {
unsupportedEnvironment?: boolean;
unsupportedEnvironment?: boolean | UnsupportedEnvironmentFeatures;
};

// @public
Expand Down Expand Up @@ -360,6 +361,7 @@ export interface CallAdapterSubscribers {
export type CallAdapterUiState = {
isLocalPreviewMicrophoneEnabled: boolean;
page: CallCompositePage;
unsupportedBrowserVersionsAllowed?: boolean;
};

// @public
Expand Down Expand Up @@ -729,6 +731,7 @@ export interface CallWithChatAdapterManagement {
addParticipant(participant: PhoneNumberIdentifier, options?: AddPhoneNumberOptions): Promise<void>;
// (undocumented)
addParticipant(participant: CommunicationUserIdentifier): Promise<void>;
allowUnsupportedBrowserVersion(): void;
askDevicePermission(constrain: PermissionConstraints): Promise<void>;
// @beta (undocumented)
cancelFileUpload: (id: string) => void;
Expand Down Expand Up @@ -863,6 +866,8 @@ export interface CallWithChatAdapterUiState {
fileUploads?: FileUploadsUiState;
isLocalPreviewMicrophoneEnabled: boolean;
page: CallCompositePage;
// @beta
unsupportedBrowserVersionsAllowed?: boolean;
}

// @public
Expand Down Expand Up @@ -3094,17 +3099,24 @@ export const UnsupportedBrowserVersion: (props: UnsupportedBrowserVersionProps)

// @beta
export interface UnsupportedBrowserVersionProps {
onContinueClick?: () => void;
onTroubleshootingClick?: () => void;
strings: UnsupportedBrowserVersionStrings;
strings?: UnsupportedBrowserVersionStrings;
}

// @beta
export interface UnsupportedBrowserVersionStrings {
continueAnywayButtonText?: string;
moreHelpLinkText: string;
primaryText: string;
secondaryText: string;
}

// @beta
export type UnsupportedEnvironmentFeatures = {
unsupportedBrowserVersionAllowed?: boolean;
};

// @beta
export const UnsupportedOperatingSystem: (props: UnsupportedOperatingSystemProps) => JSX.Element;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1584,12 +1584,14 @@ export const UnsupportedBrowserVersion: (props: UnsupportedBrowserVersionProps)

// @beta
export interface UnsupportedBrowserVersionProps {
onContinueClick?: () => void;
onTroubleshootingClick?: () => void;
strings: UnsupportedBrowserVersionStrings;
strings?: UnsupportedBrowserVersionStrings;
}

// @beta
export interface UnsupportedBrowserVersionStrings {
continueAnywayButtonText?: string;
moreHelpLinkText: string;
primaryText: string;
secondaryText: string;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1345,12 +1345,14 @@ export const UnsupportedBrowserVersion: (props: UnsupportedBrowserVersionProps)

// @beta
export interface UnsupportedBrowserVersionProps {
onContinueClick?: () => void;
onTroubleshootingClick?: () => void;
strings: UnsupportedBrowserVersionStrings;
strings?: UnsupportedBrowserVersionStrings;
}

// @beta
export interface UnsupportedBrowserVersionStrings {
continueAnywayButtonText?: string;
moreHelpLinkText: string;
primaryText: string;
secondaryText: string;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ export interface UnsupportedBrowserVersionStrings {
secondaryText: string;
/** String to display in the text for the help link */
moreHelpLinkText: string;
/** String for continue without updating button */
continueAnywayButtonText?: string;
}

/**
Expand All @@ -28,7 +30,9 @@ export interface UnsupportedBrowserVersionProps {
/** Handler to perform an action when the help link is actioned */
onTroubleshootingClick?: () => void;
/** String overrides for the component */
strings: UnsupportedBrowserVersionStrings;
strings?: UnsupportedBrowserVersionStrings;
/** Handler to allow user to continue into the call */
onContinueClick?: () => void;
}

/**
Expand All @@ -38,6 +42,12 @@ export interface UnsupportedBrowserVersionProps {
* @beta
*/
export const UnsupportedBrowserVersion = (props: UnsupportedBrowserVersionProps): JSX.Element => {
const { onTroubleshootingClick, strings } = props;
return <UnsupportedEnvironment onTroubleshootingClick={onTroubleshootingClick} strings={strings} />;
const { onTroubleshootingClick, strings, onContinueClick } = props;
return (
<UnsupportedEnvironment
onTroubleshootingClick={onTroubleshootingClick}
strings={strings}
onContinueClick={onContinueClick}
/>
);
};
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,21 @@
// Licensed under the MIT license.

/* @conditional-compile-remove(unsupported-browser) */
import { Icon, Link, Stack, Text } from '@fluentui/react';
import { DefaultButton, Icon, Link, Stack, Text } from '@fluentui/react';
/* @conditional-compile-remove(unsupported-browser) */
import { _pxToRem } from '@internal/acs-ui-common';
import React from 'react';
/* @conditional-compile-remove(unsupported-browser) */
import { useTheme } from '../theming';
/* @conditional-compile-remove(unsupported-browser) */
import {
containerStyles,
continueAnywayButtonStyles,
iconStyles,
linkTextStyles,
mainTextStyles,
secondaryTextStyles
secondaryTextStyles,
testContainerStyles
} from './styles/UnsupportedEnvironment.styles';

/**
Expand All @@ -25,6 +29,8 @@ export interface UnsupportedEnvironmentStrings {
secondaryText: string;
/** String to display in the text for the help link */
moreHelpLinkText: string;
/** String for continue anyway button */
continueAnywayButtonText?: string;
}

/**
Expand All @@ -33,35 +39,46 @@ export interface UnsupportedEnvironmentStrings {
* @private
*/
export interface UnsupportedEnvironmentProps {
/** Handler to perform a action when the help link is actioned */
/**
* Handler to perform a action when the help link is actioned
*/
onTroubleshootingClick?: () => void;
/** String overrides for the component */
strings: UnsupportedEnvironmentStrings;
/**
* String overrides for the component
*/
strings?: UnsupportedEnvironmentStrings;
/**
* CallBack for the continue anyay button. Use this as a mechanism to allow users into
* a call with a unsupported browser version.
*/
onContinueClick?: () => void;
}

/* @conditional-compile-remove(unsupported-browser) */
const UnsupportedEnvironmentContainer = (props: UnsupportedEnvironmentProps): JSX.Element => {
const { onTroubleshootingClick, strings } = props;
const { onTroubleshootingClick, strings, onContinueClick } = props;
const theme = useTheme();
return (
<Stack styles={containerStyles}>
<Icon
styles={iconStyles}
iconName="UnsupportedEnvironmentWarning"
data-ui-id="unsupported-environment-icon"
></Icon>
<Text styles={mainTextStyles}>{strings.primaryText}</Text>
<Text styles={secondaryTextStyles}>{strings.secondaryText}</Text>
<Stack styles={testContainerStyles}>
<Text styles={mainTextStyles}>{strings?.primaryText}</Text>
<Text styles={secondaryTextStyles}>{strings?.secondaryText}</Text>
</Stack>
{onTroubleshootingClick && (
<Link
styles={linkTextStyles}
onClick={() => {
onTroubleshootingClick();
}}
data-ui-id="unsupported-environment-link"
>
{strings.moreHelpLinkText}
<Link styles={linkTextStyles} onClick={onTroubleshootingClick} data-ui-id="unsupported-environment-link">
{strings?.moreHelpLinkText}
</Link>
)}
{onContinueClick && (
<DefaultButton styles={continueAnywayButtonStyles(theme)} onClick={onContinueClick}>
{strings?.continueAnywayButtonText}
</DefaultButton>
)}
</Stack>
);
};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.

import { IIconStyles, ILinkStyles, IStackStyles, ITextStyles } from '@fluentui/react';
import { IButtonStyles, IIconStyles, ILinkStyles, IStackStyles, ITextStyles, Theme } from '@fluentui/react';
import { _pxToRem } from '@internal/acs-ui-common';

/**
Expand All @@ -12,9 +12,9 @@ export const mainTextStyles: ITextStyles = {
fontWeight: 600,
fontSize: _pxToRem(20),
lineHeight: _pxToRem(28),
paddingBottom: '1rem',
margin: 'auto',
textAlign: 'center'
textAlign: 'center',
padding: '0.5rem'
}
};

Expand All @@ -25,19 +25,29 @@ export const secondaryTextStyles: ITextStyles = {
root: {
margin: 'auto',
fontWeight: 400,
paddingBottom: '0.5rem',
textAlign: 'center'
}
};

/**
* @internal
*/
export const testContainerStyles: IStackStyles = {
root: {
padding: '1rem',
margin: 'auto'
}
};

/**
* @internal
*/
export const linkTextStyles: ILinkStyles = {
root: {
margin: 'auto',
fontWeight: 600,
textAlign: 'center'
textAlign: 'center',
padding: '1rem'
}
};

Expand All @@ -46,7 +56,8 @@ export const linkTextStyles: ILinkStyles = {
*/
export const containerStyles: IStackStyles = {
root: {
padding: '2rem'
padding: '2rem',
maxWidth: _pxToRem(375)
}
};

Expand All @@ -58,3 +69,18 @@ export const iconStyles: IIconStyles = {
paddingBottom: '1rem'
}
};

/**
* @internal
*/
export const continueAnywayButtonStyles = (theme: Theme): IButtonStyles => {
Comment thread
dmceachernmsft marked this conversation as resolved.
return {
root: {
backgroundColor: '#C4314B',
margin: '1rem',
Comment thread
dmceachernmsft marked this conversation as resolved.
Outdated
borderColor: theme.palette.neutralLight,
padding: '1rem',
color: theme.palette.white
}
};
};
Original file line number Diff line number Diff line change
Expand Up @@ -252,9 +252,10 @@
"moreHelpLinkText": "See compatibility requirements"
},
"UnsupportedBrowserVersion": {
"primaryText": "Browser version not supported",
"secondaryText": "Please update your browser and then try joining the call again.",
"moreHelpLinkText": "See compatibility requirements"
"primaryText": "Browser update needed",
"secondaryText": "To ensure the best call possible, please update your browser and then try joining the call again.",
"moreHelpLinkText": "See compatibility requirements",
"continueAnywayButtonText": "Start call without updating"
},
"UnsupportedOperatingSystem": {
"primaryText": "Operating system not supported",
Expand Down
12 changes: 11 additions & 1 deletion packages/react-composites/review/beta/react-composites.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ export interface CallAdapterCallOperations {
addParticipant(participant: PhoneNumberIdentifier, options?: AddPhoneNumberOptions): Promise<void>;
// (undocumented)
addParticipant(participant: CommunicationUserIdentifier): Promise<void>;
allowUnsupportedBrowserVersion(): void;
createStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise<void | CreateVideoStreamViewResult>;
disposeStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise<void>;
// @beta
Expand Down Expand Up @@ -220,7 +221,7 @@ export type CallAdapterLocator = TeamsMeetingLinkLocator | GroupCallLocator | /*

// @beta
export type CallAdapterOptionalFeatures = {
unsupportedEnvironment?: boolean;
unsupportedEnvironment?: boolean | UnsupportedEnvironmentFeatures;
};

// @public
Expand Down Expand Up @@ -258,6 +259,7 @@ export interface CallAdapterSubscribers {
export type CallAdapterUiState = {
isLocalPreviewMicrophoneEnabled: boolean;
page: CallCompositePage;
unsupportedBrowserVersionsAllowed?: boolean;
};

// @public
Expand Down Expand Up @@ -485,6 +487,7 @@ export interface CallWithChatAdapterManagement {
addParticipant(participant: PhoneNumberIdentifier, options?: AddPhoneNumberOptions): Promise<void>;
// (undocumented)
addParticipant(participant: CommunicationUserIdentifier): Promise<void>;
allowUnsupportedBrowserVersion(): void;
askDevicePermission(constrain: PermissionConstraints): Promise<void>;
// @beta (undocumented)
cancelFileUpload: (id: string) => void;
Expand Down Expand Up @@ -619,6 +622,8 @@ export interface CallWithChatAdapterUiState {
fileUploads?: FileUploadsUiState;
isLocalPreviewMicrophoneEnabled: boolean;
page: CallCompositePage;
// @beta
unsupportedBrowserVersionsAllowed?: boolean;
}

// @public
Expand Down Expand Up @@ -1278,6 +1283,11 @@ export type TopicChangedListener = (event: {
topic: string;
}) => void;

// @beta
export type UnsupportedEnvironmentFeatures = {
unsupportedBrowserVersionAllowed?: boolean;
};

// @public
export const useAzureCommunicationCallAdapter: (args: Partial<AzureCommunicationCallAdapterArgs>, afterCreate?: ((adapter: CallAdapter) => Promise<CallAdapter>) | undefined, beforeDispose?: ((adapter: CallAdapter) => Promise<void>) | undefined) => CallAdapter | undefined;

Expand Down
Loading