fix: more than 10 folders/requests not loading fixes #2096

This commit is contained in:
Andrew Bastin
2022-02-02 18:12:19 +05:30
parent 2df1c1c6ed
commit ebfbf44140
2 changed files with 63 additions and 46 deletions

View File

@@ -1,6 +1,6 @@
query GetCollectionChildren($collectionID: ID!) {
query GetCollectionChildren($collectionID: ID!, $cursor: String) {
collection(collectionID: $collectionID) {
children {
children(cursor: $cursor) {
id
title
}

View File

@@ -501,21 +501,27 @@ export default class NewTeamCollectionAdapter {
if (collection.children != null) return
// TODO: Implement deep pagination
const collectionData = await runGQLQuery({
const collections: TeamCollection[] = []
while (true) {
const data = await runGQLQuery({
query: GetCollectionChildrenDocument,
variables: {
collectionID,
cursor:
collections.length > 0
? collections[collections.length - 1].id
: undefined,
},
})
if (E.isLeft(collectionData))
if (E.isLeft(data))
throw new Error(
`Child Collection Fetch Error for ${collectionID}: ${collectionData.left}`
`Child Collection Fetch Error for ${collectionID}: ${data.left}`
)
const collections: TeamCollection[] =
collectionData.right.collection?.children.map(
collections.push(
...data.right.collection!.children.map(
(el) =>
<TeamCollection>{
id: el.id,
@@ -523,24 +529,30 @@ export default class NewTeamCollectionAdapter {
children: null,
requests: null,
}
) ?? []
)
)
// TODO: Implement deep pagination
const requestData = await runGQLQuery({
if (data.right.collection!.children.length !== TEAMS_BACKEND_PAGE_SIZE)
break
}
const requests: TeamRequest[] = []
while (true) {
const data = await runGQLQuery({
query: GetCollectionRequestsDocument,
variables: {
collectionID,
cursor: undefined,
cursor:
requests.length > 0 ? requests[requests.length - 1].id : undefined,
},
})
if (E.isLeft(requestData))
throw new Error(
`Child Request Fetch Error for ${requestData}: ${requestData.left}`
)
if (E.isLeft(data))
throw new Error(`Child Request Fetch Error for ${data}: ${data.left}`)
const requests: TeamRequest[] =
requestData.right.requestsInCollection.map<TeamRequest>((el) => {
requests.push(
...data.right.requestsInCollection.map<TeamRequest>((el) => {
return {
id: el.id,
collectionID,
@@ -548,6 +560,11 @@ export default class NewTeamCollectionAdapter {
request: translateToNewRequest(JSON.parse(el.request)),
}
})
)
if (data.right.requestsInCollection.length !== TEAMS_BACKEND_PAGE_SIZE)
break
}
collection.children = collections
collection.requests = requests