diff --git a/packages/adapter-ameyo/CHANGELOG.md b/packages/adapter-ameyo/CHANGELOG.md index 2be797c..a2fcc85 100644 --- a/packages/adapter-ameyo/CHANGELOG.md +++ b/packages/adapter-ameyo/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## 1.3.1 (2025-01-30) + +**Note:** Version bump only for package @universal-call-sdk/adapter-ameyo + + + + + ## 1.2.6 (2025-01-29) **Note:** Version bump only for package @universal-call-sdk/adapter-ameyo diff --git a/packages/adapter-ameyo/lib/main.ts b/packages/adapter-ameyo/lib/main.ts index f99bed2..7611892 100644 --- a/packages/adapter-ameyo/lib/main.ts +++ b/packages/adapter-ameyo/lib/main.ts @@ -39,6 +39,7 @@ import ClickStreamProcessor from "@universal-call-sdk/common/lib/utils/clickStre import {tagManager} from "./htmlTagManager"; import {callStateManager} from "./callStateManager.ts"; import MessagingType from "../types/MessagingType.ts"; +import { checkAllPermissions } from "@universal-call-sdk/common/lib/utils/getPermissions.ts"; class AmeyoAdapter implements IAdapter { private callbacks: CallbackFunctions; private currentCallState: CALL_STATES; @@ -423,6 +424,10 @@ class AmeyoAdapter implements IAdapter { public registerOnCallTransferStatus(callback: (data: GenericObject) => void): void { this.callbacks.onCallTransferStatus = callback; } + + public async checkAllPermissions(): Promise { + return await checkAllPermissions(); + } } export default AmeyoAdapter; diff --git a/packages/common/CHANGELOG.md b/packages/common/CHANGELOG.md index 22b30f3..a6bff71 100644 --- a/packages/common/CHANGELOG.md +++ b/packages/common/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## 1.3.1 (2025-01-30) + +**Note:** Version bump only for package @universal-call-sdk/common + + + + + ## 1.2.6 (2025-01-29) **Note:** Version bump only for package @universal-call-sdk/common diff --git a/packages/common/lib/Interfaces/IAdapter.ts b/packages/common/lib/Interfaces/IAdapter.ts index 74baa30..5f5de79 100644 --- a/packages/common/lib/Interfaces/IAdapter.ts +++ b/packages/common/lib/Interfaces/IAdapter.ts @@ -33,6 +33,7 @@ class IAdapter { return Promise.resolve(new Response()); } transferCallToAgent(data: GenericObject) {console.log("transfer call", data)} + checkAllPermissions():Promise {return Promise.resolve(true)} } export default IAdapter; diff --git a/packages/common/lib/constants.ts b/packages/common/lib/constants.ts new file mode 100644 index 0000000..ef83e04 --- /dev/null +++ b/packages/common/lib/constants.ts @@ -0,0 +1,7 @@ +export enum PermissionState { + GRANTED = "granted", + PROMPT = "prompt", + DENIED = "denied" + } + +export const MICROPHONE = 'microphone' as PermissionName; \ No newline at end of file diff --git a/packages/common/lib/utils/getPermissions.ts b/packages/common/lib/utils/getPermissions.ts new file mode 100644 index 0000000..d645ea2 --- /dev/null +++ b/packages/common/lib/utils/getPermissions.ts @@ -0,0 +1,37 @@ +import { MICROPHONE, PermissionState } from "../constants"; + +export const checkPermission = async (permissionName: PermissionName, mediaType: MediaStreamConstraints): Promise => { + try { + if (!navigator.permissions) { + return false; + } + + const permission = await navigator.permissions.query({ name: permissionName }); + permission.onchange = () => { + location.reload(); + }; + + switch (permission.state) { + case PermissionState.GRANTED: + return true; + case PermissionState.PROMPT: + await navigator.mediaDevices.getUserMedia(mediaType); + return false; + case PermissionState.DENIED: + return false; + default: + return false; + } + } catch (error) { + return false; + } + }; + + export const checkMicrophonePermission = async (): Promise => { + return checkPermission(MICROPHONE, { audio: true }); + }; + + + export const checkAllPermissions = async (): Promise => { + return await checkMicrophonePermission(); + }; \ No newline at end of file diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 5ea87c8..8ce259d 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## 1.3.1 (2025-01-30) + +**Note:** Version bump only for package @universal-call-sdk/core + + + + + ## 1.2.6 (2025-01-29) **Note:** Version bump only for package @universal-call-sdk/core diff --git a/packages/core/lib/useCallSdk.ts b/packages/core/lib/useCallSdk.ts index 484aea1..129c164 100644 --- a/packages/core/lib/useCallSdk.ts +++ b/packages/core/lib/useCallSdk.ts @@ -193,6 +193,10 @@ function UseCallSdk({AdapterClass, adapterOptions, metricsConfig, clickStreamCon adapter.transferCallToAgent(data); } + function checkAllPermissions(): Promise { + return adapter.checkAllPermissions(); + } + return { callState, registerOnCallIncoming, @@ -215,7 +219,8 @@ function UseCallSdk({AdapterClass, adapterOptions, metricsConfig, clickStreamCon registerOnAdapterReady, getAgentAvailability, getAvailableAgentsForCallTransfer, - transferCallToAgent + transferCallToAgent, + checkAllPermissions } }