Skip to:
Content

BuddyPress.org

Ticket #7676: 7676.ray.patch

File 7676.ray.patch, 3.0 KB (added by r-a-y, 7 years ago)
  • src/bp-core/js/webcam.js

     
    8383
    8484                        stream.onended = bp.WebCam.noStream();
    8585
    86                         if ( video.mozSrcObject !== undefined ) {
    87                                 video.mozSrcObject = stream;
    88                                 video.play();
    89                         } else if ( navigator.mozGetUserMedia ) {
    90                                 video.src = stream;
    91                                 video.play();
    92                         } else if ( video.srcObject !== undefined ) {
     86                        // Older browsers may not have srcObject
     87                        if ( 'srcObject' in video ) {
    9388                                video.srcObject = stream;
    94                         } else if ( window.URL ) {
    95                                 video.src = window.URL.createObjectURL( stream );
    9689                        } else {
    97                                 video.src = stream;
     90                                // Avoid using this in new browsers, as it is going away.
     91                                video.src = window.URL.createObjectURL( stream );
    9892                        }
    9993
     94                        video.onloadedmetadata = function(e) {
     95                                video.play();
     96                        };
     97
    10098                        bp.WebCam.params.capture_enable = true;
    10199                },
    102100
     
    172170                initialize: function() {
    173171                        var params;
    174172
    175                         if ( navigator.getUserMedia || navigator.oGetUserMedia || navigator.mozGetUserMedia || navigator.webkitGetUserMedia || navigator.msGetUserMedia ) {
     173                        // Standardize getUserMedia browser call.
     174                        navigator.getUserMedia = (
     175                                navigator.getUserMedia ||
     176                                navigator.webkitGetUserMedia ||
     177                                navigator.mozGetUserMedia ||
     178                                navigator.msGetUserMedia ||
     179                                navigator.oGetUserMedia
     180                        );
    176181
     182                        if ( typeof navigator.getUserMedia !== 'undefined' ) {
    177183                                // We need to add some cropping stuff to use bp.Avatar.setAvatar()
    178184                                params = _.extend( _.pick( BP_Uploader.settings.defaults.multipart_params.bp_params,
    179185                                        'object',
     
    213219                        // User Feedback
    214220                        bp.WebCam.displayWarning( 'requesting' );
    215221
    216                         if ( navigator.getUserMedia ) {
    217                                 navigator.getUserMedia( { video:true }, bp.WebCam.gotStream, bp.WebCam.noStream );
    218                         }  else if ( navigator.oGetUserMedia ) {
    219                                 navigator.oGetUserMedia( { video:true }, bp.WebCam.gotStream, bp.WebCam.noStream );
    220                         } else if ( navigator.mozGetUserMedia ) {
    221                                 navigator.mozGetUserMedia( { video:true }, bp.WebCam.gotStream, bp.WebCam.noStream );
    222                         } else if ( navigator.webkitGetUserMedia ) {
    223                                 navigator.webkitGetUserMedia( { video:true }, bp.WebCam.gotStream, bp.WebCam.noStream );
    224                         } else if (navigator.msGetUserMedia) {
    225                                 navigator.msGetUserMedia( { video:true, audio:false }, bp.WebCams.gotStream, bp.WebCam.noStream );
     222                        // Use deprecated getUserMedia call for browsers that require it.
     223                        if ( typeof navigator.mediaDevices.getUserMedia === 'undefined' ) {
     224                                navigator.getUserMedia({
     225                                        audio: false,
     226                                        video: true
     227                                }, bp.WebCam.gotStream, bp.WebCam.noStream);
     228
     229                        // Teh new hotness!
    226230                        } else {
    227                                 // User Feedback
    228                                 bp.WebCam.displayWarning( 'errormsg' );
     231                                navigator.mediaDevices.getUserMedia({
     232                                        audio: false,
     233                                        video: true
     234                                }).then(bp.WebCam.gotStream, bp.WebCam.noStream).catch(function(err) {
     235                                        console.log(err.name + ": " + err.message);
     236
     237                                        // User Feedback
     238                                        bp.WebCam.displayWarning( 'errormsg' );
     239                                });
    229240                        }
    230241                },
    231242