@100mslive/roomkit-react 0.3.14-alpha.1 → 0.3.14-alpha.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/Diagnostics/BrowserTest.d.ts +81 -0
  2. package/dist/Diagnostics/components.d.ts +2 -0
  3. package/dist/{HLSView-VSU7IPCJ.js → HLSView-72D4HXOZ.js} +2 -2
  4. package/dist/{HLSView-772PCEEZ.css → HLSView-X4TA7M5M.css} +3 -3
  5. package/dist/{HLSView-772PCEEZ.css.map → HLSView-X4TA7M5M.css.map} +1 -1
  6. package/dist/Prebuilt/App.d.ts +1 -2
  7. package/dist/Prebuilt/components/Notifications/PermissionErrorModal.d.ts +5 -1
  8. package/dist/{chunk-VE34B77C.js → chunk-OZVDS5TG.js} +1254 -1039
  9. package/dist/chunk-OZVDS5TG.js.map +7 -0
  10. package/dist/index.cjs.css +2 -2
  11. package/dist/index.cjs.css.map +1 -1
  12. package/dist/index.cjs.js +1302 -1080
  13. package/dist/index.cjs.js.map +4 -4
  14. package/dist/index.css +2 -2
  15. package/dist/index.css.map +1 -1
  16. package/dist/index.js +1 -1
  17. package/dist/meta.cjs.json +101 -32
  18. package/dist/meta.esbuild.json +113 -44
  19. package/package.json +7 -7
  20. package/src/Diagnostics/AudioTest.tsx +80 -57
  21. package/src/Diagnostics/BrowserTest.tsx +139 -0
  22. package/src/Diagnostics/ConnectivityTest.tsx +10 -6
  23. package/src/Diagnostics/Diagnostics.tsx +38 -16
  24. package/src/Diagnostics/VideoTest.tsx +13 -5
  25. package/src/Diagnostics/components.tsx +13 -1
  26. package/src/Prebuilt/App.tsx +1 -9
  27. package/src/Prebuilt/components/Chat/ChatFooter.tsx +4 -1
  28. package/src/Prebuilt/components/Header/common.jsx +3 -0
  29. package/src/Prebuilt/components/Notifications/Notifications.tsx +2 -2
  30. package/src/Prebuilt/components/Notifications/PermissionErrorModal.tsx +13 -11
  31. package/dist/chunk-VE34B77C.js.map +0 -7
  32. /package/dist/{HLSView-VSU7IPCJ.js.map → HLSView-72D4HXOZ.js.map} +0 -0
@@ -4951,7 +4951,7 @@
4951
4951
  "format": "cjs"
4952
4952
  },
