mirror of
https://github.com/vector-im/element-call.git
synced 2026-07-30 19:39:22 +00:00
Merge branch 'livekit' into valere/devx/use_synapse_api_for_playwright
This commit is contained in:
@@ -18,3 +18,7 @@ keys:
|
|||||||
devkey: secret
|
devkey: secret
|
||||||
room:
|
room:
|
||||||
auto_create: false
|
auto_create: false
|
||||||
|
webhook:
|
||||||
|
api_key: devkey
|
||||||
|
urls:
|
||||||
|
- https://matrix-rtc.othersite.m.localhost/livekit/jwt/sfu_webhook
|
||||||
|
|||||||
@@ -18,3 +18,7 @@ keys:
|
|||||||
devkey: secret
|
devkey: secret
|
||||||
room:
|
room:
|
||||||
auto_create: false
|
auto_create: false
|
||||||
|
webhook:
|
||||||
|
api_key: devkey
|
||||||
|
urls:
|
||||||
|
- https://matrix-rtc.m.localhost/livekit/jwt/sfu_webhook
|
||||||
|
|||||||
@@ -62,7 +62,10 @@ services:
|
|||||||
- 7882:7882/tcp
|
- 7882:7882/tcp
|
||||||
- 50100-50200:50100-50200/udp
|
- 50100-50200:50100-50200/udp
|
||||||
volumes:
|
volumes:
|
||||||
|
- ./backend/dev_tls_m.localhost.crt:/local_cert.pem:Z
|
||||||
- ./backend/dev_livekit.yaml:/etc/livekit.yaml:Z
|
- ./backend/dev_livekit.yaml:/etc/livekit.yaml:Z
|
||||||
|
environment:
|
||||||
|
- SSL_CERT_FILE=/local_cert.pem
|
||||||
networks:
|
networks:
|
||||||
- ecbackend
|
- ecbackend
|
||||||
|
|
||||||
@@ -82,7 +85,10 @@ services:
|
|||||||
- 17882:17882/tcp
|
- 17882:17882/tcp
|
||||||
- 50300-50400:50300-50400/udp
|
- 50300-50400:50300-50400/udp
|
||||||
volumes:
|
volumes:
|
||||||
|
- ./backend/dev_tls_m.localhost.crt:/local_cert.pem:Z
|
||||||
- ./backend/dev_livekit-othersite.yaml:/etc/livekit.yaml:Z
|
- ./backend/dev_livekit-othersite.yaml:/etc/livekit.yaml:Z
|
||||||
|
environment:
|
||||||
|
- SSL_CERT_FILE=/local_cert.pem
|
||||||
networks:
|
networks:
|
||||||
- ecbackend
|
- ecbackend
|
||||||
|
|
||||||
@@ -164,6 +170,8 @@ services:
|
|||||||
- "8448:8448"
|
- "8448:8448"
|
||||||
extra_hosts:
|
extra_hosts:
|
||||||
- "host.docker.internal:host-gateway"
|
- "host.docker.internal:host-gateway"
|
||||||
|
- "auth-server:127.0.0.1"
|
||||||
|
- "auth-server-1:127.0.0.1"
|
||||||
depends_on:
|
depends_on:
|
||||||
- synapse
|
- synapse
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
@@ -132,7 +132,7 @@
|
|||||||
"typescript": "^5.8.3",
|
"typescript": "^5.8.3",
|
||||||
"typescript-eslint-language-service": "^5.0.5",
|
"typescript-eslint-language-service": "^5.0.5",
|
||||||
"unique-names-generator": "^4.6.0",
|
"unique-names-generator": "^4.6.0",
|
||||||
"uuid": "^13.0.0",
|
"uuid": "^14.0.0",
|
||||||
"vaul": "^1.0.0",
|
"vaul": "^1.0.0",
|
||||||
"vite": "^8.0.0",
|
"vite": "^8.0.0",
|
||||||
"vite-plugin-generate-file": "^0.3.0",
|
"vite-plugin-generate-file": "^0.3.0",
|
||||||
|
|||||||
@@ -75,9 +75,7 @@ test("Should automatically retry non fatal JWT errors", async ({
|
|||||||
await expect(page.getByTestId("video").first()).toBeVisible();
|
await expect(page.getByTestId("video").first()).toBeVisible();
|
||||||
});
|
});
|
||||||
|
|
||||||
// We skip this test for now as it appears the livekit does not let us
|
test("Should show error screen if call creation is restricted", async ({
|
||||||
// detect and handle NotAllowed errors anymore. https://github.com/livekit/client-sdk-js/issues/1883
|
|
||||||
test.skip("Should show error screen if call creation is restricted", async ({
|
|
||||||
page,
|
page,
|
||||||
browserName,
|
browserName,
|
||||||
}) => {
|
}) => {
|
||||||
|
|||||||
153
pnpm-lock.yaml
generated
153
pnpm-lock.yaml
generated
@@ -47,16 +47,16 @@ importers:
|
|||||||
version: 11.7.12
|
version: 11.7.12
|
||||||
'@livekit/components-core':
|
'@livekit/components-core':
|
||||||
specifier: ^0.12.0
|
specifier: ^0.12.0
|
||||||
version: 0.12.13(livekit-client@2.18.3(@types/dom-mediacapture-record@1.0.22))(tslib@2.8.1)
|
version: 0.12.13(livekit-client@2.18.6(@types/dom-mediacapture-record@1.0.22))(tslib@2.8.1)
|
||||||
'@livekit/components-react':
|
'@livekit/components-react':
|
||||||
specifier: ^2.0.0
|
specifier: ^2.0.0
|
||||||
version: 2.9.20(livekit-client@2.18.3(@types/dom-mediacapture-record@1.0.22))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tslib@2.8.1)
|
version: 2.9.20(livekit-client@2.18.6(@types/dom-mediacapture-record@1.0.22))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tslib@2.8.1)
|
||||||
'@livekit/protocol':
|
'@livekit/protocol':
|
||||||
specifier: ^1.42.2
|
specifier: ^1.42.2
|
||||||
version: 1.45.3
|
version: 1.45.3
|
||||||
'@livekit/track-processors':
|
'@livekit/track-processors':
|
||||||
specifier: ^0.7.1
|
specifier: ^0.7.1
|
||||||
version: 0.7.2(@types/dom-mediacapture-transform@0.1.11)(livekit-client@2.18.3(@types/dom-mediacapture-record@1.0.22))
|
version: 0.7.2(@types/dom-mediacapture-transform@0.1.11)(livekit-client@2.18.6(@types/dom-mediacapture-record@1.0.22))
|
||||||
'@mediapipe/tasks-vision':
|
'@mediapipe/tasks-vision':
|
||||||
specifier: ^0.10.18
|
specifier: ^0.10.18
|
||||||
version: 0.10.34
|
version: 0.10.34
|
||||||
@@ -227,7 +227,7 @@ importers:
|
|||||||
version: 5.88.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@24.12.2)(typescript@5.9.3)
|
version: 5.88.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@24.12.2)(typescript@5.9.3)
|
||||||
livekit-client:
|
livekit-client:
|
||||||
specifier: ^2.18.1
|
specifier: ^2.18.1
|
||||||
version: 2.18.3(@types/dom-mediacapture-record@1.0.22)
|
version: 2.18.6(@types/dom-mediacapture-record@1.0.22)
|
||||||
lodash-es:
|
lodash-es:
|
||||||
specifier: ^4.17.21
|
specifier: ^4.17.21
|
||||||
version: 4.18.1
|
version: 4.18.1
|
||||||
@@ -236,7 +236,7 @@ importers:
|
|||||||
version: 1.9.2
|
version: 1.9.2
|
||||||
matrix-js-sdk:
|
matrix-js-sdk:
|
||||||
specifier: matrix-org/matrix-js-sdk#develop
|
specifier: matrix-org/matrix-js-sdk#develop
|
||||||
version: https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/4b33892d48017b3733a00a48cf5d30182be4a6fb
|
version: https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/bec985b783c666de24d6db92a4307a10416742d7
|
||||||
matrix-widget-api:
|
matrix-widget-api:
|
||||||
specifier: ^1.16.1
|
specifier: ^1.16.1
|
||||||
version: 1.17.0
|
version: 1.17.0
|
||||||
@@ -301,8 +301,8 @@ importers:
|
|||||||
specifier: ^4.6.0
|
specifier: ^4.6.0
|
||||||
version: 4.7.1
|
version: 4.7.1
|
||||||
uuid:
|
uuid:
|
||||||
specifier: ^13.0.0
|
specifier: ^14.0.0
|
||||||
version: 13.0.0
|
version: 14.0.0
|
||||||
vaul:
|
vaul:
|
||||||
specifier: ^1.0.0
|
specifier: ^1.0.0
|
||||||
version: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
|
version: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
|
||||||
@@ -1576,8 +1576,8 @@ packages:
|
|||||||
'@types/dom-mediacapture-transform': ^0.1.9
|
'@types/dom-mediacapture-transform': ^0.1.9
|
||||||
livekit-client: ^1.12.0 || ^2.1.0
|
livekit-client: ^1.12.0 || ^2.1.0
|
||||||
|
|
||||||
'@matrix-org/matrix-sdk-crypto-wasm@18.1.0':
|
'@matrix-org/matrix-sdk-crypto-wasm@18.2.0':
|
||||||
resolution: {integrity: sha512-GxXK2U39+2qWNvR3fXJY7nxdikvpiT17RaS0/Dktk6R8FMKDk3vm79Hq65yrCWLBmT7pJZoerfILNZqhrcUHrg==}
|
resolution: {integrity: sha512-puyZefvq6sHfqlmkri8umhA44724H2JL0YtX8wlvhGuNl8awX/Q1tZyW2Iekm9ZJP7BtuOqlNdg9oQd6iaGbNw==}
|
||||||
engines: {node: '>= 18'}
|
engines: {node: '>= 18'}
|
||||||
|
|
||||||
'@mdx-js/react@3.1.1':
|
'@mdx-js/react@3.1.1':
|
||||||
@@ -2981,6 +2981,12 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '>=4.8.4 <6.1.0'
|
typescript: '>=4.8.4 <6.1.0'
|
||||||
|
|
||||||
|
'@typescript-eslint/project-service@8.59.0':
|
||||||
|
resolution: {integrity: sha512-Lw5ITrR5s5TbC19YSvlr63ZfLaJoU6vtKTHyB0GQOpX0W7d5/Ir6vUahWi/8Sps/nOukZQ0IB3SmlxZnjaKVnw==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
peerDependencies:
|
||||||
|
typescript: '>=4.8.4 <6.1.0'
|
||||||
|
|
||||||
'@typescript-eslint/scope-manager@5.62.0':
|
'@typescript-eslint/scope-manager@5.62.0':
|
||||||
resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
|
resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
|
||||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||||
@@ -2989,12 +2995,22 @@ packages:
|
|||||||
resolution: {integrity: sha512-SgmyvDPexWETQek+qzZnrG6844IaO02UVyOLhI4wpo82dpZJY9+6YZCKAMFzXb7qhx37mFK1QcPQ18tud+vo6Q==}
|
resolution: {integrity: sha512-SgmyvDPexWETQek+qzZnrG6844IaO02UVyOLhI4wpo82dpZJY9+6YZCKAMFzXb7qhx37mFK1QcPQ18tud+vo6Q==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
|
'@typescript-eslint/scope-manager@8.59.0':
|
||||||
|
resolution: {integrity: sha512-UzR16Ut8IpA3Mc4DbgAShlPPkVm8xXMWafXxB0BocaVRHs8ZGakAxGRskF7FId3sdk9lgGD73GSFaWmWFDE4dg==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
'@typescript-eslint/tsconfig-utils@8.58.2':
|
'@typescript-eslint/tsconfig-utils@8.58.2':
|
||||||
resolution: {integrity: sha512-3SR+RukipDvkkKp/d0jP0dyzuls3DbGmwDpVEc5wqk5f38KFThakqAAO0XMirWAE+kT00oTauTbzMFGPoAzB0A==}
|
resolution: {integrity: sha512-3SR+RukipDvkkKp/d0jP0dyzuls3DbGmwDpVEc5wqk5f38KFThakqAAO0XMirWAE+kT00oTauTbzMFGPoAzB0A==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '>=4.8.4 <6.1.0'
|
typescript: '>=4.8.4 <6.1.0'
|
||||||
|
|
||||||
|
'@typescript-eslint/tsconfig-utils@8.59.0':
|
||||||
|
resolution: {integrity: sha512-91Sbl3s4Kb3SybliIY6muFBmHVv+pYXfybC4Oolp3dvk8BvIE3wOPc+403CWIT7mJNkfQRGtdqghzs2+Z91Tqg==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
peerDependencies:
|
||||||
|
typescript: '>=4.8.4 <6.1.0'
|
||||||
|
|
||||||
'@typescript-eslint/type-utils@8.58.2':
|
'@typescript-eslint/type-utils@8.58.2':
|
||||||
resolution: {integrity: sha512-Z7EloNR/B389FvabdGeTo2XMs4W9TjtPiO9DAsmT0yom0bwlPyRjkJ1uCdW1DvrrrYP50AJZ9Xc3sByZA9+dcg==}
|
resolution: {integrity: sha512-Z7EloNR/B389FvabdGeTo2XMs4W9TjtPiO9DAsmT0yom0bwlPyRjkJ1uCdW1DvrrrYP50AJZ9Xc3sByZA9+dcg==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
@@ -3010,6 +3026,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-9TukXyATBQf/Jq9AMQXfvurk+G5R2MwfqQGDR2GzGz28HvY/lXNKGhkY+6IOubwcquikWk5cjlgPvD2uAA7htQ==}
|
resolution: {integrity: sha512-9TukXyATBQf/Jq9AMQXfvurk+G5R2MwfqQGDR2GzGz28HvY/lXNKGhkY+6IOubwcquikWk5cjlgPvD2uAA7htQ==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
|
'@typescript-eslint/types@8.59.0':
|
||||||
|
resolution: {integrity: sha512-nLzdsT1gdOgFxxxwrlNVUBzSNBEEHJ86bblmk4QAS6stfig7rcJzWKqCyxFy3YRRHXDWEkb2NralA1nOYkkm/A==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
'@typescript-eslint/typescript-estree@5.62.0':
|
'@typescript-eslint/typescript-estree@5.62.0':
|
||||||
resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
|
resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
|
||||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||||
@@ -3025,6 +3045,12 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '>=4.8.4 <6.1.0'
|
typescript: '>=4.8.4 <6.1.0'
|
||||||
|
|
||||||
|
'@typescript-eslint/typescript-estree@8.59.0':
|
||||||
|
resolution: {integrity: sha512-O9Re9P1BmBLFJyikRbQpLku/QA3/AueZNO9WePLBwQrvkixTmDe8u76B6CYUAITRl/rHawggEqUGn5QIkVRLMw==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
peerDependencies:
|
||||||
|
typescript: '>=4.8.4 <6.1.0'
|
||||||
|
|
||||||
'@typescript-eslint/utils@5.62.0':
|
'@typescript-eslint/utils@5.62.0':
|
||||||
resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
|
resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
|
||||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||||
@@ -3038,6 +3064,13 @@ packages:
|
|||||||
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
||||||
typescript: '>=4.8.4 <6.1.0'
|
typescript: '>=4.8.4 <6.1.0'
|
||||||
|
|
||||||
|
'@typescript-eslint/utils@8.59.0':
|
||||||
|
resolution: {integrity: sha512-I1R/K7V07XsMJ12Oaxg/O9GfrysGTmCRhvZJBv0RE0NcULMzjqVpR5kRRQjHsz3J/bElU7HwCO7zkqL+MSUz+g==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
peerDependencies:
|
||||||
|
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
||||||
|
typescript: '>=4.8.4 <6.1.0'
|
||||||
|
|
||||||
'@typescript-eslint/visitor-keys@5.62.0':
|
'@typescript-eslint/visitor-keys@5.62.0':
|
||||||
resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
|
resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
|
||||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||||
@@ -3046,6 +3079,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-f1WO2Lx8a9t8DARmcWAUPJbu0G20bJlj8L4z72K00TMeJAoyLr/tHhI/pzYBLrR4dXWkcxO1cWYZEOX8DKHTqA==}
|
resolution: {integrity: sha512-f1WO2Lx8a9t8DARmcWAUPJbu0G20bJlj8L4z72K00TMeJAoyLr/tHhI/pzYBLrR4dXWkcxO1cWYZEOX8DKHTqA==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
|
'@typescript-eslint/visitor-keys@8.59.0':
|
||||||
|
resolution: {integrity: sha512-/uejZt4dSere1bx12WLlPfv8GktzcaDtuJ7s42/HEZ5zGj9oxRaD4bj7qwSunXkf+pbAhFt2zjpHYUiT5lHf0Q==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
'@ungap/structured-clone@1.3.0':
|
'@ungap/structured-clone@1.3.0':
|
||||||
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
|
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
|
||||||
|
|
||||||
@@ -4936,8 +4973,8 @@ packages:
|
|||||||
lines-and-columns@1.2.4:
|
lines-and-columns@1.2.4:
|
||||||
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
|
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
|
||||||
|
|
||||||
livekit-client@2.18.3:
|
livekit-client@2.18.6:
|
||||||
resolution: {integrity: sha512-A8QDaVPo+Ye35bJFyKe6PjMOtY33dmdRXGKP/3+BG48ynEES3YwFzHbsPHJiScgI4OZouNef3Ew/BPazXKwo8Q==}
|
resolution: {integrity: sha512-JTOSWkRrFC9KayPvasbnXpAmt+J/ILk5c8f3xUmjqazZk7j9QTyj0qhDHIgdyy/5KFqjqaRmtPu/InMB+WlkPA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@types/dom-mediacapture-record': ^1
|
'@types/dom-mediacapture-record': ^1
|
||||||
|
|
||||||
@@ -5011,8 +5048,8 @@ packages:
|
|||||||
matrix-events-sdk@0.0.1:
|
matrix-events-sdk@0.0.1:
|
||||||
resolution: {integrity: sha512-1QEOsXO+bhyCroIe2/A5OwaxHvBm7EsSQ46DEDn8RBIfQwN5HWBpFvyWWR4QY0KHPPnnJdI99wgRiAl7Ad5qaA==}
|
resolution: {integrity: sha512-1QEOsXO+bhyCroIe2/A5OwaxHvBm7EsSQ46DEDn8RBIfQwN5HWBpFvyWWR4QY0KHPPnnJdI99wgRiAl7Ad5qaA==}
|
||||||
|
|
||||||
matrix-js-sdk@https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/4b33892d48017b3733a00a48cf5d30182be4a6fb:
|
matrix-js-sdk@https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/bec985b783c666de24d6db92a4307a10416742d7:
|
||||||
resolution: {tarball: https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/4b33892d48017b3733a00a48cf5d30182be4a6fb}
|
resolution: {tarball: https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/bec985b783c666de24d6db92a4307a10416742d7}
|
||||||
version: 41.3.0
|
version: 41.3.0
|
||||||
engines: {node: '>=22.0.0'}
|
engines: {node: '>=22.0.0'}
|
||||||
|
|
||||||
@@ -6421,8 +6458,8 @@ packages:
|
|||||||
util@0.12.5:
|
util@0.12.5:
|
||||||
resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==}
|
resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==}
|
||||||
|
|
||||||
uuid@13.0.0:
|
uuid@14.0.0:
|
||||||
resolution: {integrity: sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==}
|
resolution: {integrity: sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
validate-npm-package-license@3.0.4:
|
validate-npm-package-license@3.0.4:
|
||||||
@@ -6611,8 +6648,8 @@ packages:
|
|||||||
webpack-virtual-modules@0.6.2:
|
webpack-virtual-modules@0.6.2:
|
||||||
resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}
|
resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}
|
||||||
|
|
||||||
webrtc-adapter@9.0.4:
|
webrtc-adapter@9.0.5:
|
||||||
resolution: {integrity: sha512-5ZZY1+lGq8LEKuDlg9M2RPJHlH3R7OVwyHqMcUsLKCgd9Wvf+QrFTCItkXXYPmrJn8H6gRLXbSgxLLdexiqHxw==}
|
resolution: {integrity: sha512-U9vjByy/sK2OMXu5mmfuZFKTMIUQe34c0JXRO+oDrxJTsntdYT2iIFwYMOV7HhMTuktcZLGf2W1N/OcSf9ssWg==}
|
||||||
engines: {node: '>=6.0.0', npm: '>=3.10.0'}
|
engines: {node: '>=6.0.0', npm: '>=3.10.0'}
|
||||||
|
|
||||||
whatwg-encoding@3.1.1:
|
whatwg-encoding@3.1.1:
|
||||||
@@ -8115,21 +8152,21 @@ snapshots:
|
|||||||
'@jridgewell/resolve-uri': 3.1.2
|
'@jridgewell/resolve-uri': 3.1.2
|
||||||
'@jridgewell/sourcemap-codec': 1.5.5
|
'@jridgewell/sourcemap-codec': 1.5.5
|
||||||
|
|
||||||
'@livekit/components-core@0.12.13(livekit-client@2.18.3(@types/dom-mediacapture-record@1.0.22))(tslib@2.8.1)':
|
'@livekit/components-core@0.12.13(livekit-client@2.18.6(@types/dom-mediacapture-record@1.0.22))(tslib@2.8.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@floating-ui/dom': 1.7.4
|
'@floating-ui/dom': 1.7.4
|
||||||
livekit-client: 2.18.3(@types/dom-mediacapture-record@1.0.22)
|
livekit-client: 2.18.6(@types/dom-mediacapture-record@1.0.22)
|
||||||
loglevel: 1.9.1
|
loglevel: 1.9.1
|
||||||
rxjs: 7.8.2
|
rxjs: 7.8.2
|
||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
|
|
||||||
'@livekit/components-react@2.9.20(livekit-client@2.18.3(@types/dom-mediacapture-record@1.0.22))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tslib@2.8.1)':
|
'@livekit/components-react@2.9.20(livekit-client@2.18.6(@types/dom-mediacapture-record@1.0.22))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tslib@2.8.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@livekit/components-core': 0.12.13(livekit-client@2.18.3(@types/dom-mediacapture-record@1.0.22))(tslib@2.8.1)
|
'@livekit/components-core': 0.12.13(livekit-client@2.18.6(@types/dom-mediacapture-record@1.0.22))(tslib@2.8.1)
|
||||||
clsx: 2.1.1
|
clsx: 2.1.1
|
||||||
events: 3.3.0
|
events: 3.3.0
|
||||||
jose: 6.2.2
|
jose: 6.2.2
|
||||||
livekit-client: 2.18.3(@types/dom-mediacapture-record@1.0.22)
|
livekit-client: 2.18.6(@types/dom-mediacapture-record@1.0.22)
|
||||||
react: 19.2.5
|
react: 19.2.5
|
||||||
react-dom: 19.2.5(react@19.2.5)
|
react-dom: 19.2.5(react@19.2.5)
|
||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
@@ -8141,13 +8178,13 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@bufbuild/protobuf': 1.10.1
|
'@bufbuild/protobuf': 1.10.1
|
||||||
|
|
||||||
'@livekit/track-processors@0.7.2(@types/dom-mediacapture-transform@0.1.11)(livekit-client@2.18.3(@types/dom-mediacapture-record@1.0.22))':
|
'@livekit/track-processors@0.7.2(@types/dom-mediacapture-transform@0.1.11)(livekit-client@2.18.6(@types/dom-mediacapture-record@1.0.22))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@mediapipe/tasks-vision': 0.10.34
|
'@mediapipe/tasks-vision': 0.10.34
|
||||||
'@types/dom-mediacapture-transform': 0.1.11
|
'@types/dom-mediacapture-transform': 0.1.11
|
||||||
livekit-client: 2.18.3(@types/dom-mediacapture-record@1.0.22)
|
livekit-client: 2.18.6(@types/dom-mediacapture-record@1.0.22)
|
||||||
|
|
||||||
'@matrix-org/matrix-sdk-crypto-wasm@18.1.0': {}
|
'@matrix-org/matrix-sdk-crypto-wasm@18.2.0': {}
|
||||||
|
|
||||||
'@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.5)':
|
'@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.5)':
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -9399,6 +9436,15 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
'@typescript-eslint/project-service@8.59.0(typescript@5.9.3)':
|
||||||
|
dependencies:
|
||||||
|
'@typescript-eslint/tsconfig-utils': 8.59.0(typescript@5.9.3)
|
||||||
|
'@typescript-eslint/types': 8.59.0
|
||||||
|
debug: 4.4.3
|
||||||
|
typescript: 5.9.3
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/scope-manager@5.62.0':
|
'@typescript-eslint/scope-manager@5.62.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 5.62.0
|
'@typescript-eslint/types': 5.62.0
|
||||||
@@ -9409,10 +9455,19 @@ snapshots:
|
|||||||
'@typescript-eslint/types': 8.58.2
|
'@typescript-eslint/types': 8.58.2
|
||||||
'@typescript-eslint/visitor-keys': 8.58.2
|
'@typescript-eslint/visitor-keys': 8.58.2
|
||||||
|
|
||||||
|
'@typescript-eslint/scope-manager@8.59.0':
|
||||||
|
dependencies:
|
||||||
|
'@typescript-eslint/types': 8.59.0
|
||||||
|
'@typescript-eslint/visitor-keys': 8.59.0
|
||||||
|
|
||||||
'@typescript-eslint/tsconfig-utils@8.58.2(typescript@5.9.3)':
|
'@typescript-eslint/tsconfig-utils@8.58.2(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
typescript: 5.9.3
|
typescript: 5.9.3
|
||||||
|
|
||||||
|
'@typescript-eslint/tsconfig-utils@8.59.0(typescript@5.9.3)':
|
||||||
|
dependencies:
|
||||||
|
typescript: 5.9.3
|
||||||
|
|
||||||
'@typescript-eslint/type-utils@8.58.2(eslint@8.57.1)(typescript@5.9.3)':
|
'@typescript-eslint/type-utils@8.58.2(eslint@8.57.1)(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 8.58.2
|
'@typescript-eslint/types': 8.58.2
|
||||||
@@ -9429,6 +9484,8 @@ snapshots:
|
|||||||
|
|
||||||
'@typescript-eslint/types@8.58.2': {}
|
'@typescript-eslint/types@8.58.2': {}
|
||||||
|
|
||||||
|
'@typescript-eslint/types@8.59.0': {}
|
||||||
|
|
||||||
'@typescript-eslint/typescript-estree@5.62.0(typescript@5.9.3)':
|
'@typescript-eslint/typescript-estree@5.62.0(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 5.62.0
|
'@typescript-eslint/types': 5.62.0
|
||||||
@@ -9458,6 +9515,21 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
'@typescript-eslint/typescript-estree@8.59.0(typescript@5.9.3)':
|
||||||
|
dependencies:
|
||||||
|
'@typescript-eslint/project-service': 8.59.0(typescript@5.9.3)
|
||||||
|
'@typescript-eslint/tsconfig-utils': 8.59.0(typescript@5.9.3)
|
||||||
|
'@typescript-eslint/types': 8.59.0
|
||||||
|
'@typescript-eslint/visitor-keys': 8.59.0
|
||||||
|
debug: 4.4.3
|
||||||
|
minimatch: 10.2.5
|
||||||
|
semver: 7.7.4
|
||||||
|
tinyglobby: 0.2.16
|
||||||
|
ts-api-utils: 2.5.0(typescript@5.9.3)
|
||||||
|
typescript: 5.9.3
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.9.3)':
|
'@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1)
|
'@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1)
|
||||||
@@ -9484,6 +9556,17 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
'@typescript-eslint/utils@8.59.0(eslint@8.57.1)(typescript@5.9.3)':
|
||||||
|
dependencies:
|
||||||
|
'@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1)
|
||||||
|
'@typescript-eslint/scope-manager': 8.59.0
|
||||||
|
'@typescript-eslint/types': 8.59.0
|
||||||
|
'@typescript-eslint/typescript-estree': 8.59.0(typescript@5.9.3)
|
||||||
|
eslint: 8.57.1
|
||||||
|
typescript: 5.9.3
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/visitor-keys@5.62.0':
|
'@typescript-eslint/visitor-keys@5.62.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 5.62.0
|
'@typescript-eslint/types': 5.62.0
|
||||||
@@ -9494,6 +9577,11 @@ snapshots:
|
|||||||
'@typescript-eslint/types': 8.58.2
|
'@typescript-eslint/types': 8.58.2
|
||||||
eslint-visitor-keys: 5.0.1
|
eslint-visitor-keys: 5.0.1
|
||||||
|
|
||||||
|
'@typescript-eslint/visitor-keys@8.59.0':
|
||||||
|
dependencies:
|
||||||
|
'@typescript-eslint/types': 8.59.0
|
||||||
|
eslint-visitor-keys: 5.0.1
|
||||||
|
|
||||||
'@ungap/structured-clone@1.3.0': {}
|
'@ungap/structured-clone@1.3.0': {}
|
||||||
|
|
||||||
'@use-gesture/core@10.3.1': {}
|
'@use-gesture/core@10.3.1': {}
|
||||||
@@ -10652,7 +10740,7 @@ snapshots:
|
|||||||
|
|
||||||
eslint-plugin-jest@29.15.2(@typescript-eslint/eslint-plugin@8.58.2(@typescript-eslint/parser@8.58.2(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3):
|
eslint-plugin-jest@29.15.2(@typescript-eslint/eslint-plugin@8.58.2(@typescript-eslint/parser@8.58.2(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/utils': 8.58.2(eslint@8.57.1)(typescript@5.9.3)
|
'@typescript-eslint/utils': 8.59.0(eslint@8.57.1)(typescript@5.9.3)
|
||||||
eslint: 8.57.1
|
eslint: 8.57.1
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@typescript-eslint/eslint-plugin': 8.58.2(@typescript-eslint/parser@8.58.2(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)
|
'@typescript-eslint/eslint-plugin': 8.58.2(@typescript-eslint/parser@8.58.2(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)
|
||||||
@@ -11710,7 +11798,7 @@ snapshots:
|
|||||||
|
|
||||||
lines-and-columns@1.2.4: {}
|
lines-and-columns@1.2.4: {}
|
||||||
|
|
||||||
livekit-client@2.18.3(@types/dom-mediacapture-record@1.0.22):
|
livekit-client@2.18.6(@types/dom-mediacapture-record@1.0.22):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@livekit/mutex': 1.1.1
|
'@livekit/mutex': 1.1.1
|
||||||
'@livekit/protocol': 1.45.3
|
'@livekit/protocol': 1.45.3
|
||||||
@@ -11721,7 +11809,7 @@ snapshots:
|
|||||||
sdp-transform: 2.15.0
|
sdp-transform: 2.15.0
|
||||||
tslib: 2.8.1
|
tslib: 2.8.1
|
||||||
typed-emitter: 2.1.0
|
typed-emitter: 2.1.0
|
||||||
webrtc-adapter: 9.0.4
|
webrtc-adapter: 9.0.5
|
||||||
|
|
||||||
locate-path@5.0.0:
|
locate-path@5.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -11786,10 +11874,10 @@ snapshots:
|
|||||||
|
|
||||||
matrix-events-sdk@0.0.1: {}
|
matrix-events-sdk@0.0.1: {}
|
||||||
|
|
||||||
matrix-js-sdk@https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/4b33892d48017b3733a00a48cf5d30182be4a6fb:
|
matrix-js-sdk@https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/bec985b783c666de24d6db92a4307a10416742d7:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.29.2
|
'@babel/runtime': 7.29.2
|
||||||
'@matrix-org/matrix-sdk-crypto-wasm': 18.1.0
|
'@matrix-org/matrix-sdk-crypto-wasm': 18.2.0
|
||||||
another-json: 0.2.0
|
another-json: 0.2.0
|
||||||
bs58: 6.0.0
|
bs58: 6.0.0
|
||||||
content-type: 1.0.5
|
content-type: 1.0.5
|
||||||
@@ -11801,7 +11889,6 @@ snapshots:
|
|||||||
p-retry: 8.0.0
|
p-retry: 8.0.0
|
||||||
sdp-transform: 3.0.0
|
sdp-transform: 3.0.0
|
||||||
unhomoglyph: 1.0.6
|
unhomoglyph: 1.0.6
|
||||||
uuid: 13.0.0
|
|
||||||
|
|
||||||
matrix-widget-api@1.17.0:
|
matrix-widget-api@1.17.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -13439,7 +13526,7 @@ snapshots:
|
|||||||
is-typed-array: 1.1.15
|
is-typed-array: 1.1.15
|
||||||
which-typed-array: 1.1.20
|
which-typed-array: 1.1.20
|
||||||
|
|
||||||
uuid@13.0.0: {}
|
uuid@14.0.0: {}
|
||||||
|
|
||||||
validate-npm-package-license@3.0.4:
|
validate-npm-package-license@3.0.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -13643,7 +13730,7 @@ snapshots:
|
|||||||
|
|
||||||
webpack-virtual-modules@0.6.2: {}
|
webpack-virtual-modules@0.6.2: {}
|
||||||
|
|
||||||
webrtc-adapter@9.0.4:
|
webrtc-adapter@9.0.5:
|
||||||
dependencies:
|
dependencies:
|
||||||
sdp: 3.2.2
|
sdp: 3.2.2
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ Please see LICENSE in the repository root for full details.
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { render } from "@testing-library/react";
|
import { render } from "@testing-library/react";
|
||||||
import { type FC, useRef } from "react";
|
import { type FC, useRef, useState } from "react";
|
||||||
import { expect, test, vi } from "vitest";
|
import { expect, test, vi } from "vitest";
|
||||||
import { Button } from "@vector-im/compound-web";
|
import { Button } from "@vector-im/compound-web";
|
||||||
import userEvent from "@testing-library/user-event";
|
import userEvent from "@testing-library/user-event";
|
||||||
@@ -17,6 +17,7 @@ import {
|
|||||||
ReactionSet,
|
ReactionSet,
|
||||||
ReactionsRowSize,
|
ReactionsRowSize,
|
||||||
} from "./reactions";
|
} from "./reactions";
|
||||||
|
import { type Controls } from "./controls";
|
||||||
|
|
||||||
// Test Explanation:
|
// Test Explanation:
|
||||||
// - The main objective is to test `useCallViewKeyboardShortcuts`.
|
// - The main objective is to test `useCallViewKeyboardShortcuts`.
|
||||||
@@ -27,6 +28,7 @@ interface TestComponentProps {
|
|||||||
onButtonClick?: () => void;
|
onButtonClick?: () => void;
|
||||||
sendReaction?: () => void;
|
sendReaction?: () => void;
|
||||||
toggleHandRaised?: () => void;
|
toggleHandRaised?: () => void;
|
||||||
|
initialModalOpen?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
const TestComponent: FC<TestComponentProps> = ({
|
const TestComponent: FC<TestComponentProps> = ({
|
||||||
@@ -34,7 +36,9 @@ const TestComponent: FC<TestComponentProps> = ({
|
|||||||
onButtonClick = (): void => {},
|
onButtonClick = (): void => {},
|
||||||
sendReaction = (reaction: ReactionOption): void => {},
|
sendReaction = (reaction: ReactionOption): void => {},
|
||||||
toggleHandRaised = (): void => {},
|
toggleHandRaised = (): void => {},
|
||||||
|
initialModalOpen = false,
|
||||||
}) => {
|
}) => {
|
||||||
|
const [modalOpen, setModalOpen] = useState(initialModalOpen);
|
||||||
const ref = useRef<HTMLDivElement | null>(null);
|
const ref = useRef<HTMLDivElement | null>(null);
|
||||||
useCallViewKeyboardShortcuts(
|
useCallViewKeyboardShortcuts(
|
||||||
ref,
|
ref,
|
||||||
@@ -47,6 +51,19 @@ const TestComponent: FC<TestComponentProps> = ({
|
|||||||
return (
|
return (
|
||||||
<div ref={ref}>
|
<div ref={ref}>
|
||||||
<Button onClick={onButtonClick}>TEST</Button>
|
<Button onClick={onButtonClick}>TEST</Button>
|
||||||
|
{modalOpen && (
|
||||||
|
<dialog
|
||||||
|
open
|
||||||
|
onKeyDown={(e) => {
|
||||||
|
if (e.key === "Escape") {
|
||||||
|
e.preventDefault();
|
||||||
|
setModalOpen(false);
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<button>InModalButton</button>
|
||||||
|
</dialog>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@@ -118,6 +135,27 @@ test("raised hand can be sent via keyboard presses", async () => {
|
|||||||
expect(toggleHandRaised).toHaveBeenCalledOnce();
|
expect(toggleHandRaised).toHaveBeenCalledOnce();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("raised hand cannot be sent via keyboard presses if modal open and focussed", async () => {
|
||||||
|
const user = userEvent.setup();
|
||||||
|
const toggleHandRaised = vi.fn();
|
||||||
|
const { getByRole } = render(
|
||||||
|
<TestComponent
|
||||||
|
toggleHandRaised={toggleHandRaised}
|
||||||
|
initialModalOpen={true}
|
||||||
|
/>,
|
||||||
|
);
|
||||||
|
getByRole("button", { name: "InModalButton" }).focus();
|
||||||
|
await user.keyboard("h");
|
||||||
|
|
||||||
|
expect(toggleHandRaised).not.toHaveBeenCalledOnce();
|
||||||
|
|
||||||
|
// once we press esc...
|
||||||
|
await user.keyboard("[Escape]");
|
||||||
|
// we can toggle the hand raise...
|
||||||
|
await user.keyboard("h");
|
||||||
|
expect(toggleHandRaised).toHaveBeenCalledOnce();
|
||||||
|
});
|
||||||
|
|
||||||
test("unmuting happens in place of the default action", async () => {
|
test("unmuting happens in place of the default action", async () => {
|
||||||
const user = userEvent.setup();
|
const user = userEvent.setup();
|
||||||
const defaultPrevented = vi.fn();
|
const defaultPrevented = vi.fn();
|
||||||
@@ -138,3 +176,35 @@ test("unmuting happens in place of the default action", async () => {
|
|||||||
await user.keyboard("[Space]");
|
await user.keyboard("[Space]");
|
||||||
expect(defaultPrevented).toBeCalledWith(true);
|
expect(defaultPrevented).toBeCalledWith(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("escape button triggers the controls back action", async () => {
|
||||||
|
const user = userEvent.setup();
|
||||||
|
|
||||||
|
window.controls = { onBackButtonPressed: vi.fn() } as unknown as Controls;
|
||||||
|
// In the real application, we mostly just want the spacebar shortcut to avoid
|
||||||
|
// scrolling the page. But to test that here in JSDOM, we need some kind of
|
||||||
|
// container element that can be interactive and receive focus / keydown
|
||||||
|
// events. <video> is kind of a weird choice, but it'll do the job.
|
||||||
|
render(<TestComponent setAudioEnabled={() => {}} />);
|
||||||
|
|
||||||
|
await user.keyboard("[Escape]");
|
||||||
|
expect(window.controls.onBackButtonPressed).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
test("escape button does not trigger back if sth else is focused", async () => {
|
||||||
|
const user = userEvent.setup();
|
||||||
|
|
||||||
|
window.controls = { onBackButtonPressed: vi.fn() } as unknown as Controls;
|
||||||
|
|
||||||
|
const { getByRole } = render(<TestComponent initialModalOpen={true} />);
|
||||||
|
getByRole("button", { name: "InModalButton" }).focus();
|
||||||
|
|
||||||
|
// First Escape: the dialog's onKeyDown intercepts it and closes the modal.
|
||||||
|
await user.keyboard("[Escape]");
|
||||||
|
expect(window.controls.onBackButtonPressed).not.toHaveBeenCalled();
|
||||||
|
|
||||||
|
// Second Escape: modal is gone, focus has fallen back to document.body,
|
||||||
|
// which *does* contain the ref div, so the hook fires and back IS triggered.
|
||||||
|
await user.keyboard("[Escape]");
|
||||||
|
expect(window.controls.onBackButtonPressed).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|||||||
@@ -68,6 +68,8 @@ export function useCallViewKeyboardShortcuts(
|
|||||||
} else if (KeyToReactionMap[event.key]) {
|
} else if (KeyToReactionMap[event.key]) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
sendReaction(KeyToReactionMap[event.key]);
|
sendReaction(KeyToReactionMap[event.key]);
|
||||||
|
} else if (event.key === "Escape") {
|
||||||
|
window.controls.onBackButtonPressed?.();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[
|
[
|
||||||
|
|||||||
Reference in New Issue
Block a user