From c3de3c1f84e282581aeab979c1ba49826e91f6ae Mon Sep 17 00:00:00 2001 From: Benoit Schweblin Date: Wed, 11 Apr 2018 10:17:53 +0100 Subject: [PATCH] Team drive support --- .../providers/GoogleDrivePublishModal.vue | 2 +- .../modals/providers/GoogleDriveSaveModal.vue | 2 +- .../providers/GoogleDriveWorkspaceModal.vue | 2 +- .../providers/googleDriveWorkspaceProvider.js | 3 +- .../providers/helpers/googleHelper.js | 70 ++++++++----------- 5 files changed, 34 insertions(+), 45 deletions(-) diff --git a/src/components/modals/providers/GoogleDrivePublishModal.vue b/src/components/modals/providers/GoogleDrivePublishModal.vue index b1ffb61f..453bafdc 100644 --- a/src/components/modals/providers/GoogleDrivePublishModal.vue +++ b/src/components/modals/providers/GoogleDrivePublishModal.vue @@ -8,7 +8,7 @@
Choose folder diff --git a/src/components/modals/providers/GoogleDriveSaveModal.vue b/src/components/modals/providers/GoogleDriveSaveModal.vue index bd9ed990..6ee576d2 100644 --- a/src/components/modals/providers/GoogleDriveSaveModal.vue +++ b/src/components/modals/providers/GoogleDriveSaveModal.vue @@ -8,7 +8,7 @@
Choose folder diff --git a/src/components/modals/providers/GoogleDriveWorkspaceModal.vue b/src/components/modals/providers/GoogleDriveWorkspaceModal.vue index 3948a40f..89c5539e 100644 --- a/src/components/modals/providers/GoogleDriveWorkspaceModal.vue +++ b/src/components/modals/providers/GoogleDriveWorkspaceModal.vue @@ -8,7 +8,7 @@
Choose folder diff --git a/src/services/providers/googleDriveWorkspaceProvider.js b/src/services/providers/googleDriveWorkspaceProvider.js index 270fd413..8356f2b2 100644 --- a/src/services/providers/googleDriveWorkspaceProvider.js +++ b/src/services/providers/googleDriveWorkspaceProvider.js @@ -101,6 +101,7 @@ export default providerRegistry.register({ providerId: this.id, url: location.href, folderId: folder.id, + teamDriveId: folder.teamDriveId, dataFolderId: properties.dataFolderId, trashFolderId: properties.trashFolderId, }, @@ -223,7 +224,7 @@ export default providerRegistry.register({ const workspace = store.getters['workspace/currentWorkspace']; const syncToken = store.getters['workspace/syncToken']; const startPageToken = store.getters['data/localSettings'].syncStartPageToken; - return googleHelper.getChanges(syncToken, startPageToken, false) + return googleHelper.getChanges(syncToken, startPageToken, false, workspace.teamDriveId) .then((result) => { // Collect possible parent IDs const parentIds = {}; diff --git a/src/services/providers/helpers/googleHelper.js b/src/services/providers/helpers/googleHelper.js index 5c3c2fda..3efafb96 100644 --- a/src/services/providers/helpers/googleHelper.js +++ b/src/services/providers/helpers/googleHelper.js @@ -159,7 +159,6 @@ export default { pageToken, pageSize: 1000, fields: 'nextPageToken,revisions(id,modifiedTime,lastModifyingUser/permissionId,lastModifyingUser/displayName,lastModifyingUser/photoLink)', - supportsTeamDrives: true, }, }) .then((res) => { @@ -186,9 +185,6 @@ export default { method: 'GET', url: `https://www.googleapis.com/drive/v3/files/${fileId}/revisions/${revisionId}?alt=media`, raw: true, - params: { - supportsTeamDrives: true, - }, }).then(res => res.body)); }, getUser(userId) { @@ -368,7 +364,7 @@ export default { addPhotosAccount() { return this.startOauth2(photosScopes); }, - getChanges(token, startPageToken, isAppData) { + getChanges(token, startPageToken, isAppData, teamDriveId = null) { const result = { changes: [], }; @@ -387,7 +383,8 @@ export default { pageSize: 1000, fields: `nextPageToken,newStartPageToken,changes(fileId,${fileFields})`, supportsTeamDrives: true, - includeTeamDriveItems: true, + includeTeamDriveItems: !!teamDriveId, + teamDriveId, }, }) .then((res) => { @@ -434,7 +431,7 @@ export default { method: 'GET', url: `https://www.googleapis.com/drive/v3/files/${id}`, params: { - fields: 'id,name,mimeType,appProperties', + fields: 'id,name,mimeType,appProperties,teamDriveId', supportsTeamDrives: true, }, }) @@ -563,45 +560,36 @@ export default { switch (type) { default: case 'doc': { - const addView = (hasRootParent) => { - const view = new google.picker.DocsView(google.picker.ViewId.DOCS); - if (hasRootParent) { - view.setParent('root'); - } - view.setMimeTypes([ - 'text/plain', - 'text/x-markdown', - 'application/octet-stream', - ].join(',')); - pickerBuilder.addView(view); - }; + const mimeTypes = [ + 'text/plain', + 'text/x-markdown', + 'application/octet-stream', + ].join(','); + + const view = new google.picker.DocsView(google.picker.ViewId.DOCS); + view.setMimeTypes(mimeTypes); + pickerBuilder.addView(view); + + const teamDriveView = new google.picker.DocsView(google.picker.ViewId.DOCS); + teamDriveView.setMimeTypes(mimeTypes); + teamDriveView.setEnableTeamDrives(true); + pickerBuilder.addView(teamDriveView); + pickerBuilder.enableFeature(google.picker.Feature.MULTISELECT_ENABLED); - addView(false); - // addView(true); + pickerBuilder.enableFeature(google.picker.Feature.SUPPORT_TEAM_DRIVES); break; } case 'folder': { - const addView = (hasRootParent) => { - const teamDriveView = new google.picker.DocsView(google.picker.ViewId.FOLDERS); - if (hasRootParent) { - teamDriveView.setParent('root'); - } - teamDriveView.setSelectFolderEnabled(true); - teamDriveView.setEnableTeamDrives(true); - teamDriveView.setMimeTypes(this.folderMimeType); + const folderView = new google.picker.DocsView(google.picker.ViewId.FOLDERS); + folderView.setSelectFolderEnabled(true); + folderView.setMimeTypes(this.folderMimeType); + pickerBuilder.addView(folderView); - const folderView = new google.picker.DocsView(google.picker.ViewId.FOLDERS); - if (hasRootParent) { - folderView.setParent('root'); - } - folderView.setSelectFolderEnabled(true); - folderView.setMimeTypes(this.folderMimeType); - - pickerBuilder.addView(teamDriveView); - pickerBuilder.addView(folderView); - }; - addView(false); - // addView(true); + const teamDriveView = new google.picker.DocsView(google.picker.ViewId.FOLDERS); + teamDriveView.setSelectFolderEnabled(true); + teamDriveView.setEnableTeamDrives(true); + teamDriveView.setMimeTypes(this.folderMimeType); + pickerBuilder.addView(teamDriveView); break; } case 'img': {