Dashboard.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. const Uppy = require('@uppy/core/src')
  2. const Dashboard = require('@uppy/dashboard/src')
  3. const Instagram = require('@uppy/instagram/src')
  4. const Facebook = require('@uppy/facebook/src')
  5. const OneDrive = require('@uppy/onedrive/src')
  6. const Dropbox = require('@uppy/dropbox/src')
  7. const Box = require('@uppy/box/src')
  8. const GoogleDrive = require('@uppy/google-drive/src')
  9. const Unsplash = require('@uppy/unsplash/src')
  10. const Zoom = require('@uppy/zoom/src')
  11. const Url = require('@uppy/url/src')
  12. const Webcam = require('@uppy/webcam/src')
  13. const ScreenCapture = require('@uppy/screen-capture/src')
  14. const GoldenRetriever = require('@uppy/golden-retriever/src')
  15. const Tus = require('@uppy/tus/src')
  16. const AwsS3 = require('@uppy/aws-s3/src')
  17. const AwsS3Multipart = require('@uppy/aws-s3-multipart/src')
  18. const XHRUpload = require('@uppy/xhr-upload/src')
  19. const Transloadit = require('@uppy/transloadit/src')
  20. const Form = require('@uppy/form/src')
  21. const ImageEditor = require('@uppy/image-editor/src')
  22. // DEV CONFIG: pick an uploader
  23. const UPLOADER = 'tus'
  24. // const UPLOADER = 's3'
  25. // const UPLOADER = 's3-multipart'
  26. // const UPLOADER = 'xhr'
  27. // const UPLOADER = 'transloadit'
  28. // DEV CONFIG: Endpoint URLs
  29. const COMPANION_URL = 'http://localhost:3020'
  30. const TUS_ENDPOINT = 'https://master.tus.io/files/'
  31. const XHR_ENDPOINT = 'https://xhr-server.herokuapp.com/upload'
  32. // DEV CONFIG: Transloadit keys
  33. const TRANSLOADIT_KEY = '...'
  34. const TRANSLOADIT_TEMPLATE = '...'
  35. // DEV CONFIG: enable or disable Golden Retriever
  36. const RESTORE = false
  37. // Rest is implementation! Obviously edit as necessary...
  38. module.exports = () => {
  39. const uppyDashboard = new Uppy({
  40. logger: Uppy.debugLogger,
  41. meta: {
  42. username: 'John',
  43. license: 'Creative Commons'
  44. }
  45. })
  46. .use(Dashboard, {
  47. trigger: '#pick-files',
  48. // inline: true,
  49. target: '.foo',
  50. metaFields: [
  51. { id: 'license', name: 'License', placeholder: 'specify license' },
  52. { id: 'caption', name: 'Caption', placeholder: 'add caption' }
  53. ],
  54. showProgressDetails: true,
  55. proudlyDisplayPoweredByUppy: true,
  56. note: '2 files, images and video only'
  57. })
  58. .use(GoogleDrive, { target: Dashboard, companionUrl: COMPANION_URL })
  59. .use(Instagram, { target: Dashboard, companionUrl: COMPANION_URL })
  60. .use(Dropbox, { target: Dashboard, companionUrl: COMPANION_URL })
  61. .use(Box, { target: Dashboard, companionUrl: COMPANION_URL })
  62. .use(Facebook, { target: Dashboard, companionUrl: COMPANION_URL })
  63. .use(OneDrive, { target: Dashboard, companionUrl: COMPANION_URL })
  64. .use(Zoom, { target: Dashboard, companionUrl: COMPANION_URL })
  65. .use(Url, { target: Dashboard, companionUrl: COMPANION_URL })
  66. .use(Unsplash, { target: Dashboard, companionUrl: COMPANION_URL })
  67. .use(Webcam, {
  68. target: Dashboard,
  69. showVideoSourceDropdown: true,
  70. showRecordingLength: true
  71. })
  72. .use(ScreenCapture, { target: Dashboard })
  73. .use(Form, { target: '#upload-form' })
  74. .use(ImageEditor, { target: Dashboard })
  75. switch (UPLOADER) {
  76. case 'tus':
  77. uppyDashboard.use(Tus, { endpoint: TUS_ENDPOINT, limit: 6 })
  78. break
  79. case 's3':
  80. uppyDashboard.use(AwsS3, { companionUrl: COMPANION_URL, limit: 6 })
  81. break
  82. case 's3-multipart':
  83. uppyDashboard.use(AwsS3Multipart, { companionUrl: COMPANION_URL, limit: 6 })
  84. break
  85. case 'xhr':
  86. uppyDashboard.use(XHRUpload, { endpoint: XHR_ENDPOINT, limit: 6, bundle: true })
  87. break
  88. case 'transloadit':
  89. uppyDashboard.use(Transloadit, {
  90. params: {
  91. auth: { key: TRANSLOADIT_KEY },
  92. template_id: TRANSLOADIT_TEMPLATE
  93. }
  94. })
  95. break
  96. }
  97. if (RESTORE) {
  98. uppyDashboard.use(GoldenRetriever, { serviceWorker: true })
  99. }
  100. window.uppy = uppyDashboard
  101. uppyDashboard.on('complete', (result) => {
  102. if (result.failed.length === 0) {
  103. console.log('Upload successful 😀')
  104. } else {
  105. console.warn('Upload failed 😞')
  106. }
  107. console.log('successful files:', result.successful)
  108. console.log('failed files:', result.failed)
  109. if (UPLOADER === 'transloadit') {
  110. console.log('Transloadit result:', result.transloadit)
  111. }
  112. })
  113. const modalTrigger = document.querySelector('#pick-files')
  114. if (modalTrigger) modalTrigger.click()
  115. }