update element call and widget api
This commit is contained in:
Generated
+8
-8
@@ -44,7 +44,7 @@
|
|||||||
"linkify-react": "4.3.2",
|
"linkify-react": "4.3.2",
|
||||||
"linkifyjs": "4.3.2",
|
"linkifyjs": "4.3.2",
|
||||||
"matrix-js-sdk": "38.2.0",
|
"matrix-js-sdk": "38.2.0",
|
||||||
"matrix-widget-api": "1.13.0",
|
"matrix-widget-api": "1.16.1",
|
||||||
"millify": "6.1.0",
|
"millify": "6.1.0",
|
||||||
"pdfjs-dist": "4.2.67",
|
"pdfjs-dist": "4.2.67",
|
||||||
"prismjs": "1.30.0",
|
"prismjs": "1.30.0",
|
||||||
@@ -66,7 +66,7 @@
|
|||||||
"ua-parser-js": "1.0.35"
|
"ua-parser-js": "1.0.35"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@element-hq/element-call-embedded": "0.16.3",
|
"@element-hq/element-call-embedded": "0.19.1",
|
||||||
"@esbuild-plugins/node-globals-polyfill": "0.2.3",
|
"@esbuild-plugins/node-globals-polyfill": "0.2.3",
|
||||||
"@rollup/plugin-inject": "5.0.3",
|
"@rollup/plugin-inject": "5.0.3",
|
||||||
"@rollup/plugin-wasm": "6.1.1",
|
"@rollup/plugin-wasm": "6.1.1",
|
||||||
@@ -1652,9 +1652,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@element-hq/element-call-embedded": {
|
"node_modules/@element-hq/element-call-embedded": {
|
||||||
"version": "0.16.3",
|
"version": "0.19.1",
|
||||||
"resolved": "https://registry.npmjs.org/@element-hq/element-call-embedded/-/element-call-embedded-0.16.3.tgz",
|
"resolved": "https://registry.npmjs.org/@element-hq/element-call-embedded/-/element-call-embedded-0.19.1.tgz",
|
||||||
"integrity": "sha512-OViKJonDaDNVBUW9WdV9mk78/Ruh34C7XsEgt3O8D9z+64C39elbIgllHSoH5S12IRlv9RYrrV37FZLo6QWsDQ==",
|
"integrity": "sha512-RDZY3P3LTx10ACaGhzkwh2+boNB3x54zHF/7v/cCyoQlAVfEYMhgMEb4CRTwJFwwYFe1r++6Higa0A0G5XxZ8Q==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@emotion/hash": {
|
"node_modules/@emotion/hash": {
|
||||||
@@ -8674,9 +8674,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/matrix-widget-api": {
|
"node_modules/matrix-widget-api": {
|
||||||
"version": "1.13.0",
|
"version": "1.16.1",
|
||||||
"resolved": "https://registry.npmjs.org/matrix-widget-api/-/matrix-widget-api-1.13.0.tgz",
|
"resolved": "https://registry.npmjs.org/matrix-widget-api/-/matrix-widget-api-1.16.1.tgz",
|
||||||
"integrity": "sha512-+LrvwkR1izL4h2euX8PDrvG/3PZZDEd6As+lmnR3jAVwbFJtU5iTnwmZGnCca9ddngCvXvAHkcpJBEPyPTZneQ==",
|
"integrity": "sha512-oCfTV4xNPo02qIgveqdkIyKQjOPpsjhF3bmJBotHrhr8TsrhVa7kx8PtuiUPnQTjz0tdBle7falR2Fw8VKsedw==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/events": "^3.0.0",
|
"@types/events": "^3.0.0",
|
||||||
|
|||||||
+2
-2
@@ -56,7 +56,7 @@
|
|||||||
"linkify-react": "4.3.2",
|
"linkify-react": "4.3.2",
|
||||||
"linkifyjs": "4.3.2",
|
"linkifyjs": "4.3.2",
|
||||||
"matrix-js-sdk": "38.2.0",
|
"matrix-js-sdk": "38.2.0",
|
||||||
"matrix-widget-api": "1.13.0",
|
"matrix-widget-api": "1.16.1",
|
||||||
"millify": "6.1.0",
|
"millify": "6.1.0",
|
||||||
"pdfjs-dist": "4.2.67",
|
"pdfjs-dist": "4.2.67",
|
||||||
"prismjs": "1.30.0",
|
"prismjs": "1.30.0",
|
||||||
@@ -78,7 +78,7 @@
|
|||||||
"ua-parser-js": "1.0.35"
|
"ua-parser-js": "1.0.35"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@element-hq/element-call-embedded": "0.16.3",
|
"@element-hq/element-call-embedded": "0.19.1",
|
||||||
"@esbuild-plugins/node-globals-polyfill": "0.2.3",
|
"@esbuild-plugins/node-globals-polyfill": "0.2.3",
|
||||||
"@rollup/plugin-inject": "5.0.3",
|
"@rollup/plugin-inject": "5.0.3",
|
||||||
"@rollup/plugin-wasm": "6.1.1",
|
"@rollup/plugin-wasm": "6.1.1",
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ export const createCallEmbed = (
|
|||||||
const ongoing =
|
const ongoing =
|
||||||
MatrixRTCSession.sessionMembershipsForRoom(room, rtcSession.sessionDescription).length > 0;
|
MatrixRTCSession.sessionMembershipsForRoom(room, rtcSession.sessionDescription).length > 0;
|
||||||
|
|
||||||
const intent = CallEmbed.getIntent(dm, ongoing);
|
const intent = CallEmbed.getIntent(dm, ongoing, pref?.video);
|
||||||
const widget = CallEmbed.getWidget(mx, room, intent, themeKind);
|
const widget = CallEmbed.getWidget(mx, room, intent, themeKind);
|
||||||
const controlState = pref && new CallControlState(pref.microphone, pref.video, pref.sound);
|
const controlState = pref && new CallControlState(pref.microphone, pref.video, pref.sound);
|
||||||
|
|
||||||
@@ -101,6 +101,7 @@ export const useCallJoined = (embed?: CallEmbed): boolean => {
|
|||||||
|
|
||||||
export const useCallHangupEvent = (embed: CallEmbed, callback: () => void) => {
|
export const useCallHangupEvent = (embed: CallEmbed, callback: () => void) => {
|
||||||
useClientWidgetApiEvent(embed.call, ElementWidgetActions.HangupCall, callback);
|
useClientWidgetApiEvent(embed.call, ElementWidgetActions.HangupCall, callback);
|
||||||
|
useClientWidgetApiEvent(embed.call, ElementWidgetActions.Close, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const useCallMemberSoundSync = (embed: CallEmbed) => {
|
export const useCallMemberSoundSync = (embed: CallEmbed) => {
|
||||||
|
|||||||
@@ -47,12 +47,33 @@ export class CallEmbed {
|
|||||||
|
|
||||||
private readonly disposables: Array<() => void> = [];
|
private readonly disposables: Array<() => void> = [];
|
||||||
|
|
||||||
static getIntent(dm: boolean, ongoing: boolean): ElementCallIntent {
|
static getIntent(dm: boolean, ongoing: boolean, video?: boolean): ElementCallIntent {
|
||||||
if (ongoing) {
|
if (dm && ongoing) {
|
||||||
return dm ? ElementCallIntent.JoinExistingDM : ElementCallIntent.JoinExisting;
|
return video ? ElementCallIntent.JoinExistingDM : ElementCallIntent.JoinExistingDMVoice;
|
||||||
|
}
|
||||||
|
if (dm) {
|
||||||
|
return video ? ElementCallIntent.StartCallDM : ElementCallIntent.StartCallDMVoice;
|
||||||
}
|
}
|
||||||
|
|
||||||
return dm ? ElementCallIntent.StartCallDM : ElementCallIntent.StartCall;
|
if (ongoing) {
|
||||||
|
return video ? ElementCallIntent.JoinExisting : ElementCallIntent.JoinExistingVoice;
|
||||||
|
}
|
||||||
|
return video ? ElementCallIntent.StartCall : ElementCallIntent.StartCallVoice;
|
||||||
|
}
|
||||||
|
|
||||||
|
static dmCall(intent: ElementCallIntent): boolean {
|
||||||
|
return (
|
||||||
|
intent === ElementCallIntent.JoinExistingDM ||
|
||||||
|
intent === ElementCallIntent.JoinExistingDMVoice ||
|
||||||
|
intent === ElementCallIntent.StartCallDM ||
|
||||||
|
intent === ElementCallIntent.StartCallDMVoice
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
static startingDMCall(intent: ElementCallIntent): boolean {
|
||||||
|
return (
|
||||||
|
intent === ElementCallIntent.StartCallDM || intent === ElementCallIntent.StartCallDMVoice
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
static getWidget(
|
static getWidget(
|
||||||
@@ -81,7 +102,11 @@ export class CallEmbed {
|
|||||||
perParticipantE2EE: room.hasEncryptionStateEvent().toString(),
|
perParticipantE2EE: room.hasEncryptionStateEvent().toString(),
|
||||||
lang: 'en-EN',
|
lang: 'en-EN',
|
||||||
theme: themeKind,
|
theme: themeKind,
|
||||||
|
header: 'none',
|
||||||
});
|
});
|
||||||
|
if (CallEmbed.startingDMCall(intent)) {
|
||||||
|
params.append('sendNotificationType', 'ring');
|
||||||
|
}
|
||||||
|
|
||||||
const widgetUrl = new URL(
|
const widgetUrl = new URL(
|
||||||
`${trimTrailingSlash(import.meta.env.BASE_URL)}/public/element-call/index.html`,
|
`${trimTrailingSlash(import.meta.env.BASE_URL)}/public/element-call/index.html`,
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
export enum ElementCallIntent {
|
export enum ElementCallIntent {
|
||||||
StartCall = 'start_call',
|
StartCall = 'start_call',
|
||||||
JoinExisting = 'join_existing',
|
JoinExisting = 'join_existing',
|
||||||
|
StartCallVoice = 'start_call_voice',
|
||||||
|
JoinExistingVoice = 'join_existing_voice',
|
||||||
StartCallDM = 'start_call_dm',
|
StartCallDM = 'start_call_dm',
|
||||||
JoinExistingDM = 'join_existing_dm',
|
JoinExistingDM = 'join_existing_dm',
|
||||||
StartCallDMVoice = 'start_call_dm_voice',
|
StartCallDMVoice = 'start_call_dm_voice',
|
||||||
|
|||||||
Reference in New Issue
Block a user