mirror of
https://github.com/transloadit/uppy.git
synced 2026-07-28 20:40:06 +00:00
Merge pull request #421 from transloadit/feature/is-supproted
webcam,dashboard: Add `isSupported()` API for providers
This commit is contained in:
commit
c2accaa0fe
2 changed files with 31 additions and 13 deletions
|
|
@ -311,8 +311,17 @@ module.exports = class DashboardUI extends Plugin {
|
|||
})
|
||||
}
|
||||
|
||||
const isSupported = (target) => {
|
||||
const plugin = this.core.getPlugin(target.id)
|
||||
// If the plugin does not provide a `supported` check, assume the plugin works everywhere.
|
||||
if (typeof plugin.isSupported !== 'function') {
|
||||
return true
|
||||
}
|
||||
return plugin.isSupported()
|
||||
}
|
||||
|
||||
const acquirers = pluginState.targets
|
||||
.filter(target => target.type === 'acquirer')
|
||||
.filter(target => target.type === 'acquirer' && isSupported(target))
|
||||
.map(attachRenderFunctionToTarget)
|
||||
|
||||
const progressindicators = pluginState.targets
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ function getMediaDevices () {
|
|||
return navigator.mediaDevices
|
||||
}
|
||||
|
||||
let getUserMedia = navigator.mozGetUserMedia || navigator.webkitGetUserMedia
|
||||
const getUserMedia = navigator.mozGetUserMedia || navigator.webkitGetUserMedia
|
||||
if (!getUserMedia) {
|
||||
return null
|
||||
}
|
||||
|
|
@ -94,25 +94,34 @@ module.exports = class Webcam extends Plugin {
|
|||
}
|
||||
}
|
||||
|
||||
start () {
|
||||
if (!this.mediaDevices) {
|
||||
return Promise.reject(new Error('Webcam access not supported'))
|
||||
}
|
||||
|
||||
this.webcamActive = true
|
||||
isSupported () {
|
||||
return !!this.mediaDevices
|
||||
}
|
||||
|
||||
getConstraints () {
|
||||
const acceptsAudio = this.opts.modes.indexOf('video-audio') !== -1 ||
|
||||
this.opts.modes.indexOf('audio-only') !== -1
|
||||
const acceptsVideo = this.opts.modes.indexOf('video-audio') !== -1 ||
|
||||
this.opts.modes.indexOf('video-only') !== -1 ||
|
||||
this.opts.modes.indexOf('picture') !== -1
|
||||
|
||||
return {
|
||||
audio: acceptsAudio,
|
||||
video: acceptsVideo
|
||||
}
|
||||
}
|
||||
|
||||
start () {
|
||||
if (!this.isSupported()) {
|
||||
return Promise.reject(new Error('Webcam access not supported'))
|
||||
}
|
||||
|
||||
this.webcamActive = true
|
||||
|
||||
const constraints = this.getConstraints()
|
||||
|
||||
// ask user for access to their camera
|
||||
return this.mediaDevices
|
||||
.getUserMedia({
|
||||
audio: acceptsAudio,
|
||||
video: acceptsVideo
|
||||
})
|
||||
return this.mediaDevices.getUserMedia(constraints)
|
||||
.then((stream) => {
|
||||
this.stream = stream
|
||||
this.streamSrc = URL.createObjectURL(this.stream)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue