Skip to content

Commit

Permalink
fix: filter paginated results (#3216)
Browse files Browse the repository at this point in the history
  • Loading branch information
erezrokah committed Feb 10, 2020
1 parent eff1fe3 commit 0a482b1
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 11 deletions.
15 changes: 10 additions & 5 deletions packages/netlify-cms-backend-bitbucket/src/implementation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ export default class BitbucketBackend implements Implementation {

const listFiles = () =>
this.api!.listFiles(folder, depth).then(({ entries, cursor: c }) => {
cursor = c;
cursor = c.mergeMeta({ extension });
return filterByPropExtension(extension, 'path')(entries);
});

Expand Down Expand Up @@ -397,16 +397,21 @@ export default class BitbucketBackend implements Implementation {
}

traverseCursor(cursor: Cursor, action: string) {
return this.api!.traverseCursor(cursor, action).then(
async ({ entries, cursor: newCursor }) => ({
return this.api!.traverseCursor(cursor, action).then(async ({ entries, cursor: newCursor }) => {
const extension = cursor.meta?.get('extension');
if (extension) {
entries = filterByPropExtension(extension as string, 'path')(entries);
newCursor = newCursor.mergeMeta({ extension });
}
return {
entries: await Promise.all(
entries.map(file =>
this.api!.readFile(file.path, file.id).then(data => ({ file, data: data as string })),
),
),
cursor: newCursor,
}),
);
};
});
}

loadMediaFile(branch: string, file: UnpublishedEntryMediaFile) {
Expand Down
19 changes: 14 additions & 5 deletions packages/netlify-cms-backend-gitlab/src/implementation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ export default class GitLab implements Implementation {

const listFiles = () =>
this.api!.listFiles(folder, depth > 1).then(({ files, cursor: c }) => {
cursor = c;
cursor = c.mergeMeta({ folder, extension, depth });
return files.filter(file => this.filterFile(folder, file, extension, depth));
});

Expand Down Expand Up @@ -245,16 +245,25 @@ export default class GitLab implements Implementation {
}

traverseCursor(cursor: Cursor, action: string) {
return this.api!.traverseCursor(cursor, action).then(
async ({ entries, cursor: newCursor }) => ({
return this.api!.traverseCursor(cursor, action).then(async ({ entries, cursor: newCursor }) => {
const [folder, depth, extension] = [
cursor.meta?.get('folder') as string,
cursor.meta?.get('depth') as number,
cursor.meta?.get('extension') as string,
];
if (folder && depth && extension) {
entries = entries.filter(f => this.filterFile(folder, f, extension, depth));
newCursor = newCursor.mergeMeta({ folder, extension, depth });
}
return {
entries: await Promise.all(
entries.map(file =>
this.api!.readFile(file.path, file.id).then(data => ({ file, data: data as string })),
),
),
cursor: newCursor,
}),
);
};
});
}

loadMediaFile(branch: string, file: UnpublishedEntryMediaFile) {
Expand Down
11 changes: 10 additions & 1 deletion packages/netlify-cms-lib-util/src/Cursor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,16 @@ const jsToMap = (obj: {}) => {
return immutableObj;
};

const knownMetaKeys = Set(['index', 'count', 'pageSize', 'pageCount', 'usingOldPaginationAPI']);
const knownMetaKeys = Set([
'index',
'count',
'pageSize',
'pageCount',
'usingOldPaginationAPI',
'extension',
'folder',
'depth',
]);
const filterUnknownMetaKeys = (meta: Map<string, string>) =>
meta.filter((_v, k) => knownMetaKeys.has(k as string));

Expand Down

0 comments on commit 0a482b1

Please sign in to comment.