Ver Fonte

@uppy/companion - Fetch all Google Drive shared drives (#3553)

* @uppy/companion - Fetch all Google Drive shared drives0

* simplify and improve

Co-authored-by: Mikael Finstad <finstaden@gmail.com>
Robert DiMartino há 3 anos atrás
pai
commit
974be7ce9d

+ 12 - 3
packages/@uppy/companion/src/server/provider/drive/index.js

@@ -107,21 +107,30 @@ class Drive extends Provider {
     const isRoot = directory === 'root'
     const isVirtualSharedDirRoot = directory === VIRTUAL_SHARED_DIR
 
-    async function fetchSharedDrives () {
+    async function fetchSharedDrives (pageToken = null) {
       try {
         const shouldListSharedDrives = isRoot && !query.cursor
         if (!shouldListSharedDrives) return undefined
 
         const resp = await new Promise((resolve, reject) => client
           .get('drives')
-          .qs({ fields: SHARED_DRIVE_FIELDS })
+          .qs({ fields: SHARED_DRIVE_FIELDS, pageToken, pageSize: 100 })
           .auth(options.token)
           .request((err, resp2) => {
             if (err || resp2.statusCode !== 200) return reject(handleErrorResponse(err, resp2))
             return resolve(resp2)
           }))
 
-        return resp && resp.body
+        if (!resp) return resp
+
+        const { body } = resp
+        const nextPageToken = body && body.nextPageToken
+        if (nextPageToken) {
+          const nextBody = await fetchSharedDrives(nextPageToken)
+          if (!nextBody) return body
+          return { ...nextBody, drives: [...body.drives, ...nextBody.drives] }
+        }
+        return body
       } catch (err) {
         logger.error(err, 'provider.drive.sharedDrive.error')
         throw err