Skip to content

Commit 033c718

Browse files
author
seantan22
committed
Refactor SCM View Mode Type
What It Does Creates new type for SCM view mode and refactors accordingly. Signed-off-by: seantan22 <[email protected]>
1 parent d15f83a commit 033c718

File tree

7 files changed

+28
-23
lines changed

7 files changed

+28
-23
lines changed

packages/git/src/browser/diff/git-diff-widget.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import { GitDiffHeaderWidget } from './git-diff-header-widget';
2525
import { ScmService } from '@theia/scm/lib/browser/scm-service';
2626
import { GitRepositoryProvider } from '../git-repository-provider';
2727
import { ScmTreeWidget } from '@theia/scm/lib/browser/scm-tree-widget';
28-
import { ScmPreferences, ScmConfiguration } from '@theia/scm/lib/browser/scm-preferences';
28+
import { ScmPreferences, ScmConfiguration, ScmViewMode } from '@theia/scm/lib/browser/scm-preferences';
2929

3030
/* eslint-disable @typescript-eslint/no-explicit-any */
3131

@@ -78,15 +78,15 @@ export class GitDiffWidget extends BaseWidget implements StatefulWidget {
7878
this.updateViewMode(this.scmPreferences.get('scm.defaultViewMode'));
7979
this.toDispose.push(this.scmPreferences.onPreferenceChanged((e: PreferenceChangeEvent<ScmConfiguration>) => {
8080
if (e.preferenceName === 'scm.defaultViewMode') {
81-
this.updateViewMode(e.newValue!);
81+
this.updateViewMode(e.newValue as ScmViewMode);
8282
}
8383
}));
8484
}
8585

