@@ -29,34 +29,52 @@ export async function open(options) {
2929 if ( height ) {
3030 constrains . video . height = { ideal : height } ;
3131 }
32- const stream = await navigator . mediaDevices . getUserMedia ( constrains ) ;
33- const media = registerBootstrapBlazorModule ( "MediaDevices" ) ;
34- media . stream = stream ;
3532
36- if ( videoSelector ) {
37- const video = document . querySelector ( videoSelector ) ;
38- if ( video ) {
39- video . srcObject = stream ;
33+ let ret = false ;
34+ try {
35+ const stream = await navigator . mediaDevices . getUserMedia ( constrains ) ;
36+ const media = registerBootstrapBlazorModule ( "MediaDevices" ) ;
37+ media . stream = stream ;
38+
39+ if ( videoSelector ) {
40+ const video = document . querySelector ( videoSelector ) ;
41+ if ( video ) {
42+ video . srcObject = stream ;
43+ }
4044 }
45+ ret = true ;
46+ }
47+ catch ( err ) {
48+ console . error ( "Error accessing media devices." , err ) ;
4149 }
50+ return ret ;
4251}
4352
4453export async function close ( videoSelector ) {
45- if ( videoSelector ) {
46- const video = document . querySelector ( videoSelector ) ;
47- if ( video ) {
48- video . pause ( ) ;
49- const stream = video . srcObject ;
54+ let ret = false ;
55+
56+ try {
57+ if ( videoSelector ) {
58+ const video = document . querySelector ( videoSelector ) ;
59+ if ( video ) {
60+ video . pause ( ) ;
61+ const stream = video . srcObject ;
62+ closeStream ( stream ) ;
63+ video . srcObject = null ;
64+ }
65+ }
66+ const media = registerBootstrapBlazorModule ( "MediaDevices" ) ;
67+ const { stream } = media ;
68+ if ( stream && stream . active ) {
5069 closeStream ( stream ) ;
51- video . srcObject = null ;
5270 }
71+ media . stream = null ;
72+ ret = true ;
5373 }
54- const media = registerBootstrapBlazorModule ( "MediaDevices" ) ;
55- const { stream } = media ;
56- if ( stream && stream . active ) {
57- closeStream ( stream ) ;
74+ catch ( err ) {
75+ console . error ( "Error closing media devices." , err ) ;
5876 }
59- media . stream = null ;
77+ return ret ;
6078}
6179
6280export async function getPreviewUrl ( ) {
@@ -75,31 +93,6 @@ export async function getPreviewUrl() {
7593 return url ;
7694}
7795
78- export async function flip ( ) {
79- const media = registerBootstrapBlazorModule ( "MediaDevices" ) ;
80- const { stream } = media ;
81- if ( stream && stream . active ) {
82- const tracks = stream . getVideoTracks ( ) ;
83- if ( tracks ) {
84- const track = tracks [ 0 ] ;
85- const constraints = track . getSettings ( ) ;
86- const { facingMode } = constraints ;
87- if ( facingMode === void 0 ) {
88- console . log ( 'facingMode is not supported' ) ;
89- return ;
90- }
91-
92- if ( facingMode === "user" || facingMode . exact === "user" || facingMode . ideal === "user" ) {
93- constraints . facingMode = { ideal : "environment" }
94- }
95- else {
96- constraints . facingMode = { ideal : "user" }
97- }
98- await track . applyConstraints ( constraints ) ;
99- }
100- }
101- }
102-
10396const closeStream = stream => {
10497 if ( stream ) {
10598 const tracks = stream . getTracks ( ) ;
0 commit comments