UNPKG

@uppy/companion

Version:

OAuth helper and remote fetcher for Uppy's (https://uppy.io) extensible file upload widget with support for drag&drop, resumable uploads, previews, restrictions, file processing/encoding, remote providers like Dropbox and Google Drive, S3 and more :dog:

63 lines (62 loc) 1.93 kB
"use strict"; const querystring = require('node:querystring'); const isFolder = (item) => { return !!item.type; }; exports.sortImages = (images) => { // sort in ascending order of dimension return images.slice().sort((a, b) => a.width - b.width); }; const getItemIcon = (item) => { if (isFolder(item)) { return 'folder'; } return exports.sortImages(item.images)[0].source; }; const getItemSubList = (item) => { return item.data; }; const getItemName = (item) => { return item.name || `${item.id} ${item.created_time}`; }; const getMimeType = (item) => { return isFolder(item) ? null : 'image/jpeg'; }; const getItemId = (item) => { return `${item.id}`; }; const getItemRequestPath = (item) => { return `${item.id}`; }; const getItemModifiedDate = (item) => { return item.created_time; }; const getItemThumbnailUrl = (item) => { return isFolder(item) ? null : exports.sortImages(item.images)[0].source; }; const getNextPagePath = (data, currentQuery, currentPath) => { if (!data.paging || !data.paging.cursors) { return null; } const query = { ...currentQuery, cursor: data.paging.cursors.after }; return `${currentPath || ''}?${querystring.stringify(query)}`; }; exports.adaptData = (res, username, directory, currentQuery) => { const data = { username, items: [] }; const items = getItemSubList(res); items.forEach((item) => { data.items.push({ isFolder: isFolder(item), icon: getItemIcon(item), name: getItemName(item), mimeType: getMimeType(item), size: null, id: getItemId(item), thumbnail: getItemThumbnailUrl(item), requestPath: getItemRequestPath(item), modifiedDate: getItemModifiedDate(item), }); }); data.nextPagePath = getNextPagePath(res, currentQuery, directory); return data; };