From b582795b79feae7d01b9ce69beabac800da0c795 Mon Sep 17 00:00:00 2001 From: shingz96 Date: Mon, 27 Apr 2020 21:08:53 +0800 Subject: [PATCH] add support to view google drive new shortcut --- worker/dist/worker.js | 14 ++++++++++++-- worker/googleDrive.js | 13 +++++++++++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/worker/dist/worker.js b/worker/dist/worker.js index 84e86215..c4ace3d7 100644 --- a/worker/dist/worker.js +++ b/worker/dist/worker.js @@ -333,7 +333,7 @@ self.props = { supportsAllDrives: true, q: `'${id}' in parents and trashed = false`, orderBy: 'folder,name,modifiedTime desc', - fields: 'files(id,name,mimeType,size,modifiedTime),nextPageToken', + fields: 'files(id,name,mimeType,size,modifiedTime,shortcutDetails),nextPageToken', pageSize: 1000 }; @@ -355,6 +355,12 @@ self.props = { pageToken = resp.nextPageToken; } while (pageToken); + files.forEach(file => { + if (file && file.mimeType == 'application/vnd.google-apps.shortcut') { + file.id = file.shortcutDetails.targetId; + file.mimeType = file.shortcutDetails.targetMimeType; + } + }); return { files }; @@ -390,7 +396,7 @@ self.props = { includeItemsFromAllDrives: true, supportsAllDrives: true, q: `'${parentId}' in parents and name = '${childName}' and trashed = false`, - fields: 'files(id)' + fields: 'files(id,shortcutDetails)' } }).json().catch(e => ({ files: [] @@ -400,6 +406,10 @@ self.props = { return null; } + if (resp.files[0].shortcutDetails) { + resp.files[0].id = resp.files[0].shortcutDetails.targetId; + } + this._getIdCache.has(parentId + childName); return resp.files[0].id; // when there are more than 1 items, simply return the first one diff --git a/worker/googleDrive.js b/worker/googleDrive.js index 8bb984de..6fa3edb7 100644 --- a/worker/googleDrive.js +++ b/worker/googleDrive.js @@ -75,7 +75,7 @@ class GoogleDrive { q: `'${id}' in parents and trashed = false`, orderBy: 'folder,name,modifiedTime desc', fields: - 'files(id,name,mimeType,size,modifiedTime),nextPageToken', + 'files(id,name,mimeType,size,modifiedTime,shortcutDetails),nextPageToken', pageSize: 1000 } if (pageToken) { @@ -94,6 +94,12 @@ class GoogleDrive { files.push(...resp.files) pageToken = resp.nextPageToken } while (pageToken) + files.forEach(file => { + if (file && file.mimeType == 'application/vnd.google-apps.shortcut') { + file.id = file.shortcutDetails.targetId; + file.mimeType = file.shortcutDetails.targetMimeType; + } + }); return { files } } async listFolderByPath(path, rootId = 'root') { @@ -121,7 +127,7 @@ class GoogleDrive { includeItemsFromAllDrives: true, supportsAllDrives: true, q: `'${parentId}' in parents and name = '${childName}' and trashed = false`, - fields: 'files(id)' + fields: 'files(id,shortcutDetails)' } }) .json() @@ -129,6 +135,9 @@ class GoogleDrive { if (resp.files.length === 0) { return null } + if (resp.files[0].shortcutDetails){ + resp.files[0].id = resp.files[0].shortcutDetails.targetId; + } this._getIdCache.has(parentId + childName) return resp.files[0].id // when there are more than 1 items, simply return the first one }