SCM - 💄 fix property init order in scmHistoryViewPane.ts (#243069)

This commit is contained in:
Ladislau Szomoru
2025-03-10 13:23:53 +00:00
committed by GitHub
parent 50a7fe5744
commit 6306af46f0
3 changed files with 29 additions and 31 deletions

View File

@@ -206,7 +206,6 @@ const ignored = new Set([
'vs/platform/quickinput/browser/commandsQuickAccess.ts',
'vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.ts',
'vs/workbench/contrib/multiDiffEditor/browser/scmMultiDiffSourceResolver.ts',
'vs/workbench/contrib/scm/browser/scmHistoryViewPane.ts',
'vs/workbench/contrib/debug/browser/debugMemory.ts',
'vs/workbench/contrib/markers/browser/markersViewActions.ts',
'vs/workbench/contrib/mergeEditor/browser/view/viewZones.ts',

View File

@@ -175,7 +175,6 @@ const ignored = new Set([
'vs/platform/quickinput/browser/commandsQuickAccess.ts',
'vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.ts',
'vs/workbench/contrib/multiDiffEditor/browser/scmMultiDiffSourceResolver.ts',
'vs/workbench/contrib/scm/browser/scmHistoryViewPane.ts',
'vs/workbench/contrib/debug/browser/debugMemory.ts',
'vs/workbench/contrib/markers/browser/markersViewActions.ts',
'vs/workbench/contrib/mergeEditor/browser/view/viewZones.ts',

View File

@@ -318,7 +318,7 @@ class HistoryItemRenderer implements ITreeRenderer<SCMHistoryItemViewModelTreeEl
static readonly TEMPLATE_ID = 'history-item';
get templateId(): string { return HistoryItemRenderer.TEMPLATE_ID; }
private readonly _badgesConfig = observableConfigValue<'all' | 'filter'>('scm.graph.badges', 'filter', this._configurationService);
private readonly _badgesConfig: IObservable<'all' | 'filter'>;
constructor(
private readonly hoverDelegate: IHoverDelegate,
@@ -328,7 +328,9 @@ class HistoryItemRenderer implements ITreeRenderer<SCMHistoryItemViewModelTreeEl
@IHoverService private readonly _hoverService: IHoverService,
@IMenuService private readonly _menuService: IMenuService,
@IThemeService private readonly _themeService: IThemeService
) { }
) {
this._badgesConfig = observableConfigValue<'all' | 'filter'>('scm.graph.badges', 'filter', this._configurationService);
}
renderTemplate(container: HTMLElement): HistoryItemTemplate {
// hack
@@ -749,36 +751,13 @@ type RepositoryState = {
};
class SCMHistoryViewModel extends Disposable {
private readonly _closedRepository = observableFromEvent(
this,
this._scmService.onDidRemoveRepository,
repository => repository);
private readonly _firstRepository = this._scmService.repositoryCount > 0 ?
constObservable(Iterable.first(this._scmService.repositories)) :
observableFromEvent(
this,
Event.once(this._scmService.onDidAddRepository),
repository => repository
);
private readonly _selectedRepository = observableValue<'auto' | ISCMRepository>(this, 'auto');
private readonly _graphRepository = derived(reader => {
const selectedRepository = this._selectedRepository.read(reader);
if (selectedRepository !== 'auto') {
return selectedRepository;
}
return this._scmViewService.activeRepository.read(reader);
});
/**
* The active | selected repository takes precedence over the first repository when the observable
* values are updated in the same transaction (or during the initial read of the observable value).
*/
readonly repository = latestChangedValue(this, [this._firstRepository, this._graphRepository]);
readonly repository: IObservable<ISCMRepository | undefined>;
private readonly _selectedRepository = observableValue<'auto' | ISCMRepository>(this, 'auto');
readonly onDidChangeHistoryItemsFilter = observableSignal(this);
readonly isViewModelEmpty = observableValue(this, false);
@@ -804,9 +783,30 @@ class SCMHistoryViewModel extends Disposable {
this._scmHistoryItemCountCtx = ContextKeys.SCMHistoryItemCount.bindTo(this._contextKeyService);
const firstRepository = this._scmService.repositoryCount > 0
? constObservable(Iterable.first(this._scmService.repositories))
: observableFromEvent(this,
Event.once(this._scmService.onDidAddRepository),
repository => repository);
const graphRepository = derived(reader => {
const selectedRepository = this._selectedRepository.read(reader);
if (selectedRepository !== 'auto') {
return selectedRepository;
}
return this._scmViewService.activeRepository.read(reader);
});
this.repository = latestChangedValue(this, [firstRepository, graphRepository]);
const closedRepository = observableFromEvent(this,
this._scmService.onDidRemoveRepository,
repository => repository);
// Closed repository cleanup
this._register(autorun(reader => {
const repository = this._closedRepository.read(reader);
const repository = closedRepository.read(reader);
if (!repository) {
return;
}