From b9740fe582a41920b5920dbe54b475a7eac2d0b9 Mon Sep 17 00:00:00 2001 From: Nora Date: Wed, 11 Jan 2023 10:55:27 +0000 Subject: [PATCH 1/4] Use individual functions for add and remove from expanded state --- .../ql-vscode/src/databases/db-manager.ts | 36 +++++++++++-------- .../ql-vscode/src/databases/ui/db-panel.ts | 4 +-- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/extensions/ql-vscode/src/databases/db-manager.ts b/extensions/ql-vscode/src/databases/db-manager.ts index 88f481b8ed8..b4532b5b30a 100644 --- a/extensions/ql-vscode/src/databases/db-manager.ts +++ b/extensions/ql-vscode/src/databases/db-manager.ts @@ -78,24 +78,15 @@ export class DbManager { public async removeDbItem(dbItem: DbItem): Promise { await this.dbConfigStore.removeDbItem(dbItem); - // Updating the expanded items takes care of cleaning up - // any non-existent items. - await this.updateExpandedItems(this.getExpandedItems()); + await this.removeDbItemFromExpandedState(dbItem); } - public async updateDbItemExpandedState( - dbItem: DbItem, - itemExpanded: boolean, - ): Promise { - const currentExpandedItems = this.getExpandedItems(); - - const newExpandedItems = updateExpandedItem( - currentExpandedItems, - dbItem, - itemExpanded, - ); + public async removeDbItemFromExpandedState(dbItem: DbItem): Promise { + await this.updateDbItemExpandedState(dbItem, false); + } - await this.updateExpandedItems(newExpandedItems); + public async addDbItemToExpandedState(dbItem: DbItem): Promise { + await this.updateDbItemExpandedState(dbItem, true); } public async addNewRemoteRepo( @@ -214,4 +205,19 @@ export class DbManager { await this.setExpandedItems(itemsToStore); } + + private async updateDbItemExpandedState( + dbItem: DbItem, + itemExpanded: boolean, + ): Promise { + const currentExpandedItems = this.getExpandedItems(); + + const newExpandedItems = updateExpandedItem( + currentExpandedItems, + dbItem, + itemExpanded, + ); + + await this.updateExpandedItems(newExpandedItems); + } } diff --git a/extensions/ql-vscode/src/databases/ui/db-panel.ts b/extensions/ql-vscode/src/databases/ui/db-panel.ts index ff0cca48f81..95af7f0a206 100644 --- a/extensions/ql-vscode/src/databases/ui/db-panel.ts +++ b/extensions/ql-vscode/src/databases/ui/db-panel.ts @@ -386,7 +386,7 @@ export class DbPanel extends DisposableObject { throw Error("Expected a database item."); } - await this.dbManager.updateDbItemExpandedState(event.element.dbItem, false); + await this.dbManager.removeDbItemFromExpandedState(event.element.dbItem); } private async onDidExpandElement( @@ -397,7 +397,7 @@ export class DbPanel extends DisposableObject { throw Error("Expected a database item."); } - await this.dbManager.updateDbItemExpandedState(event.element.dbItem, true); + await this.dbManager.addDbItemToExpandedState(event.element.dbItem); } /** From c36da4ba7e0db9bf61e3a0a10507c5e0a3ed4a01 Mon Sep 17 00:00:00 2001 From: Nora Date: Wed, 11 Jan 2023 11:11:45 +0000 Subject: [PATCH 2/4] Rename arguments --- .../src/databases/db-item-expansion.ts | 4 ++-- .../ql-vscode/src/databases/db-manager.ts | 21 ++++++++++++------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/extensions/ql-vscode/src/databases/db-item-expansion.ts b/extensions/ql-vscode/src/databases/db-item-expansion.ts index 8b7401462b8..b24551cae5e 100644 --- a/extensions/ql-vscode/src/databases/db-item-expansion.ts +++ b/extensions/ql-vscode/src/databases/db-item-expansion.ts @@ -34,9 +34,9 @@ export interface RemoteUserDefinedListExpandedDbItem { export function updateExpandedItem( currentExpandedItems: ExpandedDbItem[], dbItem: DbItem, - itemExpanded: boolean, + addItem: boolean, ): ExpandedDbItem[] { - if (itemExpanded) { + if (addItem) { const expandedDbItem = mapDbItemToExpandedDbItem(dbItem); const expandedItems = [...currentExpandedItems]; if (!expandedItems.some((i) => isDbItemEqualToExpandedDbItem(dbItem, i))) { diff --git a/extensions/ql-vscode/src/databases/db-manager.ts b/extensions/ql-vscode/src/databases/db-manager.ts index b4532b5b30a..f3bf3968c91 100644 --- a/extensions/ql-vscode/src/databases/db-manager.ts +++ b/extensions/ql-vscode/src/databases/db-manager.ts @@ -185,22 +185,27 @@ export class DbManager { ); } - private async updateExpandedItems(items: ExpandedDbItem[]): Promise { + private async updateExpandedItems( + newExpandedItems: ExpandedDbItem[], + ): Promise { let itemsToStore; - const dbItemsResult = this.getDbItems(); + const dbItems = this.getDbItems(); - if (dbItemsResult.isFailure) { + if (dbItems.isFailure) { // Log an error but don't throw an exception since if the db items are failing // to be read, then there is a bigger problem than the expanded state. void this.app.logger.log( `Could not read db items when calculating expanded state: ${JSON.stringify( - dbItemsResult.errors, + dbItems.errors, )}`, ); - itemsToStore = items; + itemsToStore = newExpandedItems; } else { - itemsToStore = cleanNonExistentExpandedItems(items, dbItemsResult.value); + itemsToStore = cleanNonExistentExpandedItems( + newExpandedItems, + dbItems.value, + ); } await this.setExpandedItems(itemsToStore); @@ -208,14 +213,14 @@ export class DbManager { private async updateDbItemExpandedState( dbItem: DbItem, - itemExpanded: boolean, + addItem: boolean, ): Promise { const currentExpandedItems = this.getExpandedItems(); const newExpandedItems = updateExpandedItem( currentExpandedItems, dbItem, - itemExpanded, + addItem, ); await this.updateExpandedItems(newExpandedItems); From ba830dd2e58631c9d4f1e79aef3a02330519821f Mon Sep 17 00:00:00 2001 From: Nora Date: Wed, 11 Jan 2023 15:41:30 +0000 Subject: [PATCH 3/4] Fix expanded bug when renaming lists --- extensions/ql-vscode/src/databases/db-manager.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/extensions/ql-vscode/src/databases/db-manager.ts b/extensions/ql-vscode/src/databases/db-manager.ts index f3bf3968c91..19f7056c25b 100644 --- a/extensions/ql-vscode/src/databases/db-manager.ts +++ b/extensions/ql-vscode/src/databases/db-manager.ts @@ -82,10 +82,16 @@ export class DbManager { } public async removeDbItemFromExpandedState(dbItem: DbItem): Promise { + // When collapsing or expanding a list we clean up the expanded state and remove + // all items that don't exist anymore. + await this.updateDbItemExpandedState(dbItem, false); } public async addDbItemToExpandedState(dbItem: DbItem): Promise { + // When collapsing or expanding a list we clean up the expanded state and remove + // all items that don't exist anymore. + await this.updateDbItemExpandedState(dbItem, true); } @@ -133,7 +139,7 @@ export class DbManager { newDbItem, ); - await this.updateExpandedItems(newExpandedItems); + await this.setExpandedItems(newExpandedItems); } public async renameLocalDb( From 5c40293c0691659d6759f0064646e53c6de28403 Mon Sep 17 00:00:00 2001 From: Nora Date: Thu, 12 Jan 2023 16:03:38 +0100 Subject: [PATCH 4/4] Revert "Rename arguments" This reverts commit 85b7e0eabad1092792ff336b8ccff4fdef04e034. --- .../src/databases/db-item-expansion.ts | 4 ++-- .../ql-vscode/src/databases/db-manager.ts | 21 +++++++------------ 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/extensions/ql-vscode/src/databases/db-item-expansion.ts b/extensions/ql-vscode/src/databases/db-item-expansion.ts index b24551cae5e..8b7401462b8 100644 --- a/extensions/ql-vscode/src/databases/db-item-expansion.ts +++ b/extensions/ql-vscode/src/databases/db-item-expansion.ts @@ -34,9 +34,9 @@ export interface RemoteUserDefinedListExpandedDbItem { export function updateExpandedItem( currentExpandedItems: ExpandedDbItem[], dbItem: DbItem, - addItem: boolean, + itemExpanded: boolean, ): ExpandedDbItem[] { - if (addItem) { + if (itemExpanded) { const expandedDbItem = mapDbItemToExpandedDbItem(dbItem); const expandedItems = [...currentExpandedItems]; if (!expandedItems.some((i) => isDbItemEqualToExpandedDbItem(dbItem, i))) { diff --git a/extensions/ql-vscode/src/databases/db-manager.ts b/extensions/ql-vscode/src/databases/db-manager.ts index 19f7056c25b..3135d4fa427 100644 --- a/extensions/ql-vscode/src/databases/db-manager.ts +++ b/extensions/ql-vscode/src/databases/db-manager.ts @@ -191,27 +191,22 @@ export class DbManager { ); } - private async updateExpandedItems( - newExpandedItems: ExpandedDbItem[], - ): Promise { + private async updateExpandedItems(items: ExpandedDbItem[]): Promise { let itemsToStore; - const dbItems = this.getDbItems(); + const dbItemsResult = this.getDbItems(); - if (dbItems.isFailure) { + if (dbItemsResult.isFailure) { // Log an error but don't throw an exception since if the db items are failing // to be read, then there is a bigger problem than the expanded state. void this.app.logger.log( `Could not read db items when calculating expanded state: ${JSON.stringify( - dbItems.errors, + dbItemsResult.errors, )}`, ); - itemsToStore = newExpandedItems; + itemsToStore = items; } else { - itemsToStore = cleanNonExistentExpandedItems( - newExpandedItems, - dbItems.value, - ); + itemsToStore = cleanNonExistentExpandedItems(items, dbItemsResult.value); } await this.setExpandedItems(itemsToStore); @@ -219,14 +214,14 @@ export class DbManager { private async updateDbItemExpandedState( dbItem: DbItem, - addItem: boolean, + itemExpanded: boolean, ): Promise { const currentExpandedItems = this.getExpandedItems(); const newExpandedItems = updateExpandedItem( currentExpandedItems, dbItem, - addItem, + itemExpanded, ); await this.updateExpandedItems(newExpandedItems);