SCM - consistent fallback for count calculation (#214337)

This commit is contained in:
Ladislau Szomoru 2024-06-05 16:35:59 +02:00 committed by GitHub
parent ab9a1286f2
commit af675232d0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 8 additions and 7 deletions

View file

@ -21,13 +21,10 @@ import { Iterable } from 'vs/base/common/iterator';
import { ITitleService } from 'vs/workbench/services/title/browser/titleService';
import { IEditorGroupContextKeyProvider, IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService';
import { EditorInput } from 'vs/workbench/common/editor/editorInput';
import { getRepositoryResourceCount } from 'vs/workbench/contrib/scm/browser/util';
function getCount(repository: ISCMRepository): number {
if (typeof repository.provider.count === 'number') {
return repository.provider.count;
} else {
return repository.provider.groups.reduce<number>((r, g) => r + g.resources.length, 0);
}
return repository.provider.count ?? getRepositoryResourceCount(repository.provider);
}
export class SCMStatusController implements IWorkbenchContribution {

View file

@ -12,7 +12,7 @@ import { CountBadge } from 'vs/base/browser/ui/countBadge/countBadge';
import { IContextMenuService } from 'vs/platform/contextview/browser/contextView';
import { ICommandService } from 'vs/platform/commands/common/commands';
import { ActionRunner, IAction } from 'vs/base/common/actions';
import { connectPrimaryMenu, isSCMRepository, StatusBarAction } from './util';
import { connectPrimaryMenu, getRepositoryResourceCount, isSCMRepository, StatusBarAction } from './util';
import { ITreeNode } from 'vs/base/browser/ui/tree/tree';
import { ICompressibleTreeRenderer } from 'vs/base/browser/ui/tree/objectTree';
import { FuzzyScore } from 'vs/base/common/filters';
@ -117,7 +117,7 @@ export class RepositoryRenderer implements ICompressibleTreeRenderer<ISCMReposit
}));
templateData.elementDisposables.add(autorun(reader => {
const count = repository.provider.countObs.read(reader) ?? 0;
const count = repository.provider.countObs.read(reader) ?? getRepositoryResourceCount(repository.provider);
templateData.countContainer.setAttribute('data-count', String(count));
templateData.count.setCount(count);
}));

View file

@ -173,3 +173,7 @@ export function getActionViewItemProvider(instaService: IInstantiationService):
export function getProviderKey(provider: ISCMProvider): string {
return `${provider.contextValue}:${provider.label}${provider.rootUri ? `:${provider.rootUri.toString()}` : ''}`;
}
export function getRepositoryResourceCount(provider: ISCMProvider): number {
return provider.groups.reduce<number>((r, g) => r + g.resources.length, 0);
}