Skip to content

Commit

Permalink
fix: fixed page size limit
Browse files Browse the repository at this point in the history
  • Loading branch information
gaborauth committed Feb 4, 2025
1 parent e3e4870 commit 422d47f
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 13 deletions.
30 changes: 19 additions & 11 deletions app/src/main/java/com/toolsboox/fi/GoogleDriveService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ class GoogleDriveService @Inject constructor() {
fun getFile(drive: Drive, parent: File, fileName: String): File? {
val files = drive.files().list().setSpaces("appDataFolder")
.setQ("'${parent.id}' in parents and name='$fileName' and trashed=false")
.setFields("files(id, kind, name, size, mimeType, createdTime, modifiedTime, properties, parents)")
.setFields("nextPageToken, files(id, kind, name, size, mimeType, createdTime, modifiedTime, properties, parents)")
.execute().files.sortedByDescending { it.createdTime.value }
return if (files.isNotEmpty()) files[0] else null
}
Expand All @@ -43,7 +43,7 @@ class GoogleDriveService @Inject constructor() {
fun getOrCreateRootFolder(drive: Drive, root: String): File? {
val files = drive.files().list().setSpaces("appDataFolder")
.setQ("mimeType='application/vnd.google-apps.folder' and name='$root' and trashed=false")
.setFields("files(id, kind, name, size, mimeType, createdTime, modifiedTime, properties, parents)")
.setFields("nextPageToken, files(id, kind, name, size, mimeType, createdTime, modifiedTime, properties, parents)")
.execute().files.sortedByDescending { it.createdTime.value }
if (files.isNotEmpty()) return files[0]

Expand All @@ -66,7 +66,7 @@ class GoogleDriveService @Inject constructor() {
fun getOrCreateFolder(drive: Drive, parent: File, folderName: String): File? {
val files = drive.files().list().setSpaces("appDataFolder")
.setQ("mimeType='application/vnd.google-apps.folder' and name='$folderName' and '${parent.id}' in parents and trashed=false")
.setFields("files(id, kind, name, size, mimeType, createdTime, modifiedTime, properties, parents)")
.setFields("nextPageToken, files(id, kind, name, size, mimeType, createdTime, modifiedTime, properties, parents)")
.execute().files.sortedByDescending { it.createdTime.value }
if (files.isNotEmpty()) return files[0]

Expand Down Expand Up @@ -145,9 +145,10 @@ class GoogleDriveService @Inject constructor() {
*/
fun walk(drive: Drive, parent: File, relativePath: String): List<File> {
val filePaths = mutableListOf<File>()
// TODO: Implement paging
val files = drive.files().list().setSpaces("appDataFolder")
.setQ("'${parent.id}' in parents and trashed=false")
.setFields("files(id, kind, name, size, mimeType, createdTime, modifiedTime, properties, parents)")
.setFields("nextPageToken, files(id, kind, name, size, mimeType, createdTime, modifiedTime, properties, parents)")
.execute().files.sortedBy { it.name }
files.forEach {
if (it.mimeType == "application/vnd.google-apps.folder") {
Expand All @@ -164,17 +165,24 @@ class GoogleDriveService @Inject constructor() {
* Walk through the folder structure.
*
* @param drive the Drive instance
* @param relativePath the relative path of the folder
* @param property the property key-value pair
* @return the list of file metadata
* @throws Exception if the folder structure cannot be walked
*/
fun walkByProperty(drive: Drive, property: Pair<String, String>): List<File> {
val files = drive.files().list().setSpaces("appDataFolder")
.setQ("properties has { key='${property.first}' and value='${property.second}' } and trashed=false")
.setFields("files(id, kind, name, size, mimeType, createdTime, modifiedTime, properties, parents)")
.execute().files.sortedByDescending { it.name }

return files
val files = mutableListOf<File>()
var nextPageToken: String? = null
do {
val result = drive.files().list().setSpaces("appDataFolder")
.setPageToken(nextPageToken)
.setQ("properties has { key='${property.first}' and value='${property.second}' } and trashed=false")
.setFields("nextPageToken, files(id, kind, name, size, mimeType, createdTime, modifiedTime, properties, parents)")
.execute()
files.addAll(result.files)
nextPageToken = result.nextPageToken
} while (nextPageToken != null)

return files.sortedByDescending { it.name }
}
}
}
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ plugins {

ext {
applicationName = 'toolboox'
parentVersionCode = 1_06_02_01
parentVersionName = '1.06.02-01'
parentVersionCode = 1_06_02_02
parentVersionName = '1.06.02-02'
}

allprojects {
Expand Down

0 comments on commit 422d47f

Please sign in to comment.