86-
set viewMode(mode: 'tree' | 'list') {
86+
set viewMode(mode: ScmViewMode) {
8787
this.resourceWidget.viewMode = mode;
8888
}
89-
get viewMode(): 'tree' | 'list' {
89+
get viewMode(): ScmViewMode {
9090
return this.resourceWidget.viewMode;
9191
}
9292

@@ -104,7 +104,7 @@ export class GitDiffWidget extends BaseWidget implements StatefulWidget {
104104
* Updates the view mode based on the preference value.
105105
* @param preference the view mode preference.
106106
*/
107-
protected updateViewMode(preference: 'tree' | 'list'): void {
107+
protected updateViewMode(preference: ScmViewMode): void {
108108
this.viewMode = preference;
109109
}
110110

packages/git/src/browser/history/git-commit-detail-widget.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import { GitCommitDetailHeaderWidget } from './git-commit-detail-header-widget';
2626
import { ScmService } from '@theia/scm/lib/browser/scm-service';
2727
import { GitDiffTreeModel } from '../diff/git-diff-tree-model';
2828
import { ScmTreeWidget } from '@theia/scm/lib/browser/scm-tree-widget';
29-
import { ScmPreferences, ScmConfiguration } from '@theia/scm/lib/browser/scm-preferences';
29+
import { ScmPreferences, ScmConfiguration, ScmViewMode } from '@theia/scm/lib/browser/scm-preferences';
3030

3131
@injectable()
3232
export class GitCommitDetailWidget extends BaseWidget implements StatefulWidget {
@@ -39,10 +39,10 @@ export class GitCommitDetailWidget extends BaseWidget implements StatefulWidget
3939
@inject(GitDiffTreeModel) protected readonly model: GitDiffTreeModel;
4040
@inject(ScmPreferences) protected readonly scmPreferences: ScmPreferences;
4141

42-
set viewMode(mode: 'tree' | 'list') {
42+
set viewMode(mode: ScmViewMode) {
4343
this.resourceWidget.viewMode = mode;
4444
}
45-
get viewMode(): 'tree' | 'list' {
45+
get viewMode(): ScmViewMode {
4646
return this.resourceWidget.viewMode;
4747
}
4848

@@ -78,7 +78,7 @@ export class GitCommitDetailWidget extends BaseWidget implements StatefulWidget
7878
this.updateViewMode(this.scmPreferences.get('scm.defaultViewMode'));
7979
this.toDispose.push(this.scmPreferences.onPreferenceChanged((e: PreferenceChangeEvent<ScmConfiguration>) => {
8080
if (e.preferenceName === 'scm.defaultViewMode') {
81-
this.updateViewMode(e.newValue!);
81+
this.updateViewMode(e.newValue as ScmViewMode);
8282
}
8383
}));
8484

@@ -99,7 +99,7 @@ export class GitCommitDetailWidget extends BaseWidget implements StatefulWidget
9999
* Updates the view mode based on the preference value.
100100
* @param preference the view mode preference.
101101
*/
102-
protected updateViewMode(preference: 'tree' | 'list'): void {
102+
protected updateViewMode(preference: ScmViewMode): void {
103103
this.viewMode = preference;
104104
}
105105

packages/scm/src/browser/scm-contribution.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import { ScmQuickOpenService } from './scm-quick-open-service';
3737
import { ColorContribution } from '@theia/core/lib/browser/color-application-contribution';
3838
import { ColorRegistry, Color } from '@theia/core/lib/browser/color-registry';
3939
import { ScmCommand } from './scm-provider';
40+
import { ScmViewMode } from './scm-preferences';
4041

4142
export const SCM_WIDGET_FACTORY_ID = ScmWidget.ID;
4243
export const SCM_VIEW_CONTAINER_ID = 'scm-view-container';
@@ -159,7 +160,7 @@ export class ScmContribution extends AbstractViewContribution<ScmWidget> impleme
159160
}
160161
}
161162
};
162-
const registerToggleViewItem = (command: Command, mode: 'tree' | 'list') => {
163+
const registerToggleViewItem = (command: Command, mode: ScmViewMode) => {
163164
const id = command.id;
164165
const item: TabBarToolbarItem = {
165166
id,
@@ -231,7 +232,7 @@ export class ScmContribution extends AbstractViewContribution<ScmWidget> impleme
231232
if (!repository) {
232233
return undefined;
233234
}
234-
return repository.provider.acceptInputCommand;
235+
return repository.provider.acceptInputCommand;
235236
}
236237

237238
protected readonly statusBarDisposable = new DisposableCollection();

packages/scm/src/browser/scm-preferences.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ import {
2323
PreferenceContribution
2424
} from '@theia/core/lib/browser/preferences';
2525

26+
export type ScmViewMode = 'tree' | 'list';
27+
2628
export const scmPreferenceSchema: PreferenceSchema = {
2729
type: 'object',
2830
properties: {
@@ -45,7 +47,7 @@ export const scmPreferenceSchema: PreferenceSchema = {
4547
};
4648

4749
export interface ScmConfiguration {
48-
'scm.defaultViewMode': 'tree' | 'list';
50+
'scm.defaultViewMode': ScmViewMode;
4951
'scm.decorations.badges': boolean;
5052
}
5153

packages/scm/src/browser/scm-tree-model.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { TreeModelImpl, TreeNode, TreeProps, CompositeTreeNode, SelectableTreeNo
1919
import URI from '@theia/core/lib/common/uri';
2020
import { ScmProvider, ScmResourceGroup, ScmResource, ScmResourceDecorations } from './scm-provider';
2121
import { ScmContextKeyService } from './scm-context-key-service';
22+
import { ScmViewMode } from './scm-preferences';
2223

2324
export const ScmTreeModelProps = Symbol('ScmTreeModelProps');
2425
export interface ScmTreeModelProps {
@@ -94,8 +95,8 @@ export abstract class ScmTreeModel extends TreeModelImpl {
9495

9596
abstract canTabToWidget(): boolean;
9697

97-
protected _viewMode: 'tree' | 'list' = 'list';
98-
set viewMode(id: 'tree' | 'list') {
98+
protected _viewMode: ScmViewMode = 'list';
99+
set viewMode(id: ScmViewMode) {
99100
const oldSelection = this.selectedNodes;
100101
this._viewMode = id;
101102
if (this.root) {
@@ -109,7 +110,7 @@ export abstract class ScmTreeModel extends TreeModelImpl {
109110
}
110111
}
111112
}
112-
get viewMode(): 'tree' | 'list' {
113+
get viewMode(): ScmViewMode {
113114
return this._viewMode;
114115
}
115116

packages/scm/src/browser/scm-tree-widget.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import { EditorManager, DiffNavigatorProvider } from '@theia/editor/lib/browser'
3333
import { FileStat } from '@theia/filesystem/lib/common';
3434
import { IconThemeService } from '@theia/core/lib/browser/icon-theme-service';
3535
import { ScmFileChangeRootNode, ScmFileChangeGroupNode, ScmFileChangeFolderNode, ScmFileChangeNode } from './scm-tree-model';
36+
import { ScmViewMode } from './scm-preferences';
3637

3738
@injectable()
3839
export class ScmTreeWidget extends TreeWidget {
@@ -69,13 +70,13 @@ export class ScmTreeWidget extends TreeWidget {
6970
this.model = treeModel as ScmTreeModel;
7071
}
7172

72-
set viewMode(id: 'tree' | 'list') {
73+
set viewMode(id: ScmViewMode) {
7374
// Close the search box because the structure of the tree will change dramatically
7475
// and the search results will be out of date.
7576
this.searchBox.hide();
7677
this.model.viewMode = id;
7778
}
78-
get viewMode(): 'tree' | 'list' {
79+
get viewMode(): ScmViewMode {
7980
return this.model.viewMode;
8081
}
8182

packages/scm/src/browser/scm-widget.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import { ScmAmendWidget } from './scm-amend-widget';
2727
import { ScmNoRepositoryWidget } from './scm-no-repository-widget';
2828
import { ScmService } from './scm-service';
2929
import { ScmTreeWidget } from './scm-tree-widget';
30-
import { ScmPreferences, ScmConfiguration } from './scm-preferences';
30+
import { ScmPreferences, ScmConfiguration, ScmViewMode } from './scm-preferences';
3131

3232
@injectable()
3333
export class ScmWidget extends BaseWidget implements StatefulWidget {
@@ -43,10 +43,10 @@ export class ScmWidget extends BaseWidget implements StatefulWidget {
4343
@inject(ScmNoRepositoryWidget) readonly noRepositoryWidget: ScmNoRepositoryWidget;
4444
@inject(ScmPreferences) protected readonly scmPreferences: ScmPreferences;
4545

46-
set viewMode(mode: 'tree' | 'list') {
46+
set viewMode(mode: ScmViewMode) {
4747
this.resourceWidget.viewMode = mode;
4848
}
49-
get viewMode(): 'tree' | 'list' {
49+
get viewMode(): ScmViewMode {
5050
return this.resourceWidget.viewMode;
5151
}
5252

@@ -80,7 +80,7 @@ export class ScmWidget extends BaseWidget implements StatefulWidget {
8080
this.updateViewMode(this.scmPreferences.get('scm.defaultViewMode'));
8181
this.toDispose.push(this.scmPreferences.onPreferenceChanged((e: PreferenceChangeEvent<ScmConfiguration>) => {
8282
if (e.preferenceName === 'scm.defaultViewMode') {
83-
this.updateViewMode(e.newValue!);
83+
this.updateViewMode(e.newValue as ScmViewMode);
8484
}
8585
}));
8686
}
@@ -93,7 +93,7 @@ export class ScmWidget extends BaseWidget implements StatefulWidget {
9393
* Updates the view mode based on the preference value.
9494
* @param preference the view mode preference.
9595
*/
96-
protected updateViewMode(preference: 'tree' | 'list'): void {
96+
protected updateViewMode(preference: ScmViewMode): void {
9797
this.viewMode = preference;
9898
}
9999

0 commit comments

Comments
 (0)