Changes limit to take a cursor object — #91722

This commit is contained in:
Eric Amodio 2020-03-02 04:35:43 -05:00
parent 6f7c9f38b6
commit d1c1e27028
4 changed files with 14 additions and 8 deletions

View file

@ -114,9 +114,9 @@ export class GitTimelineProvider implements TimelineProvider {
// TODO[ECA]: Ensure that the uri is a file -- if not we could get the history of the repo?
let limit: number | undefined;
if (typeof options.limit === 'string') {
if (options.limit !== undefined && typeof options.limit !== 'number') {
try {
const result = await this._model.git.exec(repo.root, ['rev-list', '--count', `${options.limit}..`, '--', uri.fsPath]);
const result = await this._model.git.exec(repo.root, ['rev-list', '--count', `${options.limit.cursor}..`, '--', uri.fsPath]);
if (!result.exitCode) {
// Ask for 1 more than so we can determine if there are more commits
limit = Number(result.stdout) + 1;

View file

@ -1600,7 +1600,7 @@ declare module 'vscode' {
/**
* The maximum number or the ending cursor of timeline items that should be returned.
*/
limit?: number | string;
limit?: number | { cursor: string };
}
export interface TimelineProvider {

View file

@ -80,8 +80,8 @@ interface TimelineActionContext {
}
interface TimelineCursors {
startCursors?: { before: any; after?: any };
endCursors?: { before: any; after?: any };
startCursors?: { before: string; after?: string };
endCursors?: { before: string; after?: string };
more: boolean;
}
@ -308,7 +308,9 @@ export class TimelinePane extends ViewPane {
{
cursor: options.before ? cursors?.startCursors?.before : (cursors?.endCursors ?? cursors?.startCursors)?.after,
...options,
limit: options.limit === 0 ? undefined : options.limit ?? defaultPageSize
limit: options.limit === 0
? undefined
: options.limit ?? defaultPageSize
},
request?.tokenSource ?? new CancellationTokenSource(), { cacheResults: true, resetCache: false }
)!;
@ -329,7 +331,11 @@ export class TimelinePane extends ViewPane {
source, this._uri,
{
...options,
limit: options.limit === 0 ? undefined : (reset ? cursors?.endCursors?.after : undefined) ?? options.limit ?? defaultPageSize
limit: options.limit === 0
? undefined
: (reset && cursors?.endCursors?.after !== undefined
? { cursor: cursors.endCursors.after }
: undefined) ?? options.limit ?? defaultPageSize
},
new CancellationTokenSource(), { cacheResults: true, resetCache: true }
)!;

View file

@ -40,7 +40,7 @@ export interface TimelineChangeEvent {
export interface TimelineOptions {
cursor?: string;
before?: boolean;
limit?: number | string;
limit?: number | { cursor: string };
}
export interface InternalTimelineOptions {