4953
4953
  "../hms-video-store/dist/index.js": {
4954
- "bytes": 354737,
4954
+ "bytes": 356181,
4955
4955
  "imports": [
4956
4956
  {
4957
4957
  "path": "../../node_modules/reselect/es/index.js",
@@ -8548,7 +8548,7 @@
8548
8548
  "format": "esm"
8549
8549
  },
8550
8550
  "src/Prebuilt/components/Chat/ChatFooter.tsx": {
8551
- "bytes": 11514,
8551
+ "bytes": 11557,
8552
8552
  "imports": [
8553
8553
  {
8554
8554
  "path": "react",
@@ -10974,7 +10974,7 @@
10974
10974
  ],
10975
10975
  "format": "esm"
10976
10976
  },
10977
- "../../../../../../../tmp/tmp-2768-rJR1JlrZ8Kgf/1902b197fe32/tldraw.css": {
10977
+ "../../../../../../../tmp/tmp-2852-lMQaN4skKTxh/1904eee201f2/tldraw.css": {
10978
10978
  "bytes": 80111,
10979
10979
  "imports": [
10980
10980
  {
@@ -11024,7 +11024,7 @@
11024
11024
  }
11025
11025
  ]
11026
11026
  },
11027
- "../../../../../../../tmp/tmp-2768-rJR1JlrZ8Kgf/1902b197f7e0/index.css": {
11027
+ "../../../../../../../tmp/tmp-2852-lMQaN4skKTxh/1904eee1fb00/index.css": {
11028
11028
  "bytes": 597,
11029
11029
  "imports": [
11030
11030
  {
@@ -11033,7 +11033,7 @@
11033
11033
  "external": true
11034
11034
  },
11035
11035
  {
11036
- "path": "../../../../../../../tmp/tmp-2768-rJR1JlrZ8Kgf/1902b197fe32/tldraw.css",
11036
+ "path": "../../../../../../../tmp/tmp-2852-lMQaN4skKTxh/1904eee201f2/tldraw.css",
11037
11037
  "kind": "import-rule",
11038
11038
  "original": "@tldraw/tldraw/tldraw.css"
11039
11039
  }
@@ -11108,7 +11108,7 @@
11108
11108
  "original": "../../common/constants"
11109
11109
  },
11110
11110
  {
11111
- "path": "../../../../../../../tmp/tmp-2768-rJR1JlrZ8Kgf/1902b197f7e0/index.css",
11111
+ "path": "../../../../../../../tmp/tmp-2852-lMQaN4skKTxh/1904eee1fb00/index.css",
11112
11112
  "kind": "import-statement",
11113
11113
  "original": "@100mslive/hms-whiteboard/index.css"
11114
11114
  },
@@ -12312,7 +12312,7 @@
12312
12312
  "format": "esm"
12313
12313
  },
12314
12314
  "src/Prebuilt/components/Header/common.jsx": {
12315
- "bytes": 5673,
12315
+ "bytes": 5819,
12316
12316
  "imports": [
12317
12317
  {
12318
12318
  "path": "react",
@@ -13195,7 +13195,7 @@
13195
13195
  "imports": []
13196
13196
  },
13197
13197
  "src/Prebuilt/components/Notifications/PermissionErrorModal.tsx": {
13198
- "bytes": 4888,
13198
+ "bytes": 4913,
13199
13199
  "imports": [
13200
13200
  {
13201
13201
  "path": "react",
@@ -13406,7 +13406,7 @@
13406
13406
  "format": "esm"
13407
13407
  },
13408
13408
  "src/Prebuilt/components/Notifications/Notifications.tsx": {
13409
- "bytes": 8034,
13409
+ "bytes": 8058,
13410
13410
  "imports": [
13411
13411
  {
13412
13412
  "path": "react",
@@ -13891,7 +13891,7 @@
13891
13891
  "format": "esm"
13892
13892
  },
13893
13893
  "src/Prebuilt/App.tsx": {
13894
- "bytes": 10909,
13894
+ "bytes": 10754,
13895
13895
  "imports": [
13896
13896
  {
13897
13897
  "path": "react",
@@ -14147,7 +14147,7 @@
14147
14147
  "format": "esm"
14148
14148
  },
14149
14149
  "src/Diagnostics/components.tsx": {
14150
- "bytes": 2320,
14150
+ "bytes": 2686,
14151
14151
  "imports": [
14152
14152
  {
14153
14153
  "path": "react",
@@ -14409,7 +14409,7 @@
14409
14409
  "format": "esm"
14410
14410
  },
14411
14411
  "src/Diagnostics/AudioTest.tsx": {
14412
- "bytes": 4763,
14412
+ "bytes": 5792,
14413
14413
  "imports": [
14414
14414
  {
14415
14415
  "path": "react",
@@ -14426,6 +14426,11 @@
14426
14426
  "kind": "import-statement",
14427
14427
  "external": true
14428
14428
  },
14429
+ {
14430
+ "path": "src/Prebuilt/components/Notifications/PermissionErrorModal.tsx",
14431
+ "kind": "import-statement",
14432
+ "original": "../Prebuilt/components/Notifications/PermissionErrorModal"
14433
+ },
14429
14434
  {
14430
14435
  "path": "src/Diagnostics/components.tsx",
14431
14436
  "kind": "import-statement",
@@ -14479,8 +14484,49 @@
14479
14484
  ],
14480
14485
  "format": "esm"
14481
14486
  },
14487
+ "src/Diagnostics/BrowserTest.tsx": {
14488
+ "bytes": 4184,
14489
+ "imports": [
14490
+ {
14491
+ "path": "react",
14492
+ "kind": "import-statement",
14493
+ "external": true
14494
+ },
14495
+ {
14496
+ "path": "@100mslive/react-sdk",
14497
+ "kind": "import-statement",
14498
+ "external": true
14499
+ },
14500
+ {
14501
+ "path": "src/Diagnostics/components.tsx",
14502
+ "kind": "import-statement",
14503
+ "original": "./components"
14504
+ },
14505
+ {
14506
+ "path": "src/Layout/index.tsx",
14507
+ "kind": "import-statement",
14508
+ "original": "../Layout"
14509
+ },
14510
+ {
14511
+ "path": "src/Text/index.tsx",
14512
+ "kind": "import-statement",
14513
+ "original": "../Text"
14514
+ },
14515
+ {
14516
+ "path": "src/Diagnostics/hms.ts",
14517
+ "kind": "import-statement",
14518
+ "original": "./hms"
14519
+ },
14520
+ {
14521
+ "path": "<define:process.env>",
14522
+ "kind": "import-statement",
14523
+ "external": true
14524
+ }
14525
+ ],
14526
+ "format": "esm"
14527
+ },
14482
14528
  "src/Diagnostics/ConnectivityTest.tsx": {
14483
- "bytes": 11095,
14529
+ "bytes": 11343,
14484
14530
  "imports": [
14485
14531
  {
14486
14532
  "path": "react",
@@ -14541,7 +14587,7 @@
14541
14587
  "format": "esm"
14542
14588
  },
14543
14589
  "src/Diagnostics/VideoTest.tsx": {
14544
- "bytes": 2316,
14590
+ "bytes": 2521,
14545
14591
  "imports": [
14546
14592
  {
14547
14593
  "path": "react",
@@ -14558,6 +14604,11 @@
14558
14604
  "kind": "import-statement",
14559
14605
  "external": true
14560
14606
  },
14607
+ {
14608
+ "path": "src/Prebuilt/components/Notifications/PermissionErrorModal.tsx",
14609
+ "kind": "import-statement",
14610
+ "original": "../Prebuilt/components/Notifications/PermissionErrorModal"
14611
+ },
14561
14612
  {
14562
14613
  "path": "src/Diagnostics/components.tsx",
14563
14614
  "kind": "import-statement",
@@ -14607,7 +14658,7 @@
14607
14658
  "format": "esm"
14608
14659
  },
14609
14660
  "src/Diagnostics/Diagnostics.tsx": {
14610
- "bytes": 3662,
14661
+ "bytes": 4666,
14611
14662
  "imports": [
14612
14663
  {
14613
14664
  "path": "react",
@@ -14649,6 +14700,11 @@
14649
14700
  "kind": "import-statement",
14650
14701
  "original": "./AudioTest"
14651
14702
  },
14703
+ {
14704
+ "path": "src/Diagnostics/BrowserTest.tsx",
14705
+ "kind": "import-statement",
14706
+ "original": "./BrowserTest"
14707
+ },
14652
14708
  {
14653
14709
  "path": "src/Diagnostics/ConnectivityTest.tsx",
14654
14710
  "kind": "import-statement",
@@ -14915,7 +14971,7 @@
14915
14971
  "dist/index.js": {
14916
14972
  "imports": [
14917
14973
  {
14918
- "path": "dist/chunk-VE34B77C.js",
14974
+ "path": "dist/chunk-OZVDS5TG.js",
14919
14975
  "kind": "import-statement"
14920
14976
  }
14921
14977
  ],
@@ -14991,16 +15047,16 @@
14991
15047
  "inputs": {},
14992
15048
  "bytes": 1882
14993
15049
  },
14994
- "dist/HLSView-VSU7IPCJ.js.map": {
15050
+ "dist/HLSView-72D4HXOZ.js.map": {
14995
15051
  "imports": [],
14996
15052
  "exports": [],
14997
15053
  "inputs": {},
14998
15054
  "bytes": 100275
14999
15055
  },
15000
- "dist/HLSView-VSU7IPCJ.js": {
15056
+ "dist/HLSView-72D4HXOZ.js": {
15001
15057
  "imports": [
15002
15058
  {
15003
- "path": "dist/chunk-VE34B77C.js",
15059
+ "path": "dist/chunk-OZVDS5TG.js",
15004
15060
  "kind": "import-statement"
15005
15061
  },
15006
15062
  {
@@ -15178,7 +15234,7 @@
15178
15234
  "default"
15179
15235
  ],
15180
15236
  "entryPoint": "src/Prebuilt/layouts/HLSView.jsx",
15181
- "cssBundle": "dist/HLSView-772PCEEZ.css",
15237
+ "cssBundle": "dist/HLSView-X4TA7M5M.css",
15182
15238
  "inputs": {
15183
15239
  "src/Prebuilt/layouts/HLSView.jsx": {
15184
15240
  "bytesInOutput": 27671
@@ -15237,13 +15293,13 @@
15237
15293
  },
15238
15294
  "bytes": 61702
15239
15295
  },
15240
- "dist/chunk-VE34B77C.js.map": {
15296
+ "dist/chunk-OZVDS5TG.js.map": {
15241
15297
  "imports": [],
15242
15298
  "exports": [],
15243
15299
  "inputs": {},
15244
- "bytes": 3878846
15300
+ "bytes": 3899205
15245
15301
  },
15246
- "dist/chunk-VE34B77C.js": {
15302
+ "dist/chunk-OZVDS5TG.js": {
15247
15303
  "imports": [
15248
15304
  {
15249
15305
  "path": "react",
@@ -17726,7 +17782,7 @@
17726
17782
  "external": true
17727
17783
  },
17728
17784
  {
17729
- "path": "dist/HLSView-VSU7IPCJ.js",
17785
+ "path": "dist/HLSView-72D4HXOZ.js",
17730
17786
  "kind": "dynamic-import"
17731
17787
  },
17732
17788
  {
@@ -18184,6 +18240,16 @@
18184
18240
  "kind": "import-statement",
18185
18241
  "external": true
18186
18242
  },
18243
+ {
18244
+ "path": "react",
18245
+ "kind": "import-statement",
18246
+ "external": true
18247
+ },
18248
+ {
18249
+ "path": "@100mslive/react-sdk",
18250
+ "kind": "import-statement",
18251
+ "external": true
18252
+ },
18187
18253
  {
18188
18254
  "path": "@100mslive/react-icons",
18189
18255
  "kind": "import-statement",
@@ -18300,7 +18366,7 @@
18300
18366
  ],
18301
18367
  "inputs": {
18302
18368
  "<define:process.env>": {
18303
- "bytesInOutput": 17868
18369
+ "bytesInOutput": 17873
18304
18370
  },
18305
18371
  "../../node_modules/lodash/lodash.js": {
18306
18372
  "bytesInOutput": 224414
@@ -18585,7 +18651,7 @@
18585
18651
  "bytesInOutput": 887
18586
18652
  },
18587
18653
  "src/Prebuilt/App.tsx": {
18588
- "bytesInOutput": 8043
18654
+ "bytesInOutput": 7946
18589
18655
  },
18590
18656
  "src/Prebuilt/components/AppData/AppData.tsx": {
18591
18657
  "bytesInOutput": 6013
@@ -18783,7 +18849,7 @@
18783
18849
  "bytesInOutput": 9484
18784
18850
  },
18785
18851
  "../hms-video-store/dist/index.js": {
18786
- "bytesInOutput": 457165
18852
+ "bytesInOutput": 459039
18787
18853
  },
18788
18854
  "../../node_modules/reselect/es/index.js": {
18789
18855
  "bytesInOutput": 2550
@@ -19050,7 +19116,7 @@
19050
19116
  "bytesInOutput": 710
19051
19117
  },
19052
19118
  "src/Prebuilt/components/Chat/ChatFooter.tsx": {
19053
- "bytesInOutput": 10862
19119
+ "bytesInOutput": 10904
19054
19120
  },
19055
19121
  "src/Prebuilt/components/Chat/ChatSelectorContainer.tsx": {
19056
19122
  "bytesInOutput": 5318
@@ -19181,7 +19247,7 @@
19181
19247
  "src/Prebuilt/components/VideoLayouts/WhiteboardLayout.tsx": {
19182
19248
  "bytesInOutput": 2797
19183
19249
  },
19184
- "../../../../../../../tmp/tmp-2768-rJR1JlrZ8Kgf/1902b197f7e0/index.css": {
19250
+ "../../../../../../../tmp/tmp-2852-lMQaN4skKTxh/1904eee1fb00/index.css": {
19185
19251
  "bytesInOutput": 0
19186
19252
  },
19187
19253
  "src/Prebuilt/common/PeersSorter.ts": {
@@ -19209,7 +19275,7 @@
19209
19275
  "bytesInOutput": 1607
19210
19276
  },
19211
19277
  "src/Prebuilt/components/Header/common.jsx": {
19212
- "bytesInOutput": 6077
19278
+ "bytesInOutput": 6265
19213
19279
  },
19214
19280
  "src/Prebuilt/components/PreviousRoleInMetadata.tsx": {
19215
19281
  "bytesInOutput": 754
@@ -19242,7 +19308,7 @@
19242
19308
  "bytesInOutput": 27
19243
19309
  },
19244
19310
  "src/Prebuilt/components/Notifications/Notifications.tsx": {
19245
- "bytesInOutput": 8116
19311
+ "bytesInOutput": 8128
19246
19312
  },
19247
19313
  "src/Prebuilt/components/Notifications/AutoplayBlockedModal.tsx": {
19248
19314
  "bytesInOutput": 1053
@@ -19266,7 +19332,7 @@
19266
19332
  "bytesInOutput": 1428
19267
19333
  },
19268
19334
  "src/Prebuilt/components/Notifications/PermissionErrorModal.tsx": {
19269
- "bytesInOutput": 4537
19335
+ "bytesInOutput": 4527
19270
19336
  },
19271
19337
  "src/Prebuilt/images/android-perm-1.png": {
19272
19338
  "bytesInOutput": 10443
@@ -19326,28 +19392,31 @@
19326
19392
  "bytesInOutput": 27
19327
19393
  },
19328
19394
  "src/Diagnostics/Diagnostics.tsx": {
19329
- "bytesInOutput": 3946
19395
+ "bytesInOutput": 4900
19330
19396
  },
19331
19397
  "src/Diagnostics/components.tsx": {
19332
- "bytesInOutput": 2112
19398
+ "bytesInOutput": 2375
19333
19399
  },
19334
19400
  "src/Diagnostics/hms.ts": {
19335
19401
  "bytesInOutput": 237
19336
19402
  },
19337
19403
  "src/Diagnostics/AudioTest.tsx": {
19338
- "bytesInOutput": 4847
19404
+ "bytesInOutput": 5835
19339
19405
  },
19340
19406
  "src/Diagnostics/DeviceSelector.jsx": {
19341
19407
  "bytesInOutput": 2155
19342
19408
  },
19409
+ "src/Diagnostics/BrowserTest.tsx": {
19410
+ "bytesInOutput": 4243
19411
+ },
19343
19412
  "src/Diagnostics/ConnectivityTest.tsx": {
19344
- "bytesInOutput": 12446
19413
+ "bytesInOutput": 12635
19345
19414
  },
19346
19415
  "src/Diagnostics/VideoTest.tsx": {
19347
- "bytesInOutput": 2265
19416
+ "bytesInOutput": 2376
19348
19417
  }
19349
19418
  },
19350
- "bytes": 1843012
19419
+ "bytes": 1851810
19351
19420
  },
19352
19421
  "dist/index.css.map": {
19353
19422
  "imports": [],
@@ -19409,22 +19478,22 @@
19409
19478
  }
19410
19479
  ],
19411
19480
  "inputs": {
19412
- "../../../../../../../tmp/tmp-2768-rJR1JlrZ8Kgf/1902b197fe32/tldraw.css": {
19481
+ "../../../../../../../tmp/tmp-2852-lMQaN4skKTxh/1904eee201f2/tldraw.css": {
19413
19482
  "bytesInOutput": 75223
19414
19483
  },
19415
- "../../../../../../../tmp/tmp-2768-rJR1JlrZ8Kgf/1902b197f7e0/index.css": {
19484
+ "../../../../../../../tmp/tmp-2852-lMQaN4skKTxh/1904eee1fb00/index.css": {
19416
19485
  "bytesInOutput": 401
19417
19486
  }
19418
19487
  },
19419
19488
  "bytes": 75901
19420
19489
  },
19421
- "dist/HLSView-772PCEEZ.css.map": {
19490
+ "dist/HLSView-X4TA7M5M.css.map": {
19422
19491
  "imports": [],
19423
19492
  "exports": [],
19424
19493
  "inputs": {},
19425
19494
  "bytes": 122402
19426
19495
  },
19427
- "dist/HLSView-772PCEEZ.css": {
19496
+ "dist/HLSView-X4TA7M5M.css": {
19428
19497
  "imports": [
19429
19498
  {
19430
19499
  "path": "https://fonts.googleapis.com/css2?family=Inter:wght@400;500&display=swap",
@@ -19478,10 +19547,10 @@
19478
19547
  }
19479
19548
  ],
19480
19549
  "inputs": {
19481
- "../../../../../../../tmp/tmp-2768-rJR1JlrZ8Kgf/1902b197fe32/tldraw.css": {
19550
+ "../../../../../../../tmp/tmp-2852-lMQaN4skKTxh/1904eee201f2/tldraw.css": {
19482
19551
  "bytesInOutput": 75223
19483
19552
  },
19484
- "../../../../../../../tmp/tmp-2768-rJR1JlrZ8Kgf/1902b197f7e0/index.css": {
19553
+ "../../../../../../../tmp/tmp-2852-lMQaN4skKTxh/1904eee1fb00/index.css": {
19485
19554
  "bytesInOutput": 401
19486
19555
  }
19487
19556
  },
package/package.json CHANGED
@@ -10,7 +10,7 @@
10
10
  "prebuilt",
11
11
  "roomkit"
12
12
  ],
13
- "version": "0.3.14-alpha.1",
13
+ "version": "0.3.14-alpha.11",
14
14
  "author": "100ms",
15
15
  "license": "MIT",
16
16
  "repository": {
@@ -74,12 +74,12 @@
74
74
  "react": ">=17.0.2 <19.0.0"
75
75
  },
76
76
  "dependencies": {
77
- "@100mslive/hls-player": "0.3.14-alpha.1",
77
+ "@100mslive/hls-player": "0.3.14-alpha.11",
78
78
  "@100mslive/hms-noise-cancellation": "0.0.1",
79
- "@100mslive/hms-virtual-background": "1.13.14-alpha.1",
80
- "@100mslive/hms-whiteboard": "0.0.4-alpha.1",
81
- "@100mslive/react-icons": "0.10.14-alpha.1",
82
- "@100mslive/react-sdk": "0.10.14-alpha.1",
79
+ "@100mslive/hms-virtual-background": "1.13.14-alpha.11",
80
+ "@100mslive/hms-whiteboard": "0.0.4-alpha.11",
81
+ "@100mslive/react-icons": "0.10.14-alpha.11",
82
+ "@100mslive/react-sdk": "0.10.14-alpha.11",
83
83
  "@100mslive/types-prebuilt": "0.12.9",
84
84
  "@emoji-mart/data": "^1.0.6",
85
85
  "@emoji-mart/react": "^1.0.1",
@@ -115,5 +115,5 @@
115
115
  "uuid": "^8.3.2",
116
116
  "worker-timers": "^7.0.40"
117
117
  },
118
- "gitHead": "92efc31642f74553fa513d53112e9e680c88bc8b"
118
+ "gitHead": "f1a483cba1ff7bfacde92aaf3a37a04cb665c7ad"
119
119
  }
@@ -1,6 +1,7 @@
1
1
  /* eslint-disable react/prop-types */
2
2
  import React, { useEffect, useState } from 'react';
3
3
  import {
4
+ HMSException,
4
5
  selectDevices,
5
6
  selectLocalAudioTrackID,
6
7
  selectLocalMediaSettings,
@@ -8,7 +9,8 @@ import {
8
9
  useHMSActions,
9
10
  useHMSStore,
10
11
  } from '@100mslive/react-sdk';
11
- import { MicOnIcon, SpeakerIcon } from '@100mslive/react-icons';
12
+ import { MicOnIcon, SpeakerIcon, StopIcon } from '@100mslive/react-icons';
13
+ import { PermissionErrorModal } from '../Prebuilt/components/Notifications/PermissionErrorModal';
12
14
  import { TestContainer, TestFooter } from './components';
13
15
  import { Button } from '../Button';
14
16
  import { Box, Flex } from '../Layout';
@@ -21,60 +23,94 @@ import { useAudioOutputTest } from '../Prebuilt/components/hooks/useAudioOutputT
21
23
  import { TEST_AUDIO_URL } from '../Prebuilt/common/constants';
22
24
 
23
25
  const SelectContainer = ({ children }: { children: React.ReactNode }) => (
24
- <Box css={{ w: '50%', '@lg': { w: '100%' } }}>{children}</Box>
26
+ <Box css={{ w: 'calc(50% - 0.75rem)', '@lg': { w: '100%' } }}>{children}</Box>
25
27
  );
26
28
 
27
- const MicTest = () => {
29
+ const MicTest = ({ setError }: { setError: React.Dispatch<React.SetStateAction<Error | undefined>> }) => {
28
30
  const devices = useHMSStore(selectDevices);
29
31
  const [isRecording, setIsRecording] = useState(false);
30
- const { audioInputDeviceId } = useHMSStore(selectLocalMediaSettings);
31
- const [selectedMic, setSelectedMic] = useState(audioInputDeviceId || 'default');
32
+ const [selectedMic, setSelectedMic] = useState(devices.audioInput[0]?.deviceId || 'default');
32
33
  const trackID = useHMSStore(selectLocalAudioTrackID);
33
34
  const audioLevel = useHMSStore(selectTrackAudioByID(trackID));
35
+ const { audioOutputDeviceId } = useHMSStore(selectLocalMediaSettings);
36
+ const { playing, setPlaying, audioRef } = useAudioOutputTest({
37
+ deviceId: audioOutputDeviceId || devices.audioOutput[0]?.deviceId,
38
+ });
34
39
 
35
40
  return (
36
41
  <SelectContainer>
37
42
  <DeviceSelector
38
- title="Microphone(Input)"
43
+ title="Microphone (Input)"
39
44
  devices={devices.audioInput}
40
45
  selection={selectedMic}
41
46
  icon={<MicOnIcon />}
42
47
  onChange={(deviceId: string) => {
43
48
  setSelectedMic(deviceId);
44
49
  hmsDiagnostics.stopMicCheck();
45
- setIsRecording(false);
46
50
  }}
47
51
  />
48
52
  <Flex css={{ gap: '$6', alignItems: 'center' }}>
49
53
  <Button
50
- onClick={() =>
51
- hmsDiagnostics
52
- .startMicCheck(selectedMic, () => {
53
- setIsRecording(false);
54
- })
55
- .then(() => {
56
- setIsRecording(true);
57
- })
58
- }
59
- disabled={isRecording}
54
+ variant="standard"
55
+ icon
56
+ onClick={() => {
57
+ isRecording
58
+ ? hmsDiagnostics.stopMicCheck()
59
+ : hmsDiagnostics
60
+ .startMicCheck({
61
+ inputDevice: selectedMic,
62
+ onError: (err: Error) => {
63
+ setError(err);
64
+ },
65
+ onStop: () => {
66
+ setIsRecording(false);
67
+ },
68
+ })
69
+ .then(() => {
70
+ setIsRecording(true);
71
+ });
72
+ }}
73
+ disabled={devices.audioInput.length === 0 || playing}
74
+ >
75
+ {isRecording ? <StopIcon /> : <MicOnIcon />}
76
+ {isRecording ? 'Stop Recording' : 'Record'}
77
+ </Button>
78
+
79
+ <Button
80
+ icon
81
+ variant="standard"
82
+ outlined={hmsDiagnostics.getRecordedAudio() === TEST_AUDIO_URL}
83
+ onClick={() => {
84
+ if (audioRef.current) {
85
+ audioRef.current.src = hmsDiagnostics.getRecordedAudio() || '';
86
+ audioRef.current.play();
87
+ }
88
+ }}
89
+ disabled={playing || hmsDiagnostics.getRecordedAudio() === TEST_AUDIO_URL}
60
90
  >
61
- {isRecording ? 'Recording...' : 'Record'}
91
+ <SpeakerIcon />
92
+ {playing ? 'Playing...' : 'Playback'}
62
93
  </Button>
63
- {isRecording && (
64
- <>
65
- <Text>
66
- <MicOnIcon />
67
- </Text>
68
- <Progress.Root value={audioLevel} css={{ h: '$2' }}>
69
- <Progress.Content
70
- style={{
71
- transform: `translateX(-${100 - audioLevel}%)`,
72
- transition: 'transform 0.3s',
73
- }}
74
- />
75
- </Progress.Root>
76
- </>
77
- )}
94
+ <audio
95
+ ref={audioRef}
96
+ onEnded={() => setPlaying(false)}
97
+ onPlay={() => setPlaying(true)}
98
+ style={{ display: 'none' }}
99
+ />
100
+ </Flex>
101
+
102
+ <Flex align="center" css={{ mt: '$4', maxWidth: '10rem', opacity: isRecording ? '1' : '0', gap: '$4' }}>
103
+ <Text>
104
+ <MicOnIcon />
105
+ </Text>
106
+ <Progress.Root value={audioLevel} css={{ h: '$2' }}>
107
+ <Progress.Content
108
+ style={{
109
+ transform: `translateX(-${100 - audioLevel}%)`,
110
+ transition: 'transform 0.3s',
111
+ }}
112
+ />
113
+ </Progress.Root>
78
114
  </Flex>
79
115
  </SelectContainer>
80
116
  );
@@ -84,37 +120,22 @@ const SpeakerTest = () => {
84
120
  const actions = useHMSActions();
85
121
  const devices = useHMSStore(selectDevices);
86
122
  const { audioOutputDeviceId } = useHMSStore(selectLocalMediaSettings);
87
- const { playing, setPlaying, audioRef } = useAudioOutputTest({ deviceId: audioOutputDeviceId || 'default' });
123
+
124
+ if (devices.audioOutput.length === 0) {
125
+ return <></>;
126
+ }
88
127
 
89
128
  return (
90
129
  <SelectContainer>
91
130
  <DeviceSelector
92
- title="Speaker(output)"
131
+ title="Speaker (Output)"
93
132
  devices={devices.audioOutput}
94
- selection={audioOutputDeviceId || 'default'}
133
+ selection={audioOutputDeviceId || devices.audioOutput[0]?.deviceId}
95
134
  icon={<SpeakerIcon />}
96
135
  onChange={(deviceId: string) => {
97
136
  actions.setAudioOutputDevice(deviceId);
98
137
  }}
99
138
  />
100
- <Button
101
- onClick={() => {
102
- if (audioRef.current) {
103
- audioRef.current.src = hmsDiagnostics.getRecordedAudio() || TEST_AUDIO_URL;
104
- audioRef.current.play();
105
- }
106
- }}
107
- disabled={playing}
108
- >
109
- <SpeakerIcon />
110
- <Text css={{ ml: '$4' }}>{playing ? 'Playing' : 'Playback'}</Text>
111
- </Button>
112
- <audio
113
- ref={audioRef}
114
- onEnded={() => setPlaying(false)}
115
- onPlay={() => setPlaying(true)}
116
- style={{ display: 'none' }}
117
- />
118
139
  </SelectContainer>
119
140
  );
120
141
  };
@@ -129,8 +150,9 @@ export const AudioTest = () => {
129
150
  <>
130
151
  <TestContainer>
131
152
  <Text variant="body2" css={{ c: '$on_primary_medium' }}>
132
- Record an audio clip and play it back to check that your microphone and speaker are working. If they aren't,
133
- make sure your volume is turned up, try a different speaker or microphone, or check your bluetooth settings.
153
+ Record a 10 second audio clip and play it back to check that your microphone and speaker are working. If they
154
+ aren't, make sure your volume is turned up, try a different speaker or microphone, or check your bluetooth
155
+ settings.
134
156
  </Text>
135
157
 
136
158
  <Flex
@@ -143,11 +165,12 @@ export const AudioTest = () => {
143
165
  },
144
166
  }}
145
167
  >
146
- {!error && <MicTest />}
168
+ <MicTest setError={setError} />
147
169
  <SpeakerTest />
148
170
  </Flex>
149
171
  </TestContainer>
150
172
  <TestFooter error={error} ctaText="Does your audio sound good?" />
173
+ <PermissionErrorModal error={error as HMSException} />
151
174
  </>
152
175
  );
153
176
  };