Skip to content

Commit 35a49b0

Browse files
authored
Merge pull request #1923 from github/charisk/db-item-expansion-tidy
Some small refactorings around db item expansion
2 parents 5e864ae + a82f40f commit 35a49b0

6 files changed

Lines changed: 135 additions & 135 deletions

File tree

extensions/ql-vscode/src/databases/config/db-config.ts

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -87,37 +87,6 @@ export interface LocalDatabase {
8787
storagePath: string;
8888
}
8989

90-
export type ExpandedDbItem =
91-
| RootLocalExpandedDbItem
92-
| LocalUserDefinedListExpandedDbItem
93-
| RootRemoteExpandedDbItem
94-
| RemoteUserDefinedListExpandedDbItem;
95-
96-
export enum ExpandedDbItemKind {
97-
RootLocal = "rootLocal",
98-
LocalUserDefinedList = "localUserDefinedList",
99-
RootRemote = "rootRemote",
100-
RemoteUserDefinedList = "remoteUserDefinedList",
101-
}
102-
103-
export interface RootLocalExpandedDbItem {
104-
kind: ExpandedDbItemKind.RootLocal;
105-
}
106-
107-
export interface LocalUserDefinedListExpandedDbItem {
108-
kind: ExpandedDbItemKind.LocalUserDefinedList;
109-
listName: string;
110-
}
111-
112-
export interface RootRemoteExpandedDbItem {
113-
kind: ExpandedDbItemKind.RootRemote;
114-
}
115-
116-
export interface RemoteUserDefinedListExpandedDbItem {
117-
kind: ExpandedDbItemKind.RemoteUserDefinedList;
118-
listName: string;
119-
}
120-
12190
export function cloneDbConfig(config: DbConfig): DbConfig {
12291
return {
12392
databases: {

extensions/ql-vscode/src/databases/db-item-expansion.ts

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,37 @@
1-
import { ExpandedDbItem, ExpandedDbItemKind } from "./config/db-config";
21
import { DbItem, DbItemKind } from "./db-item";
32

4-
export function calculateNewExpandedState(
3+
export type ExpandedDbItem =
4+
| RootLocalExpandedDbItem
5+
| LocalUserDefinedListExpandedDbItem
6+
| RootRemoteExpandedDbItem
7+
| RemoteUserDefinedListExpandedDbItem;
8+
9+
export enum ExpandedDbItemKind {
10+
RootLocal = "rootLocal",
11+
LocalUserDefinedList = "localUserDefinedList",
12+
RootRemote = "rootRemote",
13+
RemoteUserDefinedList = "remoteUserDefinedList",
14+
}
15+
16+
export interface RootLocalExpandedDbItem {
17+
kind: ExpandedDbItemKind.RootLocal;
18+
}
19+
20+
export interface LocalUserDefinedListExpandedDbItem {
21+
kind: ExpandedDbItemKind.LocalUserDefinedList;
22+
listName: string;
23+
}
24+
25+
export interface RootRemoteExpandedDbItem {
26+
kind: ExpandedDbItemKind.RootRemote;
27+
}
28+
29+
export interface RemoteUserDefinedListExpandedDbItem {
30+
kind: ExpandedDbItemKind.RemoteUserDefinedList;
31+
listName: string;
32+
}
33+
34+
export function updateItemInExpandedState(
535
currentExpandedItems: ExpandedDbItem[],
636
dbItem: DbItem,
737
itemExpanded: boolean,

extensions/ql-vscode/src/databases/db-manager.ts

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import { App } from "../common/app";
22
import { AppEvent, AppEventEmitter } from "../common/events";
33
import { ValueResult } from "../common/value-result";
4-
import { ExpandedDbItem } from "./config/db-config";
54
import { DbConfigStore } from "./config/db-config-store";
65
import { DbItem, DbListKind } from "./db-item";
7-
import { calculateNewExpandedState } from "./db-item-expansion";
6+
import { updateItemInExpandedState, ExpandedDbItem } from "./db-item-expansion";
87
import {
98
getSelectedDbItem,
109
mapDbItemToSelectedDbItem,
@@ -45,7 +44,7 @@ export class DbManager {
4544
return ValueResult.fail(configResult.errors);
4645
}
4746

48-
const expandedItems = this.getCurrentExpandedItems();
47+
const expandedItems = this.getExpandedItems();
4948

5049
return ValueResult.ok([
5150
createRemoteTree(configResult.value, expandedItems),
@@ -68,23 +67,15 @@ export class DbManager {
6867
dbItem: DbItem,
6968
itemExpanded: boolean,
7069
): Promise<void> {
71-
const configResult = this.dbConfigStore.getConfig();
72-
if (configResult.isFailure) {
73-
throw Error("Cannot update expanded state if config is not loaded");
74-
}
70+
const currentExpandedItems = this.getExpandedItems();
7571

76-
const currentExpandedItems = this.getCurrentExpandedItems();
77-
78-
const newExpandedItems = calculateNewExpandedState(
72+
const newExpandedItems = updateItemInExpandedState(
7973
currentExpandedItems,
8074
dbItem,
8175
itemExpanded,
8276
);
8377

84-
await this.app.workspaceState.update(
85-
DbManager.DB_EXPANDED_STATE_KEY,
86-
newExpandedItems,
87-
);
78+
await this.setExpandedItems(newExpandedItems);
8879
}
8980

9081
public async addNewRemoteRepo(
@@ -133,11 +124,18 @@ export class DbManager {
133124
return this.dbConfigStore.doesRemoteDbExist(nwo, listName);
134125
}
135126

136-
private getCurrentExpandedItems(): ExpandedDbItem[] {
127+
private getExpandedItems(): ExpandedDbItem[] {
137128
const items = this.app.workspaceState.get<ExpandedDbItem[]>(
138129
DbManager.DB_EXPANDED_STATE_KEY,
139130
);
140131

141132
return items || [];
142133
}
134+
135+
private async setExpandedItems(items: ExpandedDbItem[]): Promise<void> {
136+
await this.app.workspaceState.update(
137+
DbManager.DB_EXPANDED_STATE_KEY,
138+
items,
139+
);
140+
}
143141
}

extensions/ql-vscode/src/databases/db-tree-creator.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import {
22
DbConfig,
3-
ExpandedDbItem,
4-
ExpandedDbItemKind,
53
LocalDatabase,
64
LocalList,
75
RemoteRepositoryList,
@@ -18,6 +16,7 @@ import {
1816
RootLocalDbItem,
1917
RootRemoteDbItem,
2018
} from "./db-item";
19+
import { ExpandedDbItem, ExpandedDbItemKind } from "./db-item-expansion";
2120

2221
export function createRemoteTree(
2322
dbConfig: DbConfig,
Lines changed: 85 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,109 +1,111 @@
1-
import {
2-
ExpandedDbItem,
3-
ExpandedDbItemKind,
4-
} from "../../../src/databases/config/db-config";
51
import {
62
RemoteUserDefinedListDbItem,
73
RootRemoteDbItem,
84
} from "../../../src/databases/db-item";
9-
import { calculateNewExpandedState } from "../../../src/databases/db-item-expansion";
5+
import {
6+
updateItemInExpandedState,
7+
ExpandedDbItem,
8+
ExpandedDbItemKind,
9+
} from "../../../src/databases/db-item-expansion";
1010
import {
1111
createRemoteUserDefinedListDbItem,
1212
createRootRemoteDbItem,
1313
} from "../../factories/db-item-factories";
1414

1515
describe("db item expansion", () => {
16-
it("should add an expanded item to an existing list", () => {
17-
const currentExpandedItems: ExpandedDbItem[] = [
18-
{
19-
kind: ExpandedDbItemKind.RootRemote,
20-
},
21-
{
22-
kind: ExpandedDbItemKind.RemoteUserDefinedList,
23-
listName: "list1",
24-
},
25-
];
16+
describe("updateItemInExpandedState", () => {
17+
it("should add an expanded item to an existing list", () => {
18+
const currentExpandedItems: ExpandedDbItem[] = [
19+
{
20+
kind: ExpandedDbItemKind.RootRemote,
21+
},
22+
{
23+
kind: ExpandedDbItemKind.RemoteUserDefinedList,
24+
listName: "list1",
25+
},
26+
];
2627

27-
const dbItem: RemoteUserDefinedListDbItem =
28-
createRemoteUserDefinedListDbItem({
29-
listName: "list2",
30-
});
28+
const dbItem: RemoteUserDefinedListDbItem =
29+
createRemoteUserDefinedListDbItem({
30+
listName: "list2",
31+
});
3132

32-
const newExpandedItems = calculateNewExpandedState(
33-
currentExpandedItems,
34-
dbItem,
35-
true,
36-
);
33+
const newExpandedItems = updateItemInExpandedState(
34+
currentExpandedItems,
35+
dbItem,
36+
true,
37+
);
3738

38-
expect(newExpandedItems).toEqual([
39-
...currentExpandedItems,
40-
{
41-
kind: ExpandedDbItemKind.RemoteUserDefinedList,
42-
listName: "list2",
43-
},
44-
]);
45-
});
39+
expect(newExpandedItems).toEqual([
40+
...currentExpandedItems,
41+
{
42+
kind: ExpandedDbItemKind.RemoteUserDefinedList,
43+
listName: "list2",
44+
},
45+
]);
46+
});
4647

47-
it("should add an expanded item to an empty list", () => {
48-
const dbItem: RemoteUserDefinedListDbItem =
49-
createRemoteUserDefinedListDbItem({
50-
listName: "list2",
51-
});
48+
it("should add an expanded item to an empty list", () => {
49+
const dbItem: RemoteUserDefinedListDbItem =
50+
createRemoteUserDefinedListDbItem({
51+
listName: "list2",
52+
});
5253

53-
const newExpandedItems = calculateNewExpandedState([], dbItem, true);
54+
const newExpandedItems = updateItemInExpandedState([], dbItem, true);
5455

55-
expect(newExpandedItems).toEqual([
56-
{
57-
kind: ExpandedDbItemKind.RemoteUserDefinedList,
58-
listName: "list2",
59-
},
60-
]);
61-
});
56+
expect(newExpandedItems).toEqual([
57+
{
58+
kind: ExpandedDbItemKind.RemoteUserDefinedList,
59+
listName: "list2",
60+
},
61+
]);
62+
});
6263

63-
it("should remove a collapsed item from a list", () => {
64-
const currentExpandedItems: ExpandedDbItem[] = [
65-
{
66-
kind: ExpandedDbItemKind.RootRemote,
67-
},
68-
{
69-
kind: ExpandedDbItemKind.RemoteUserDefinedList,
70-
listName: "list1",
71-
},
72-
];
64+
it("should remove a collapsed item from a list", () => {
65+
const currentExpandedItems: ExpandedDbItem[] = [
66+
{
67+
kind: ExpandedDbItemKind.RootRemote,
68+
},
69+
{
70+
kind: ExpandedDbItemKind.RemoteUserDefinedList,
71+
listName: "list1",
72+
},
73+
];
7374

74-
const dbItem: RemoteUserDefinedListDbItem =
75-
createRemoteUserDefinedListDbItem({
76-
listName: "list1",
77-
});
75+
const dbItem: RemoteUserDefinedListDbItem =
76+
createRemoteUserDefinedListDbItem({
77+
listName: "list1",
78+
});
7879

79-
const newExpandedItems = calculateNewExpandedState(
80-
currentExpandedItems,
81-
dbItem,
82-
false,
83-
);
80+
const newExpandedItems = updateItemInExpandedState(
81+
currentExpandedItems,
82+
dbItem,
83+
false,
84+
);
8485

85-
expect(newExpandedItems).toEqual([
86-
{
87-
kind: ExpandedDbItemKind.RootRemote,
88-
},
89-
]);
90-
});
86+
expect(newExpandedItems).toEqual([
87+
{
88+
kind: ExpandedDbItemKind.RootRemote,
89+
},
90+
]);
91+
});
9192

92-
it("should remove a collapsed item from a list that becomes empty", () => {
93-
const currentExpandedItems: ExpandedDbItem[] = [
94-
{
95-
kind: ExpandedDbItemKind.RootRemote,
96-
},
97-
];
93+
it("should remove a collapsed item from a list that becomes empty", () => {
94+
const currentExpandedItems: ExpandedDbItem[] = [
95+
{
96+
kind: ExpandedDbItemKind.RootRemote,
97+
},
98+
];
9899

99-
const dbItem: RootRemoteDbItem = createRootRemoteDbItem();
100+
const dbItem: RootRemoteDbItem = createRootRemoteDbItem();
100101

101-
const newExpandedItems = calculateNewExpandedState(
102-
currentExpandedItems,
103-
dbItem,
104-
false,
105-
);
102+
const newExpandedItems = updateItemInExpandedState(
103+
currentExpandedItems,
104+
dbItem,
105+
false,
106+
);
106107

107-
expect(newExpandedItems).toEqual([]);
108+
expect(newExpandedItems).toEqual([]);
109+
});
108110
});
109111
});

extensions/ql-vscode/test/unit-tests/databases/db-tree-creator.test.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import {
22
DbConfig,
3-
ExpandedDbItem,
4-
ExpandedDbItemKind,
53
SelectedDbItemKind,
64
} from "../../../src/databases/config/db-config";
75
import {
@@ -10,6 +8,10 @@ import {
108
isRemoteRepoDbItem,
119
isRemoteUserDefinedListDbItem,
1210
} from "../../../src/databases/db-item";
11+
import {
12+
ExpandedDbItem,
13+
ExpandedDbItemKind,
14+
} from "../../../src/databases/db-item-expansion";
1315
import {
1416
createLocalTree,
1517
createRemoteTree,

0 commit comments

Comments
 (0)