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) { collection(collectionID: $collectionID) {
children { children(cursor: $cursor) {
id id
title title
} }

View File

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