NTP-27035 | Added checks for microphone permission (#41)

* NTP-27035 | Added Microphone permission check;

* NTP-27035 | resolved comments

* NTP-27035 | file name change

* NTP-27035 | constants file name change

* NTP-27035 | auto reload on permission change

* NTP-27035 | version bump

* Publish

 - @universal-call-sdk/adapter-ameyo@1.3.1
 - @universal-call-sdk/common@1.3.1
 - @universal-call-sdk/core@1.3.1

---------

Co-authored-by: varnit.goyal <varnit.goyal@navi.com>
This commit is contained in:
Somarapu Vamshi
2025-02-03 14:24:16 +05:30
committed by GitHub
parent 5c659e22d8
commit 52ee53a5c6
11 changed files with 87 additions and 5 deletions

View File

@@ -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

View File

@@ -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;
@@ -446,6 +447,10 @@ class AmeyoAdapter implements IAdapter {
public registerOnCallTransferStatus(callback: (data: GenericObject) => void): void {
this.callbacks.onCallTransferStatus = callback;
}
public async checkAllPermissions(): Promise<boolean> {
return await checkAllPermissions();
}
}
export default AmeyoAdapter;

View File

@@ -1,6 +1,6 @@
{
"name": "@universal-call-sdk/adapter-ameyo",
"version": "1.2.6",
"version": "1.3.1",
"type": "module",
"scripts": {
"dev": "vite",
@@ -9,7 +9,7 @@
"preview": "vite preview"
},
"dependencies": {
"@universal-call-sdk/common": "^1.2.6",
"@universal-call-sdk/common": "^1.3.1",
"uuid": "^11.0.3"
},
"devDependencies": {

View File

@@ -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

View File

@@ -32,6 +32,7 @@ class IAdapter {
getLatestCallState(): CALL_STATES {return CALL_STATES.IDLE}
getAvailableAgentsForCallTransfer() {}
transferCallToAgent(data: GenericObject) {console.log("transfer call", data)}
checkAllPermissions():Promise<boolean> {return Promise.resolve(true)}
}
export default IAdapter;

View File

@@ -0,0 +1,7 @@
export enum PermissionState {
GRANTED = "granted",
PROMPT = "prompt",
DENIED = "denied"
}
export const MICROPHONE = 'microphone' as PermissionName;

View File

@@ -0,0 +1,37 @@
import { MICROPHONE, PermissionState } from "../constants";
export const checkPermission = async (permissionName: PermissionName, mediaType: MediaStreamConstraints): Promise<boolean> => {
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<boolean> => {
return checkPermission(MICROPHONE, { audio: true });
};
export const checkAllPermissions = async (): Promise<boolean> => {
return await checkMicrophonePermission();
};

View File

@@ -1,6 +1,6 @@
{
"name": "@universal-call-sdk/common",
"version": "1.2.6",
"version": "1.3.1",
"type": "module",
"scripts": {
"dev": "vite",

View File

@@ -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

View File

@@ -197,6 +197,10 @@ function UseCallSdk({AdapterClass, adapterOptions, metricsConfig, clickStreamCon
adapter.transferCallToAgent(data);
}
function checkAllPermissions(): Promise<boolean> {
return adapter.checkAllPermissions();
}
return {
callState,
registerOnCallIncoming,
@@ -220,7 +224,8 @@ function UseCallSdk({AdapterClass, adapterOptions, metricsConfig, clickStreamCon
registerOnAdapterReady,
getAgentAvailability,
getAvailableAgentsForCallTransfer,
transferCallToAgent
transferCallToAgent,
checkAllPermissions
}
}

View File

@@ -1,6 +1,6 @@
{
"name": "@universal-call-sdk/core",
"version": "1.2.6",
"version": "1.3.1",
"type": "module",
"scripts": {
"dev": "vite",