#323 fix http status code 500 on some devices using Google Drive
Due to too complex query, see https://github.com/cryptomator/android/issues/323#issuecomment-911907421 for more details
This commit is contained in:
parent
d4bf3ff668
commit
2ae54f8748
@ -57,14 +57,8 @@ internal class GoogleDriveImpl(context: Context, googleDriveCloud: GoogleDriveCl
|
|||||||
|
|
||||||
@Throws(IOException::class)
|
@Throws(IOException::class)
|
||||||
private fun findFile(parentDriveId: String?, name: String): File? {
|
private fun findFile(parentDriveId: String?, name: String): File? {
|
||||||
val fileListQuery = client().files().list() //
|
val fileListQuery = client().files().list().setFields("files(id,mimeType,name,size)")
|
||||||
.setFields("files(id,mimeType,name,size)") //
|
fileListQuery.q = "name contains '$name' and '$parentDriveId' in parents and trashed = false"
|
||||||
.setSupportsAllDrives(true)
|
|
||||||
fileListQuery.q = if (parentDriveId != null && parentDriveId == "root") {
|
|
||||||
"name contains '$name' and '$parentDriveId' in parents and trashed = false or sharedWithMe"
|
|
||||||
} else {
|
|
||||||
"name contains '$name' and '$parentDriveId' in parents and trashed = false"
|
|
||||||
}
|
|
||||||
return fileListQuery.execute().files.firstOrNull { it.name == name }
|
return fileListQuery.execute().files.firstOrNull { it.name == name }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -135,14 +129,8 @@ internal class GoogleDriveImpl(context: Context, googleDriveCloud: GoogleDriveCl
|
|||||||
.list() //
|
.list() //
|
||||||
.setFields("nextPageToken,files(id,mimeType,modifiedTime,name,size)") //
|
.setFields("nextPageToken,files(id,mimeType,modifiedTime,name,size)") //
|
||||||
.setPageSize(1000) //
|
.setPageSize(1000) //
|
||||||
.setSupportsAllDrives(true) //
|
|
||||||
.setIncludeItemsFromAllDrives(true) //
|
|
||||||
.setPageToken(pageToken)
|
.setPageToken(pageToken)
|
||||||
if (folder.driveId == "root") {
|
fileListQuery.q = "'" + folder.driveId + "' in parents and trashed = false"
|
||||||
fileListQuery.q = "'" + folder.driveId + "' in parents and trashed = false or sharedWithMe"
|
|
||||||
} else {
|
|
||||||
fileListQuery.q = "'" + folder.driveId + "' in parents and trashed = false"
|
|
||||||
}
|
|
||||||
val fileList = fileListQuery.execute()
|
val fileList = fileListQuery.execute()
|
||||||
for (file in fileList.files) {
|
for (file in fileList.files) {
|
||||||
result.add(idCache.cache(GoogleDriveCloudNodeFactory.from(folder, file)))
|
result.add(idCache.cache(GoogleDriveCloudNodeFactory.from(folder, file)))
|
||||||
@ -171,7 +159,6 @@ internal class GoogleDriveImpl(context: Context, googleDriveCloud: GoogleDriveCl
|
|||||||
.files() //
|
.files() //
|
||||||
.create(metadata) //
|
.create(metadata) //
|
||||||
.setFields("id,name") //
|
.setFields("id,name") //
|
||||||
.setSupportsAllDrives(true) //
|
|
||||||
.execute()
|
.execute()
|
||||||
return idCache.cache(GoogleDriveCloudNodeFactory.folder(parentFolder, createdFolder))
|
return idCache.cache(GoogleDriveCloudNodeFactory.folder(parentFolder, createdFolder))
|
||||||
} ?: throw ParentFolderIsNullException(folder.name)
|
} ?: throw ParentFolderIsNullException(folder.name)
|
||||||
@ -193,7 +180,6 @@ internal class GoogleDriveImpl(context: Context, googleDriveCloud: GoogleDriveCl
|
|||||||
.setFields("id,mimeType,modifiedTime,name,size") //
|
.setFields("id,mimeType,modifiedTime,name,size") //
|
||||||
.setAddParents(targetsParent.driveId) //
|
.setAddParents(targetsParent.driveId) //
|
||||||
.setRemoveParents(sourcesParent.driveId) //
|
.setRemoveParents(sourcesParent.driveId) //
|
||||||
.setSupportsAllDrives(true) //
|
|
||||||
.execute()
|
.execute()
|
||||||
idCache.remove(source)
|
idCache.remove(source)
|
||||||
return idCache.cache(GoogleDriveCloudNodeFactory.from(targetsParent, movedFile))
|
return idCache.cache(GoogleDriveCloudNodeFactory.from(targetsParent, movedFile))
|
||||||
@ -237,7 +223,6 @@ internal class GoogleDriveImpl(context: Context, googleDriveCloud: GoogleDriveCl
|
|||||||
.files() //
|
.files() //
|
||||||
.update(file.driveId, metadata, it) //
|
.update(file.driveId, metadata, it) //
|
||||||
.setFields("id,modifiedTime,name,size") //
|
.setFields("id,modifiedTime,name,size") //
|
||||||
.setSupportsAllDrives(true) //
|
|
||||||
.execute()
|
.execute()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -260,7 +245,6 @@ internal class GoogleDriveImpl(context: Context, googleDriveCloud: GoogleDriveCl
|
|||||||
.files() //
|
.files() //
|
||||||
.create(metadata, it) //
|
.create(metadata, it) //
|
||||||
.setFields("id,modifiedTime,name,size") //
|
.setFields("id,modifiedTime,name,size") //
|
||||||
.setSupportsAllDrives(true) //
|
|
||||||
.execute()
|
.execute()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -331,7 +315,6 @@ internal class GoogleDriveImpl(context: Context, googleDriveCloud: GoogleDriveCl
|
|||||||
client() //
|
client() //
|
||||||
.files()[file.driveId] //
|
.files()[file.driveId] //
|
||||||
.setAlt("media") //
|
.setAlt("media") //
|
||||||
.setSupportsAllDrives(true) //
|
|
||||||
.executeMediaAndDownloadTo(it)
|
.executeMediaAndDownloadTo(it)
|
||||||
}
|
}
|
||||||
} catch (e: HttpResponseException) {
|
} catch (e: HttpResponseException) {
|
||||||
@ -389,7 +372,7 @@ internal class GoogleDriveImpl(context: Context, googleDriveCloud: GoogleDriveCl
|
|||||||
|
|
||||||
@Throws(IOException::class)
|
@Throws(IOException::class)
|
||||||
fun delete(node: GoogleDriveNode) {
|
fun delete(node: GoogleDriveNode) {
|
||||||
client().files().delete(node.driveId).setSupportsAllDrives(true).execute()
|
client().files().delete(node.driveId).execute()
|
||||||
idCache.remove(node)
|
idCache.remove(node)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user