bugfix:修复配置文件不符合要求导致整个插件崩溃的bug
This commit is contained in:
parent
46115bcfba
commit
fe2a7c68cb
@ -9,6 +9,7 @@ interface Entity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const dbConnections: Record<string, any> = {};
|
const dbConnections: Record<string, any> = {};
|
||||||
|
const DatastoreCtor = Datastore as unknown as { new(options: any): any };
|
||||||
|
|
||||||
export class LocalDB<T extends Entity> {
|
export class LocalDB<T extends Entity> {
|
||||||
private db: any;
|
private db: any;
|
||||||
@ -28,7 +29,7 @@ export class LocalDB<T extends Entity> {
|
|||||||
const filename = path.join(dbPath, `${this.tableName}.db`);
|
const filename = path.join(dbPath, `${this.tableName}.db`);
|
||||||
|
|
||||||
if (!dbConnections[filename]) {
|
if (!dbConnections[filename]) {
|
||||||
dbConnections[filename] = new Datastore.default({
|
dbConnections[filename] = new DatastoreCtor({
|
||||||
filename,
|
filename,
|
||||||
autoload: true,
|
autoload: true,
|
||||||
timestampData: true
|
timestampData: true
|
||||||
|
@ -16,21 +16,33 @@ export class McpWorkspaceConnectProvider implements vscode.TreeDataProvider<Conn
|
|||||||
getTreeItem(element: ConnectionViewItem): vscode.TreeItem {
|
getTreeItem(element: ConnectionViewItem): vscode.TreeItem {
|
||||||
return element;
|
return element;
|
||||||
}
|
}
|
||||||
|
|
||||||
getChildren(element?: ConnectionViewItem): Thenable<ConnectionViewItem[]> {
|
getChildren(element?: ConnectionViewItem): Thenable<ConnectionViewItem[]> {
|
||||||
// TODO: 读取 configDir 下的所有文件,作为子节点
|
// TODO: 读取 configDir 下的所有文件,作为子节点
|
||||||
const connection = getWorkspaceConnectionConfig();
|
const connection = getWorkspaceConnectionConfig();
|
||||||
const sidebarItems = connection.items.map((item, index) => {
|
|
||||||
|
// 校验 connection 和 connection.items
|
||||||
|
if (!connection || !Array.isArray(connection.items)) {
|
||||||
|
return Promise.resolve([]);
|
||||||
|
}
|
||||||
|
|
||||||
|
const sidebarItems = connection.items
|
||||||
|
.filter(item => item !== null && item !== undefined)
|
||||||
|
.map((item, index) => {
|
||||||
// 连接的名字
|
// 连接的名字
|
||||||
const nItem = Array.isArray(item) ? item[0] : item;
|
const nItem = Array.isArray(item) ? item[0] : item;
|
||||||
const itemName = `${nItem.name} (${nItem.type || nItem.connectionType})`
|
if (!nItem || typeof nItem !== 'object') {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
const name = nItem.name || '未命名';
|
||||||
|
const type = nItem.type || nItem.connectionType || '未知类型';
|
||||||
|
const itemName = `${name} (${type})`;
|
||||||
return new ConnectionViewItem(itemName, vscode.TreeItemCollapsibleState.None, item, 'server');
|
return new ConnectionViewItem(itemName, vscode.TreeItemCollapsibleState.None, item, 'server');
|
||||||
})
|
})
|
||||||
|
.filter(Boolean) as ConnectionViewItem[]; // 过滤掉为 null 的项
|
||||||
|
|
||||||
// 返回子节点
|
// 返回子节点
|
||||||
return Promise.resolve(sidebarItems);
|
return Promise.resolve(sidebarItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RegisterCommand('revealWebviewPanel')
|
@RegisterCommand('revealWebviewPanel')
|
||||||
public revealWebviewPanel(context: vscode.ExtensionContext, view: ConnectionViewItem) {
|
public revealWebviewPanel(context: vscode.ExtensionContext, view: ConnectionViewItem) {
|
||||||
const item = view.item;
|
const item = view.item;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user