From 1d5ea81efae506470fb24b87bf320d0b10f10cdb Mon Sep 17 00:00:00 2001 From: Merlijn Vos Date: Fri, 6 Aug 2021 12:03:25 +0200 Subject: [PATCH] Sort Google Drive list by name (#3069) --- .../src/server/provider/drive/index.js | 6 +- packages/@uppy/provider-views/src/Browser.js | 2 - .../src/ProviderView/ProviderView.js | 89 ------------------- 3 files changed, 5 insertions(+), 92 deletions(-) diff --git a/packages/@uppy/companion/src/server/provider/drive/index.js b/packages/@uppy/companion/src/server/provider/drive/index.js index f1c08e653..ef8d8231c 100644 --- a/packages/@uppy/companion/src/server/provider/drive/index.js +++ b/packages/@uppy/companion/src/server/provider/drive/index.js @@ -16,6 +16,10 @@ const SHARED_DRIVE_FIELDS = '*' // Hopefully this name will not be used by Google const VIRTUAL_SHARED_DIR = 'shared-with-me' +function sortByName (first, second) { + return first.name.localeCompare(second.name) +} + function waitForFailedResponse (resp) { return new Promise((resolve, reject) => { let data = '' @@ -70,7 +74,7 @@ function adaptData (listFilesResp, sharedDrivesResp, directory, query, showShare const adaptedItems = [ ...(virtualItem ? [virtualItem] : []), // shared folder first - ...([...sharedDrives, ...items].map(adaptItem)), + ...([...sharedDrives, ...items].map(adaptItem).sort(sortByName)), ] return { diff --git a/packages/@uppy/provider-views/src/Browser.js b/packages/@uppy/provider-views/src/Browser.js index 92caafa30..3a34891f8 100644 --- a/packages/@uppy/provider-views/src/Browser.js +++ b/packages/@uppy/provider-views/src/Browser.js @@ -39,8 +39,6 @@ const Browser = (props) => { }]} folders={filteredFolders} files={filteredFiles} - sortByTitle={props.sortByTitle} - sortByDate={props.sortByDate} isChecked={props.isChecked} handleFolderClick={props.getNextFolder} toggleCheckbox={props.toggleCheckbox} diff --git a/packages/@uppy/provider-views/src/ProviderView/ProviderView.js b/packages/@uppy/provider-views/src/ProviderView/ProviderView.js index 05d246653..dc16cd3d0 100644 --- a/packages/@uppy/provider-views/src/ProviderView/ProviderView.js +++ b/packages/@uppy/provider-views/src/ProviderView/ProviderView.js @@ -48,8 +48,6 @@ module.exports = class ProviderView { this.logout = this.logout.bind(this) this.preFirstRender = this.preFirstRender.bind(this) this.handleAuth = this.handleAuth.bind(this) - this.sortByTitle = this.sortByTitle.bind(this) - this.sortByDate = this.sortByDate.bind(this) this.handleError = this.handleError.bind(this) this.handleScroll = this.handleScroll.bind(this) this.listAllFiles = this.listAllFiles.bind(this) @@ -209,91 +207,6 @@ module.exports = class ProviderView { this.plugin.setPluginState({ ...state, filterInput: e ? e.target.value : '' }) } - sortByTitle () { - const state = { ...this.plugin.getPluginState() } - const { files, folders, sorting } = state - - const sortedFiles = files.sort((fileA, fileB) => { - if (sorting === 'titleDescending') { - return fileB.name.localeCompare(fileA.name) - } - return fileA.name.localeCompare(fileB.name) - }) - - const sortedFolders = folders.sort((folderA, folderB) => { - if (sorting === 'titleDescending') { - return folderB.name.localeCompare(folderA.name) - } - return folderA.name.localeCompare(folderB.name) - }) - - this.plugin.setPluginState({ - ...state, - files: sortedFiles, - folders: sortedFolders, - sorting: (sorting === 'titleDescending') ? 'titleAscending' : 'titleDescending', - }) - } - - sortByDate () { - const state = { ...this.plugin.getPluginState() } - const { files, folders, sorting } = state - - const sortedFiles = files.sort((fileA, fileB) => { - const a = new Date(fileA.modifiedDate) - const b = new Date(fileB.modifiedDate) - - if (sorting === 'dateDescending') { - return a > b ? -1 : a < b ? 1 : 0 - } - return a > b ? 1 : a < b ? -1 : 0 - }) - - const sortedFolders = folders.sort((folderA, folderB) => { - const a = new Date(folderA.modifiedDate) - const b = new Date(folderB.modifiedDate) - - if (sorting === 'dateDescending') { - return a > b ? -1 : a < b ? 1 : 0 - } - - return a > b ? 1 : a < b ? -1 : 0 - }) - - this.plugin.setPluginState({ - ...state, - files: sortedFiles, - folders: sortedFolders, - sorting: (sorting === 'dateDescending') ? 'dateAscending' : 'dateDescending', - }) - } - - sortBySize () { - const state = { ...this.plugin.getPluginState() } - const { files, sorting } = state - - // check that plugin supports file sizes - if (!files.length || !this.plugin.getItemData(files[0]).size) { - return - } - - const sortedFiles = files.sort((fileA, fileB) => { - const a = fileA.size - const b = fileB.size - - if (sorting === 'sizeDescending') { - return a > b ? -1 : a < b ? 1 : 0 - } - return a > b ? 1 : a < b ? -1 : 0 - }) - - this.plugin.setPluginState({ - ...state, - files: sortedFiles, - sorting: (sorting === 'sizeDescending') ? 'sizeAscending' : 'sizeDescending', - }) - } - /** * Adds all files found inside of specified folder. * @@ -538,8 +451,6 @@ module.exports = class ProviderView { getFolder: this.getFolder, filterItems: this._sharedHandler.filterItems, filterQuery: this.filterQuery, - sortByTitle: this.sortByTitle, - sortByDate: this.sortByDate, logout: this.logout, isChecked: this._sharedHandler.isChecked, toggleCheckbox: this._sharedHandler.toggleCheckbox,