From d5169480de66f2f495e9d8408a9e53b378dae87f Mon Sep 17 00:00:00 2001 From: Konstantin Vasilev Date: Tue, 23 Aug 2022 16:38:01 +0300 Subject: [PATCH 01/17] fix(core-navigation-tree, plugin-navigation-tree): CB-2360 Do not duplicate confirmation when deleting tables --- .../src/NodesManager/NavTreeResource.ts | 33 +++++++++++-------- .../NodesManager/NavNodeContextMenuService.ts | 2 +- .../ObjectPropertyTableFooterService.ts | 22 +------------ .../Table/CellFormatter.tsx | 3 ++ 4 files changed, 25 insertions(+), 35 deletions(-) diff --git a/webapp/packages/core-navigation-tree/src/NodesManager/NavTreeResource.ts b/webapp/packages/core-navigation-tree/src/NodesManager/NavTreeResource.ts index e64e9e39e6..24d7e97a64 100644 --- a/webapp/packages/core-navigation-tree/src/NodesManager/NavTreeResource.ts +++ b/webapp/packages/core-navigation-tree/src/NodesManager/NavTreeResource.ts @@ -181,23 +181,30 @@ export class NavTreeResource extends CachedMapResource { const nodePaths = isResourceKeyList(key) ? key.list : [key]; await this.performUpdate(key, [], async () => { - await this.graphQLService.sdk.navDeleteNodes({ nodePaths }); - - runInAction(() => { - const parents: string[] = []; - const deletedIds: string[][] = []; + const deletedPaths: string[] = []; + try { for (const path of nodePaths) { - const node = this.navNodeInfoResource.get(path); - - if (node) { - parents.push(node.parentId); - deletedIds.push([path]); - } + await this.graphQLService.sdk.navDeleteNodes({ nodePaths: [path] }); + deletedPaths.push(path); } + } finally { + runInAction(() => { + const parents: string[] = []; + const deletedIds: string[][] = []; - this.deleteInNode(resourceKeyList(parents), deletedIds); - }); + for (const path of deletedPaths) { + const node = this.navNodeInfoResource.get(path); + + if (node) { + parents.push(node.parentId); + deletedIds.push([path]); + } + } + + this.deleteInNode(resourceKeyList(parents), deletedIds); + }); + } }); } diff --git a/webapp/packages/plugin-navigation-tree/src/NodesManager/NavNodeContextMenuService.ts b/webapp/packages/plugin-navigation-tree/src/NodesManager/NavNodeContextMenuService.ts index ee2c763a4e..8224739bc6 100644 --- a/webapp/packages/plugin-navigation-tree/src/NodesManager/NavNodeContextMenuService.ts +++ b/webapp/packages/plugin-navigation-tree/src/NodesManager/NavNodeContextMenuService.ts @@ -58,7 +58,7 @@ export class NavNodeContextMenuService extends Bootstrap { .mapArray(data, nodeId => this.navNodeInfoResource.get(nodeId)) .filter(Boolean as any) .map(node => node.name) - .join(); + .join(', '); const result = await this.commonDialogService.open(ConfirmationDialogDelete, { title: 'ui_data_delete_confirmation', diff --git a/webapp/packages/plugin-object-viewer/src/ObjectPropertiesPage/ObjectPropertyTable/ObjectPropertyTableFooterService.ts b/webapp/packages/plugin-object-viewer/src/ObjectPropertiesPage/ObjectPropertyTable/ObjectPropertyTableFooterService.ts index 40efbd606f..92ae53244b 100644 --- a/webapp/packages/plugin-object-viewer/src/ObjectPropertiesPage/ObjectPropertyTable/ObjectPropertyTableFooterService.ts +++ b/webapp/packages/plugin-object-viewer/src/ObjectPropertiesPage/ObjectPropertyTable/ObjectPropertyTableFooterService.ts @@ -62,32 +62,12 @@ export class ObjectPropertyTableFooterService { onClick: async context => { const nodes = this.getSelectedNodes(context.data.tableState.selectedList) .filter(node => node.features?.includes(ENodeFeature.canDelete)); - const nodeNames = nodes.map(getNodeDisplayName); - - const result = await this.commonDialogService.open(ConfirmationDialogDelete, { - title: 'ui_data_delete_confirmation', - message: `You're going to delete following items: "${nodeNames.join(', ')}". Are you sure?`, - confirmActionText: 'ui_delete', - }); - - if (result === DialogueStateResult.Rejected) { - return; - } - - const deleted: string[] = []; try { - for (const node of nodes) { - await this.navTreeResource.deleteNode(node.id); - deleted.push(node.id); - } + await this.navTreeResource.deleteNode(resourceKeyList(nodes.map(node => node.id))); } catch (exception: any) { this.notificationService.logException(exception, 'Failed to delete item'); } - - if (deleted.length) { - context.data.tableState.unselect(deleted); - } }, }); } diff --git a/webapp/packages/plugin-object-viewer/src/ObjectPropertiesPage/ObjectPropertyTable/Table/CellFormatter.tsx b/webapp/packages/plugin-object-viewer/src/ObjectPropertiesPage/ObjectPropertyTable/Table/CellFormatter.tsx index 11a2803b82..2bdfe535c8 100644 --- a/webapp/packages/plugin-object-viewer/src/ObjectPropertiesPage/ObjectPropertyTable/Table/CellFormatter.tsx +++ b/webapp/packages/plugin-object-viewer/src/ObjectPropertiesPage/ObjectPropertyTable/Table/CellFormatter.tsx @@ -28,6 +28,9 @@ const menuStyles = css` cursor: pointer; width: 100%; } + menu-container:not([|menuEmpty]) value { + padding-right: 8px; + } menu-box { display: flex; height: 100%; From 70fb57f493b167ce611030c4b6203dded127acec Mon Sep 17 00:00:00 2001 From: Wroud Date: Tue, 23 Aug 2022 20:47:15 +0300 Subject: [PATCH 02/17] fix(plugin-navigation-tabs): CB-2346 tab unloading handler --- .../src/NavigationTabs/NavigationTabsService.ts | 15 ++++++--------- .../src/NavigationTabs/TabHandler.ts | 12 ++++-------- .../src/ResourceSqlDataSource.ts | 5 +++++ .../src/ResourceSqlDataSourceBootstrap.ts | 15 ++++++++++----- .../src/SqlEditorTabService.ts | 15 ++++++++++----- .../src/SqlDataSource/SqlDataSourceService.ts | 17 +++++++++++++++-- 6 files changed, 50 insertions(+), 29 deletions(-) diff --git a/webapp/packages/plugin-navigation-tabs/src/NavigationTabs/NavigationTabsService.ts b/webapp/packages/plugin-navigation-tabs/src/NavigationTabs/NavigationTabsService.ts index 775083d142..f8053cd277 100644 --- a/webapp/packages/plugin-navigation-tabs/src/NavigationTabs/NavigationTabsService.ts +++ b/webapp/packages/plugin-navigation-tabs/src/NavigationTabs/NavigationTabsService.ts @@ -189,7 +189,8 @@ export class NavigationTabsService extends View { } } - this.callHandlerCallback(tab, handler => handler.onClose); + await this.callHandlerCallback(tab, handler => handler.onClose); + await this.callHandlerCallback(tab, handler => handler.onUnload); } this.closeTabSilent(tabId, skipHandlers); @@ -288,7 +289,7 @@ export class NavigationTabsService extends View { } } - unloadTabs(): void { + async unloadTabs(): Promise { // if (this.administrationScreenService.publicDisabled) { // return; // } @@ -296,7 +297,7 @@ export class NavigationTabsService extends View { for (const tab of this.tabsMap.values()) { if (tab.userId !== this.userInfoResource.getId()) { if (tab.restored) { - this.callHandlerCallback(tab, handler => handler.onClose); + await this.callHandlerCallback(tab, handler => handler.onUnload); tab.restored = false; } } @@ -313,10 +314,6 @@ export class NavigationTabsService extends View { return; } - for (const handler of this.handlers.values()) { - await handler.onNavInit?.(); - } - const removedTabs: string[] = []; for (const tabId of this.userTabsState.tabs) { @@ -347,7 +344,7 @@ export class NavigationTabsService extends View { }); } - private callHandlerCallback(tab: ITab, selector: (handler: TabHandler) => TabHandlerEvent | undefined) { + private async callHandlerCallback(tab: ITab, selector: (handler: TabHandler) => TabHandlerEvent | undefined) { const handler = this.handlers.get(tab.handlerId); if (!handler) { @@ -357,7 +354,7 @@ export class NavigationTabsService extends View { const callback = selector(handler); if (callback) { - callback.call(handler, tab); + await callback.call(handler, tab); } } diff --git a/webapp/packages/plugin-navigation-tabs/src/NavigationTabs/TabHandler.ts b/webapp/packages/plugin-navigation-tabs/src/NavigationTabs/TabHandler.ts index eb5ee6d25d..0cce6f4442 100644 --- a/webapp/packages/plugin-navigation-tabs/src/NavigationTabs/TabHandler.ts +++ b/webapp/packages/plugin-navigation-tabs/src/NavigationTabs/TabHandler.ts @@ -26,9 +26,8 @@ export interface TabHandlerPanelProps { } export type TabHandlerPanelComponent = React.FunctionComponent>; -export type TabHandlerNavInitEvent = () => Promise | void; export type TabHandlerCloseEvent = (tab: ITab) => Promise | boolean; -export type TabHandlerEvent = (tab: ITab) => void; +export type TabHandlerEvent = (tab: ITab) => Promise | void; export type TabRestoreEvent = (tab: ITab) => Promise | boolean; export interface TabHandlerOptions { @@ -39,8 +38,7 @@ export interface TabHandlerOptions { canClose?: TabHandlerCloseEvent; onClose?: TabHandlerEvent; onRestore?: TabRestoreEvent; - onNavInit?: TabHandlerNavInitEvent; - onNavUnload?: TabHandlerNavInitEvent; + onUnload?: TabHandlerEvent; extensions?: Array>>; } @@ -52,8 +50,7 @@ export class TabHandler { onClose?: TabHandlerEvent; canClose?: TabHandlerCloseEvent; onRestore?: TabRestoreEvent; - onNavInit?: TabHandlerNavInitEvent; - onNavUnload?: TabHandlerNavInitEvent; + onUnload?: TabHandlerEvent; extensions?: Array>>; constructor(options: TabHandlerOptions) { @@ -64,8 +61,7 @@ export class TabHandler { this.canClose = options.canClose; this.onClose = options.onClose; this.onRestore = options.onRestore; - this.onNavInit = options.onNavInit; - this.onNavUnload = options.onNavUnload; + this.onUnload = options.onUnload; this.extensions = options.extensions; } } diff --git a/webapp/packages/plugin-sql-editor-navigation-tab-resource/src/ResourceSqlDataSource.ts b/webapp/packages/plugin-sql-editor-navigation-tab-resource/src/ResourceSqlDataSource.ts index e6773084fe..c759994895 100644 --- a/webapp/packages/plugin-sql-editor-navigation-tab-resource/src/ResourceSqlDataSource.ts +++ b/webapp/packages/plugin-sql-editor-navigation-tab-resource/src/ResourceSqlDataSource.ts @@ -170,6 +170,11 @@ export class ResourceSqlDataSource extends BaseSqlDataSource { try { this.exception = null; this.nodeInfo.nodeId = await this.actions.rename(this, this.nodeInfo.nodeId, name); + + if (this.nodeInfo.parents.length > 0) { + this.nodeInfo.parents.splice(this.nodeInfo.parents.length - 1, 1, this.nodeInfo.nodeId); + } + this.markOutdated(); this.saved = true; this.loaded = false; diff --git a/webapp/packages/plugin-sql-editor-navigation-tab-resource/src/ResourceSqlDataSourceBootstrap.ts b/webapp/packages/plugin-sql-editor-navigation-tab-resource/src/ResourceSqlDataSourceBootstrap.ts index e103c06e8f..a8f944e22c 100644 --- a/webapp/packages/plugin-sql-editor-navigation-tab-resource/src/ResourceSqlDataSourceBootstrap.ts +++ b/webapp/packages/plugin-sql-editor-navigation-tab-resource/src/ResourceSqlDataSourceBootstrap.ts @@ -64,13 +64,13 @@ export class ResourceSqlDataSourceBootstrap extends Bootstrap { if ( !['undefined', 'object'].includes(typeof value.nodeInfo) || !['string', 'undefined'].includes(typeof value.name) - || !['string', 'undefined', 'object'].includes(typeof value.nodeInfo?.nodeId) + || !['string', 'undefined'].includes(typeof value.nodeInfo?.nodeId) || !['undefined', 'object'].includes(typeof value.nodeInfo?.parents) || !['undefined', 'object'].includes(typeof value.executionContext) - || !['string', 'undefined', 'object'].includes(typeof value.executionContext?.connectionId) - || !['string', 'undefined', 'object'].includes(typeof value.executionContext?.id) - || !['string', 'undefined', 'object'].includes(typeof value.executionContext?.defaultCatalog) - || !['string', 'undefined', 'object'].includes(typeof value.executionContext?.defaultSchema) + || !['string', 'undefined'].includes(typeof value.executionContext?.connectionId) + || !['string', 'undefined'].includes(typeof value.executionContext?.id) + || !['string', 'undefined'].includes(typeof value.executionContext?.defaultCatalog) + || !['string', 'undefined'].includes(typeof value.executionContext?.defaultSchema) ) { map.delete(key); } @@ -114,6 +114,11 @@ export class ResourceSqlDataSourceBootstrap extends Bootstrap { return dataSource; }, onDestroy: (_, editorId) => this.deleteState(editorId), + onUnload: async dataSource => { + if (dataSource instanceof ResourceSqlDataSource) { + await dataSource.write(); + } + }, canDestroy: async (dataSource, editorId) => { try { if (dataSource instanceof ResourceSqlDataSource) { diff --git a/webapp/packages/plugin-sql-editor-navigation-tab/src/SqlEditorTabService.ts b/webapp/packages/plugin-sql-editor-navigation-tab/src/SqlEditorTabService.ts index 480c6afd4d..31e4908114 100644 --- a/webapp/packages/plugin-sql-editor-navigation-tab/src/SqlEditorTabService.ts +++ b/webapp/packages/plugin-sql-editor-navigation-tab/src/SqlEditorTabService.ts @@ -70,6 +70,7 @@ export class SqlEditorTabService extends Bootstrap { getTabComponent: () => SqlEditorTab, getPanelComponent: () => SqlEditorPanel, onRestore: this.handleTabRestore.bind(this), + onUnload: this.handleTabUnload.bind(this), onClose: this.handleTabClose.bind(this), canClose: this.handleCanTabClose.bind(this), extensions: [ @@ -270,9 +271,9 @@ export class SqlEditorTabService extends Bootstrap { typeof tab.handlerState.editorId !== 'string' || typeof tab.handlerState.editorId !== 'string' || typeof tab.handlerState.order !== 'number' - || !['string', 'undefined', 'object'].includes(typeof tab.handlerState.currentTabId) - || !['string', 'undefined', 'object'].includes(typeof tab.handlerState.source) - || !['string', 'undefined', 'object'].includes(typeof tab.handlerState.currentModeId) + || !['string', 'undefined'].includes(typeof tab.handlerState.currentTabId) + || !['string', 'undefined'].includes(typeof tab.handlerState.source) + || !['string', 'undefined'].includes(typeof tab.handlerState.currentModeId) || !Array.isArray(tab.handlerState.modeState) || !Array.isArray(tab.handlerState.tabs) || !Array.isArray(tab.handlerState.executionPlanTabs) @@ -448,17 +449,21 @@ export class SqlEditorTabService extends Bootstrap { return canDestroyDatasource; } - private async handleTabClose(editorTab: ITab) { + private async handleTabUnload(editorTab: ITab) { const dataSource = this.sqlDataSourceService.get(editorTab.handlerState.editorId); if (dataSource?.executionContext) { await this.sqlEditorService.destroyContext(dataSource.executionContext); } - await this.sqlDataSourceService.destroy(editorTab.handlerState.editorId); + await this.sqlDataSourceService.unload(editorTab.handlerState.editorId); this.sqlResultTabsService.removeResultTabs(editorTab.handlerState); } + + private async handleTabClose(editorTab: ITab) { + await this.sqlDataSourceService.destroy(editorTab.handlerState.editorId); + } } function findMinimalFree(array: number[], base: number): number { diff --git a/webapp/packages/plugin-sql-editor/src/SqlDataSource/SqlDataSourceService.ts b/webapp/packages/plugin-sql-editor/src/SqlDataSource/SqlDataSourceService.ts index 6c697283cf..1d93c455f1 100644 --- a/webapp/packages/plugin-sql-editor/src/SqlDataSource/SqlDataSourceService.ts +++ b/webapp/packages/plugin-sql-editor/src/SqlDataSource/SqlDataSourceService.ts @@ -31,6 +31,7 @@ interface ISqlDataSourceFabric { key: string; getDataSource: ISqlDataSourceFactory; onDestroy?: (dataSource: ISqlDataSource, editorId: string) => Promise | void; + onUnload?: (dataSource: ISqlDataSource, editorId: string) => Promise | void; canDestroy?: (dataSource: ISqlDataSource, editorId: string) => Promise | boolean; } @@ -146,6 +147,14 @@ export class SqlDataSourceService { if (activeProvider) { await this.destroyProvider(editorId, activeProvider); } + } + + async unload(editorId: string): Promise { + const activeProvider = this.providers.get(editorId); + + if (activeProvider) { + await this.unloadProvider(editorId, activeProvider); + } this.providers.delete(editorId); } @@ -158,8 +167,12 @@ export class SqlDataSourceService { this.dataSourceProviders.set(dataSourceOptions.key, dataSourceOptions); } - private async destroyProvider(editorId: string, provider: ISqlDataSourceProvider): Promise { - await provider.provider.onDestroy?.(provider.dataSource, editorId); + private async unloadProvider(editorId: string, provider: ISqlDataSourceProvider): Promise { + await provider.provider.onUnload?.(provider.dataSource, editorId); await provider.dataSource.dispose(); } + + private async destroyProvider(editorId: string, provider: ISqlDataSourceProvider): Promise { + await provider.provider.onDestroy?.(provider.dataSource, editorId); + } } \ No newline at end of file From 395e233839f3bbd1dc3f1425e62c7bb8f1cfd3aa Mon Sep 17 00:00:00 2001 From: Wroud Date: Wed, 24 Aug 2022 11:43:05 +0300 Subject: [PATCH 03/17] fix: CB-2325 placeholder message in nav tree --- webapp/packages/core-app/src/locales/en.ts | 29 --------------- webapp/packages/core-app/src/locales/it.ts | 28 --------------- webapp/packages/core-app/src/locales/ru.ts | 32 ----------------- webapp/packages/core-app/src/locales/zh.ts | 29 --------------- .../NavNodes/ConnectionFoldersBootstrap.ts | 2 +- .../src/LocaleService.ts | 36 +++++++++++++++++++ .../ElementsTree/ElementsTree.tsx | 13 ++++--- .../src/NavigationTree/NavigationTree.tsx | 4 +-- .../plugin-navigation-tree/src/locales/en.ts | 33 +++++++++++++++++ .../plugin-navigation-tree/src/locales/it.ts | 31 ++++++++++++++++ .../plugin-navigation-tree/src/locales/ru.ts | 36 +++++++++++++++++++ .../plugin-navigation-tree/src/locales/zh.ts | 33 +++++++++++++++++ .../plugin-navigation-tree/src/manifest.ts | 2 ++ 13 files changed, 180 insertions(+), 128 deletions(-) create mode 100644 webapp/packages/plugin-navigation-tree/src/LocaleService.ts create mode 100644 webapp/packages/plugin-navigation-tree/src/locales/en.ts create mode 100644 webapp/packages/plugin-navigation-tree/src/locales/it.ts create mode 100644 webapp/packages/plugin-navigation-tree/src/locales/ru.ts create mode 100644 webapp/packages/plugin-navigation-tree/src/locales/zh.ts diff --git a/webapp/packages/core-app/src/locales/en.ts b/webapp/packages/core-app/src/locales/en.ts index 6fd8778289..fd7f802d03 100644 --- a/webapp/packages/core-app/src/locales/en.ts +++ b/webapp/packages/core-app/src/locales/en.ts @@ -10,35 +10,6 @@ export default [ ['app_shared_settingsMenu_theme', 'Theme'], ['app_shared_settingsMenu_lang', 'Language'], ['app_topnavbar_connection_schema_manager_not_selected', '-- not selected --'], - ['app_navigationTree_openNodeTab', 'Open'], - ['app_navigationTree_search', 'Search elements...'], - ['app_navigationTree_limited', 'Elements are limited to {args.limit} items'], - ['app_navigationTree_action_link_with_editor', 'Link with editor'], - ['app_navigationTree_action_collapse_all', 'Collapse all'], - ['app_navigationTree_settings_filter_title', 'Filter'], - ['app_navigationTree_settings_filter_description', 'Show filtering field'], - ['app_navigationTree_settings_filter_all_title', 'Show collapsed'], - ['app_navigationTree_settings_filter_all_description', 'Shows filtered elements in collapsed folders'], - ['app_navigationTree_settings_state_title', 'Save tree state'], - ['app_navigationTree_settings_state_description', 'Reopen expanded nodes after page refresh'], - ['app_navigationTree_settings_folders_title', 'Folders'], - ['app_navigationTree_settings_folders_description', 'Open any node as tree root node'], - ['app_navigationTree_node_delete_confirmation', 'You\'re going to delete "{args.name}". Are you sure?'], - ['app_navigationTree_node_delete_error', 'Failed to delete "{args.name}'], - ['app_navigationTree_node_rename_error', 'Error occurred while renaming'], - ['app_navigationTree_node_empty', 'Empty'], - ['app_navigationTree_node_not_found', 'Node not found'], - ['app_navigationTree_connection_view', 'Connection view'], - ['app_navigationTree_connection_view_option_simple', 'Simple'], - ['app_navigationTree_connection_view_option_advanced', 'Advanced'], - ['app_navigationTree_connection_view_option_custom', 'Custom'], - ['app_navigationTree_connection_view_option_showSystemObjects', 'Show system objects'], - ['app_navigationTree_refresh', 'Refresh'], - ['app_navigationTree_refresh_error', 'Failed to refresh node'], - ['app_navigationTree_node_change_name_error', 'Error occurred while changing name'], - ['app_navigationTree_context_disconnect', 'Disconnect'], - ['app_navigationTree_connection_group_user', 'User Connections'], - ['app_navigationTree_connection_group_shared', 'Shared Connections'], ['app_shared_inlineEditor_dialog_title', 'Edit mode'], ['app_shared_inlineEditor_dialog_apply', 'Apply'], ['app_shared_inlineEditor_dialog_cancel', 'Cancel'], diff --git a/webapp/packages/core-app/src/locales/it.ts b/webapp/packages/core-app/src/locales/it.ts index baeaa52e81..57bda48d0d 100644 --- a/webapp/packages/core-app/src/locales/it.ts +++ b/webapp/packages/core-app/src/locales/it.ts @@ -10,34 +10,6 @@ export default [ ['app_shared_settingsMenu_theme', 'Tema'], ['app_shared_settingsMenu_lang', 'Lingua'], ['app_topnavbar_connection_schema_manager_not_selected', '-- non selezionato --'], - ['app_navigationTree_openNodeTab', 'Apri'], - ['app_navigationTree_search', 'Search elements...'], - ['app_navigationTree_limited', 'Elements are limited to {args.limit} items'], - ['app_navigationTree_action_link_with_editor', 'Link with editor'], - ['app_navigationTree_action_collapse_all', 'Collapse all'], - ['app_navigationTree_settings_filter_title', 'Filter'], - ['app_navigationTree_settings_filter_description', 'Show filtering field'], - ['app_navigationTree_settings_filter_all_title', 'Show collapsed'], - ['app_navigationTree_settings_filter_all_description', 'Shows filtered elements in collapsed folders'], - ['app_navigationTree_node_delete_confirmation', 'You\'re going to delete "{args.name}". Are you sure?'], - ['app_navigationTree_node_delete_error', 'Failed to delete "{args.name}'], - ['app_navigationTree_node_rename_error', 'Error occurred while renaming'], - ['app_navigationTree_settings_state_title', 'Save tree state'], - ['app_navigationTree_settings_state_description', 'Reopen expanded nodes after page refresh'], - ['app_navigationTree_settings_folders_title', 'Folders'], - ['app_navigationTree_settings_folders_description', 'Open any node as tree root node'], - ['app_navigationTree_node_empty', 'Empty'], - ['app_navigationTree_node_not_found', 'Node not found'], - ['app_navigationTree_connection_view', 'Vista di connessione'], - ['app_navigationTree_connection_view_option_simple', 'Semplice'], - ['app_navigationTree_connection_view_option_advanced', 'Avanzato'], - ['app_navigationTree_connection_view_option_custom', 'Manuale'], - ['app_navigationTree_connection_view_option_showSystemObjects', 'Mostra oggetti di sistema'], - ['app_navigationTree_refresh', 'Aggiorna'], - ['app_navigationTree_refresh_error', 'Failed to refresh node'], - ['app_navigationTree_context_disconnect', 'Scollega'], - ['app_navigationTree_connection_group_user', 'Connessioni Utente'], - ['app_navigationTree_connection_group_shared', 'Connessioni Condivise'], ['app_shared_inlineEditor_dialog_title', 'Modalità modifica'], ['app_shared_inlineEditor_dialog_apply', 'Applica'], ['app_shared_inlineEditor_dialog_cancel', 'Cancella'], diff --git a/webapp/packages/core-app/src/locales/ru.ts b/webapp/packages/core-app/src/locales/ru.ts index 6e89833e21..65641a84ee 100644 --- a/webapp/packages/core-app/src/locales/ru.ts +++ b/webapp/packages/core-app/src/locales/ru.ts @@ -13,38 +13,6 @@ export default [ 'app_shared_navigationTabsBar_placeholder', 'Нет открытых объектов для отображения. Дважды нажмите на элемент в дереве навигации, чтобы открыть его.', ], - ['app_navigationTree_openNodeTab', 'Открыть'], - ['app_navigationTree_search', 'Искать элементы...'], - ['app_navigationTree_limited', 'Отображено {args.limit} элементов'], - - ['app_navigationTree_action_link_with_editor', 'Синхронизовать с редактором'], - ['app_navigationTree_action_collapse_all', 'Свернуть все элементы'], - - ['app_navigationTree_settings_filter_title', 'Фильтр'], - ['app_navigationTree_settings_filter_description', 'Показывать фильтр'], - ['app_navigationTree_settings_filter_all_title', 'Фильтровать скрытые элементы'], - ['app_navigationTree_settings_filter_all_description', 'Показывает скрытые элементы при использовании фильтра'], - ['app_navigationTree_settings_state_title', 'Сохранять состояние дерева'], - ['app_navigationTree_settings_state_description', 'Восстанавливает открытые узлы после обновления страницы'], - ['app_navigationTree_settings_folders_title', 'Папки'], - ['app_navigationTree_settings_folders_description', 'Позволяет открыть любой узел как начальный'], - ['app_navigationTree_node_delete_confirmation', 'Вы собираетесь удалить "{args.name}". Вы уверены?'], - ['app_navigationTree_node_delete_error', 'Ошибка удаления "{args.name}'], - ['app_navigationTree_node_rename_error', 'Ошибка переименования ноды'], - - ['app_navigationTree_node_empty', 'Пусто'], - ['app_navigationTree_node_not_found', 'Элемент не найден'], - ['app_navigationTree_connection_view', 'Отображение'], - ['app_navigationTree_connection_view_option_simple', 'Упрощенное'], - ['app_navigationTree_connection_view_option_advanced', 'Продвинутое'], - ['app_navigationTree_connection_view_option_custom', 'Настраиваемое'], - ['app_navigationTree_connection_view_option_showSystemObjects', 'Показывать системные объекты'], - ['app_navigationTree_refresh', 'Обновить'], - ['app_navigationTree_refresh_error', 'Не удалось обновить узел'], - ['app_navigationTree_node_change_name_error', 'Не удалось изменить название'], - ['app_navigationTree_context_disconnect', 'Отключить'], - ['app_navigationTree_connection_group_user', 'Пользовательские подключения'], - ['app_navigationTree_connection_group_shared', 'Общие подключения'], ['app_shared_inlineEditor_dialog_title', 'Редактирование'], ['app_shared_inlineEditor_dialog_apply', 'Применить'], ['app_shared_inlineEditor_dialog_cancel', 'Отменить'], diff --git a/webapp/packages/core-app/src/locales/zh.ts b/webapp/packages/core-app/src/locales/zh.ts index 122d76ca25..f3abaf8b5d 100644 --- a/webapp/packages/core-app/src/locales/zh.ts +++ b/webapp/packages/core-app/src/locales/zh.ts @@ -10,35 +10,6 @@ export default [ ['app_shared_settingsMenu_theme', '主题'], ['app_shared_settingsMenu_lang', '语言'], ['app_topnavbar_connection_schema_manager_not_selected', '-- 为选择 --'], - ['app_navigationTree_search', 'Search elements...'], - ['app_navigationTree_limited', 'Elements are limited to {args.limit} items'], - ['app_navigationTree_action_link_with_editor', 'Link with editor'], - ['app_navigationTree_action_collapse_all', 'Collapse all'], - ['app_navigationTree_settings_filter_title', 'Filter'], - ['app_navigationTree_settings_filter_description', 'Show filtering field'], - ['app_navigationTree_settings_filter_all_title', 'Show collapsed'], - ['app_navigationTree_settings_filter_all_description', 'Shows filtered elements in collapsed folders'], - ['app_navigationTree_settings_state_title', 'Save tree state'], - ['app_navigationTree_settings_state_description', 'Reopen expanded nodes after page refresh'], - ['app_navigationTree_settings_folders_title', 'Folders'], - ['app_navigationTree_settings_folders_description', 'Open any node as tree root node'], - ['app_navigationTree_node_delete_confirmation', 'You\'re going to delete "{args.name}". Are you sure?'], - ['app_navigationTree_node_delete_error', 'Failed to delete "{args.name}'], - ['app_navigationTree_node_rename_error', 'Error occurred while renaming'], - ['app_navigationTree_node_empty', 'Empty'], - ['app_navigationTree_openNodeTab', '打开'], - ['app_navigationTree_connection_view', '连接视图'], - ['app_navigationTree_node_not_found', 'Node not found'], - ['app_navigationTree_connection_view_option_simple', '简单'], - ['app_navigationTree_connection_view_option_advanced', '完善'], - ['app_navigationTree_connection_view_option_custom', '自定义'], - ['app_navigationTree_connection_view_option_showSystemObjects', '展示系统对象'], - ['app_navigationTree_refresh', '刷新'], - ['app_navigationTree_refresh_error', 'Failed to refresh node'], - ['app_navigationTree_node_change_name_error', '更改名称时发生错误'], - ['app_navigationTree_context_disconnect', '断开连接'], - ['app_navigationTree_connection_group_user', '用户连接'], - ['app_navigationTree_connection_group_shared', '共享连接'], ['app_shared_inlineEditor_dialog_title', '编辑模式'], ['app_shared_inlineEditor_dialog_apply', '应用'], ['app_shared_inlineEditor_dialog_cancel', '取消'], diff --git a/webapp/packages/plugin-connections/src/NavNodes/ConnectionFoldersBootstrap.ts b/webapp/packages/plugin-connections/src/NavNodes/ConnectionFoldersBootstrap.ts index 95680fcaea..dca837972e 100644 --- a/webapp/packages/plugin-connections/src/NavNodes/ConnectionFoldersBootstrap.ts +++ b/webapp/packages/plugin-connections/src/NavNodes/ConnectionFoldersBootstrap.ts @@ -16,7 +16,7 @@ import { CommonDialogService, ConfirmationDialogDelete, DialogueStateResult, Ren import { NotificationService } from '@cloudbeaver/core-events'; import { ExecutorInterrupter, IExecutionContextProvider } from '@cloudbeaver/core-executor'; import { LocalizationService } from '@cloudbeaver/core-localization'; -import { ENodeMoveType, getNodesFromContext, INodeMoveData, NavNode, NavNodeInfoResource, NavNodeManagerService, navNodeMoveContext, NavTreeResource, NAV_NODE_TYPE_FOLDER, nodeDeleteContext, ROOT_NODE_PATH } from '@cloudbeaver/core-navigation-tree'; +import { ENodeMoveType, getNodesFromContext, INodeMoveData, NavNode, NavNodeInfoResource, NavNodeManagerService, navNodeMoveContext, NavTreeResource, NAV_NODE_TYPE_FOLDER, nodeDeleteContext } from '@cloudbeaver/core-navigation-tree'; import { NAV_NODE_TYPE_PROJECT, ProjectsNavNodeService, ProjectsResource } from '@cloudbeaver/core-projects'; import { CachedMapAllKey, ResourceKey, resourceKeyList, ResourceKeyUtils } from '@cloudbeaver/core-sdk'; import { createPath } from '@cloudbeaver/core-utils'; diff --git a/webapp/packages/plugin-navigation-tree/src/LocaleService.ts b/webapp/packages/plugin-navigation-tree/src/LocaleService.ts new file mode 100644 index 0000000000..c6a5d9b3c9 --- /dev/null +++ b/webapp/packages/plugin-navigation-tree/src/LocaleService.ts @@ -0,0 +1,36 @@ +/* + * CloudBeaver - Cloud Database Manager + * Copyright (C) 2020-2022 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0. + * you may not use this file except in compliance with the License. + */ + +import { Bootstrap, injectable } from '@cloudbeaver/core-di'; +import { LocalizationService } from '@cloudbeaver/core-localization'; + +@injectable() +export class LocaleService extends Bootstrap { + constructor(private readonly localizationService: LocalizationService) { + super(); + } + + register(): void | Promise { + this.localizationService.addProvider(this.provider.bind(this)); + } + + load(): void | Promise { } + + private async provider(locale: string) { + switch (locale) { + case 'ru': + return (await import('./locales/ru')).default; + case 'it': + return (await import('./locales/it')).default; + case 'zh': + return (await import('./locales/zh')).default; + default: + return (await import('./locales/en')).default; + } + } +} diff --git a/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/ElementsTree.tsx b/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/ElementsTree.tsx index 8509cae984..19a613b5f7 100644 --- a/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/ElementsTree.tsx +++ b/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/ElementsTree.tsx @@ -10,9 +10,10 @@ import { observer } from 'mobx-react-lite'; import { useMemo, useCallback, useEffect } from 'react'; import styled, { css, use } from 'reshadow'; -import { EventTreeNodeClickFlag, EventTreeNodeExpandFlag, EventTreeNodeSelectFlag, FolderExplorer, FolderExplorerPath, Loader, useFolderExplorer, useMapResource, useObjectRef } from '@cloudbeaver/core-blocks'; +import { EventTreeNodeClickFlag, EventTreeNodeExpandFlag, EventTreeNodeSelectFlag, FolderExplorer, FolderExplorerPath, Loader, TreeNodeNested, TreeNodeNestedMessage, TREE_NODE_STYLES, useFolderExplorer, useMapResource, useObjectRef } from '@cloudbeaver/core-blocks'; import { useService } from '@cloudbeaver/core-di'; import { EventContext, EventStopPropagationFlag } from '@cloudbeaver/core-events'; +import { Translate } from '@cloudbeaver/core-localization'; import { type NavNode, ROOT_NODE_PATH, NavTreeResource, NavNodeInfoResource, EObjectFeature } from '@cloudbeaver/core-navigation-tree'; import { ComponentStyle, useStyles } from '@cloudbeaver/core-theming'; @@ -281,7 +282,7 @@ export const ElementsTree = observer(function ElementsTree({ const hasChildren = (children.data?.length || 0) > 0; const loaderAvailable = !foldersTree || context.folderExplorer.root === root; - return styled(useStyles(styles, style))( + return styled(useStyles(TREE_NODE_STYLES, styles, style))( <> @@ -305,11 +306,9 @@ export const ElementsTree = observer(function ElementsTree({ bottom: dropOutside.bottom, })} > - + + + styled(navigationTreeStyles)(
- No connections.
- Use the top menu to setup connection to your database. +
)} diff --git a/webapp/packages/plugin-navigation-tree/src/locales/en.ts b/webapp/packages/plugin-navigation-tree/src/locales/en.ts new file mode 100644 index 0000000000..9431480094 --- /dev/null +++ b/webapp/packages/plugin-navigation-tree/src/locales/en.ts @@ -0,0 +1,33 @@ +export default [ + ['app_navigationTree_openNodeTab', 'Open'], + ['app_navigationTree_search', 'Search elements...'], + ['app_navigationTree_limited', 'Elements are limited to {args.limit} items'], + ['app_navigationTree_action_link_with_editor', 'Link with editor'], + ['app_navigationTree_action_collapse_all', 'Collapse all'], + ['app_navigationTree_settings_filter_title', 'Filter'], + ['app_navigationTree_settings_filter_description', 'Show filtering field'], + ['app_navigationTree_settings_filter_all_title', 'Show collapsed'], + ['app_navigationTree_settings_filter_all_description', 'Shows filtered elements in collapsed folders'], + ['app_navigationTree_settings_state_title', 'Save tree state'], + ['app_navigationTree_settings_state_description', 'Reopen expanded nodes after page refresh'], + ['app_navigationTree_settings_folders_title', 'Folders'], + ['app_navigationTree_settings_folders_description', 'Open any node as tree root node'], + ['app_navigationTree_node_delete_confirmation', 'You\'re going to delete "{args.name}". Are you sure?'], + ['app_navigationTree_node_delete_error', 'Failed to delete "{args.name}'], + ['app_navigationTree_node_rename_error', 'Error occurred while renaming'], + ['app_navigationTree_node_empty', 'Empty'], + ['app_navigationTree_node_not_found', 'Node not found'], + ['app_navigationTree_connection_view', 'Connection view'], + ['app_navigationTree_connection_view_option_simple', 'Simple'], + ['app_navigationTree_connection_view_option_advanced', 'Advanced'], + ['app_navigationTree_connection_view_option_custom', 'Custom'], + ['app_navigationTree_connection_view_option_showSystemObjects', 'Show system objects'], + ['app_navigationTree_refresh', 'Refresh'], + ['app_navigationTree_refresh_error', 'Failed to refresh node'], + ['app_navigationTree_node_change_name_error', 'Error occurred while changing name'], + ['app_navigationTree_context_disconnect', 'Disconnect'], + ['app_navigationTree_connection_group_user', 'User Connections'], + ['app_navigationTree_connection_group_shared', 'Shared Connections'], + ['app_navigationTree_empty_placeholder', 'No Connections.\nUse the top menu to setup connection to your database.'], + ['app_navigationTree_drop_here', 'Drop here...'], +]; diff --git a/webapp/packages/plugin-navigation-tree/src/locales/it.ts b/webapp/packages/plugin-navigation-tree/src/locales/it.ts new file mode 100644 index 0000000000..1f292e0253 --- /dev/null +++ b/webapp/packages/plugin-navigation-tree/src/locales/it.ts @@ -0,0 +1,31 @@ +export default [ + ['app_navigationTree_openNodeTab', 'Apri'], + ['app_navigationTree_search', 'Search elements...'], + ['app_navigationTree_limited', 'Elements are limited to {args.limit} items'], + ['app_navigationTree_action_link_with_editor', 'Link with editor'], + ['app_navigationTree_action_collapse_all', 'Collapse all'], + ['app_navigationTree_settings_filter_title', 'Filter'], + ['app_navigationTree_settings_filter_description', 'Show filtering field'], + ['app_navigationTree_settings_filter_all_title', 'Show collapsed'], + ['app_navigationTree_settings_filter_all_description', 'Shows filtered elements in collapsed folders'], + ['app_navigationTree_node_delete_confirmation', 'You\'re going to delete "{args.name}". Are you sure?'], + ['app_navigationTree_node_delete_error', 'Failed to delete "{args.name}'], + ['app_navigationTree_node_rename_error', 'Error occurred while renaming'], + ['app_navigationTree_settings_state_title', 'Save tree state'], + ['app_navigationTree_settings_state_description', 'Reopen expanded nodes after page refresh'], + ['app_navigationTree_settings_folders_title', 'Folders'], + ['app_navigationTree_settings_folders_description', 'Open any node as tree root node'], + ['app_navigationTree_node_empty', 'Empty'], + ['app_navigationTree_node_not_found', 'Node not found'], + ['app_navigationTree_connection_view', 'Vista di connessione'], + ['app_navigationTree_connection_view_option_simple', 'Semplice'], + ['app_navigationTree_connection_view_option_advanced', 'Avanzato'], + ['app_navigationTree_connection_view_option_custom', 'Manuale'], + ['app_navigationTree_connection_view_option_showSystemObjects', 'Mostra oggetti di sistema'], + ['app_navigationTree_refresh', 'Aggiorna'], + ['app_navigationTree_refresh_error', 'Failed to refresh node'], + ['app_navigationTree_context_disconnect', 'Scollega'], + ['app_navigationTree_connection_group_user', 'Connessioni Utente'], + ['app_navigationTree_empty_placeholder', 'Nessuna Connessione.\nUsa il menù in altro per impostare una nuova connessione.'], + ['app_navigationTree_drop_here', 'Drop here...'], +]; diff --git a/webapp/packages/plugin-navigation-tree/src/locales/ru.ts b/webapp/packages/plugin-navigation-tree/src/locales/ru.ts new file mode 100644 index 0000000000..548fb7d8f2 --- /dev/null +++ b/webapp/packages/plugin-navigation-tree/src/locales/ru.ts @@ -0,0 +1,36 @@ +export default [ + ['app_navigationTree_openNodeTab', 'Открыть'], + ['app_navigationTree_search', 'Искать элементы...'], + ['app_navigationTree_limited', 'Отображено {args.limit} элементов'], + + ['app_navigationTree_action_link_with_editor', 'Синхронизовать с редактором'], + ['app_navigationTree_action_collapse_all', 'Свернуть все элементы'], + + ['app_navigationTree_settings_filter_title', 'Фильтр'], + ['app_navigationTree_settings_filter_description', 'Показывать фильтр'], + ['app_navigationTree_settings_filter_all_title', 'Фильтровать скрытые элементы'], + ['app_navigationTree_settings_filter_all_description', 'Показывает скрытые элементы при использовании фильтра'], + ['app_navigationTree_settings_state_title', 'Сохранять состояние дерева'], + ['app_navigationTree_settings_state_description', 'Восстанавливает открытые узлы после обновления страницы'], + ['app_navigationTree_settings_folders_title', 'Папки'], + ['app_navigationTree_settings_folders_description', 'Позволяет открыть любой узел как начальный'], + ['app_navigationTree_node_delete_confirmation', 'Вы собираетесь удалить "{args.name}". Вы уверены?'], + ['app_navigationTree_node_delete_error', 'Ошибка удаления "{args.name}'], + ['app_navigationTree_node_rename_error', 'Ошибка переименования ноды'], + + ['app_navigationTree_node_empty', 'Пусто'], + ['app_navigationTree_node_not_found', 'Элемент не найден'], + ['app_navigationTree_connection_view', 'Отображение'], + ['app_navigationTree_connection_view_option_simple', 'Упрощенное'], + ['app_navigationTree_connection_view_option_advanced', 'Продвинутое'], + ['app_navigationTree_connection_view_option_custom', 'Настраиваемое'], + ['app_navigationTree_connection_view_option_showSystemObjects', 'Показывать системные объекты'], + ['app_navigationTree_refresh', 'Обновить'], + ['app_navigationTree_refresh_error', 'Не удалось обновить узел'], + ['app_navigationTree_node_change_name_error', 'Не удалось изменить название'], + ['app_navigationTree_context_disconnect', 'Отключить'], + ['app_navigationTree_connection_group_user', 'Пользовательские подключения'], + ['app_navigationTree_connection_group_shared', 'Общие подключения'], + ['app_navigationTree_empty_placeholder', 'Нет подключений.\nИспользуйте верхнее меню для создания подключения к базе.'], + ['app_navigationTree_drop_here', 'Drop here...'], +]; diff --git a/webapp/packages/plugin-navigation-tree/src/locales/zh.ts b/webapp/packages/plugin-navigation-tree/src/locales/zh.ts new file mode 100644 index 0000000000..dc78dd91ba --- /dev/null +++ b/webapp/packages/plugin-navigation-tree/src/locales/zh.ts @@ -0,0 +1,33 @@ +export default [ + ['app_navigationTree_search', 'Search elements...'], + ['app_navigationTree_limited', 'Elements are limited to {args.limit} items'], + ['app_navigationTree_action_link_with_editor', 'Link with editor'], + ['app_navigationTree_action_collapse_all', 'Collapse all'], + ['app_navigationTree_settings_filter_title', 'Filter'], + ['app_navigationTree_settings_filter_description', 'Show filtering field'], + ['app_navigationTree_settings_filter_all_title', 'Show collapsed'], + ['app_navigationTree_settings_filter_all_description', 'Shows filtered elements in collapsed folders'], + ['app_navigationTree_settings_state_title', 'Save tree state'], + ['app_navigationTree_settings_state_description', 'Reopen expanded nodes after page refresh'], + ['app_navigationTree_settings_folders_title', 'Folders'], + ['app_navigationTree_settings_folders_description', 'Open any node as tree root node'], + ['app_navigationTree_node_delete_confirmation', 'You\'re going to delete "{args.name}". Are you sure?'], + ['app_navigationTree_node_delete_error', 'Failed to delete "{args.name}'], + ['app_navigationTree_node_rename_error', 'Error occurred while renaming'], + ['app_navigationTree_node_empty', 'Empty'], + ['app_navigationTree_openNodeTab', '打开'], + ['app_navigationTree_connection_view', '连接视图'], + ['app_navigationTree_node_not_found', 'Node not found'], + ['app_navigationTree_connection_view_option_simple', '简单'], + ['app_navigationTree_connection_view_option_advanced', '完善'], + ['app_navigationTree_connection_view_option_custom', '自定义'], + ['app_navigationTree_connection_view_option_showSystemObjects', '展示系统对象'], + ['app_navigationTree_refresh', '刷新'], + ['app_navigationTree_refresh_error', 'Failed to refresh node'], + ['app_navigationTree_node_change_name_error', '更改名称时发生错误'], + ['app_navigationTree_context_disconnect', '断开连接'], + ['app_navigationTree_connection_group_user', '用户连接'], + ['app_navigationTree_connection_group_shared', '共享连接'], + ['app_navigationTree_empty_placeholder', 'No Connections.\nUse the top menu to setup connection to your database.'], + ['app_navigationTree_drop_here', 'Drop here...'], +]; diff --git a/webapp/packages/plugin-navigation-tree/src/manifest.ts b/webapp/packages/plugin-navigation-tree/src/manifest.ts index cb7809640e..78b0136fe6 100644 --- a/webapp/packages/plugin-navigation-tree/src/manifest.ts +++ b/webapp/packages/plugin-navigation-tree/src/manifest.ts @@ -8,6 +8,7 @@ import type { PluginManifest } from '@cloudbeaver/core-di'; +import { LocaleService } from './LocaleService'; import { ElementsTreeToolsMenuService } from './NavigationTree/ElementsTree/ElementsTreeTools/ElementsTreeToolsMenuService'; import { NavigationTreeBootstrap } from './NavigationTree/NavigationTreeBootstrap'; import { NavigationTreeService } from './NavigationTree/NavigationTreeService'; @@ -18,6 +19,7 @@ import { NavNodeViewService } from './NodesManager/NavNodeView/NavNodeViewServic export const navigationTreePlugin: PluginManifest = { info: { name: 'Navigation Tree plugin' }, providers: [ + LocaleService, NavigationTreeService, ElementsTreeToolsMenuService, NavigationTreeBootstrap, From 99d56c4fc63afc887797ec9e65ad5e2e7e5fa85f Mon Sep 17 00:00:00 2001 From: Konstantin Vasilev Date: Wed, 24 Aug 2022 13:03:20 +0300 Subject: [PATCH 04/17] CB-2360 fix(core-navigation-tree): Use map for deleting nodes --- .../src/NodesManager/NavTreeResource.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/webapp/packages/core-navigation-tree/src/NodesManager/NavTreeResource.ts b/webapp/packages/core-navigation-tree/src/NodesManager/NavTreeResource.ts index 24d7e97a64..ac31b58b93 100644 --- a/webapp/packages/core-navigation-tree/src/NodesManager/NavTreeResource.ts +++ b/webapp/packages/core-navigation-tree/src/NodesManager/NavTreeResource.ts @@ -190,19 +190,22 @@ export class NavTreeResource extends CachedMapResource { } } finally { runInAction(() => { - const parents: string[] = []; - const deletedIds: string[][] = []; + const deletionMap = new Map(); for (const path of deletedPaths) { const node = this.navNodeInfoResource.get(path); if (node) { - parents.push(node.parentId); - deletedIds.push([path]); + const deletedIds = deletionMap.get(node.parentId) ?? []; + deletedIds.push(path); + deletionMap.set(node.parentId, deletedIds); } } - this.deleteInNode(resourceKeyList(parents), deletedIds); + const keys = resourceKeyList([...deletionMap.keys()]); + const nodes = [...deletionMap.values()]; + + this.deleteInNode(keys, nodes); }); } }); From 25199ee9f9fd8b375f48e66a89129998bddb32fe Mon Sep 17 00:00:00 2001 From: Konstantin Vasilev Date: Thu, 25 Aug 2022 12:57:09 +0300 Subject: [PATCH 05/17] CB-2442 fix(plugin-authentication): Disable user linking on auth --- .../core-authentication/src/UserInfoResource.ts | 4 ++-- .../core-blocks/src/HTMLTemplates/head.html.ejs | 2 -- .../plugin-authentication/src/AuthenticationService.ts | 10 +++++----- .../plugin-authentication/src/Dialog/AuthDialog.tsx | 4 ++-- .../src/Dialog/useAuthDialogState.ts | 6 +++--- .../packages/plugin-authentication/src/IAuthOptions.ts | 2 +- .../plugin-authentication/src/PluginBootstrap.ts | 2 +- 7 files changed, 14 insertions(+), 16 deletions(-) diff --git a/webapp/packages/core-authentication/src/UserInfoResource.ts b/webapp/packages/core-authentication/src/UserInfoResource.ts index 961e659f95..447e2d7ee8 100644 --- a/webapp/packages/core-authentication/src/UserInfoResource.ts +++ b/webapp/packages/core-authentication/src/UserInfoResource.ts @@ -119,7 +119,7 @@ UserInfoIncludes return authInfo as AuthInfo; } - finishFederatedAuthentication(authId: string, link?: boolean): ITask { + finishFederatedAuthentication(authId: string, linkUser?: boolean): ITask { let activeTask: ITask | undefined; return new AutoRunningTask(() => this.performUpdate( @@ -139,7 +139,7 @@ UserInfoIncludes async () => { const { authInfo } = await this.graphQLService.sdk.getAuthStatus({ authId, - linkUser: link, + linkUser, customIncludeOriginDetails: true, }); return authInfo as AuthInfo; diff --git a/webapp/packages/core-blocks/src/HTMLTemplates/head.html.ejs b/webapp/packages/core-blocks/src/HTMLTemplates/head.html.ejs index 95176d4a64..bcebfe5cef 100644 --- a/webapp/packages/core-blocks/src/HTMLTemplates/head.html.ejs +++ b/webapp/packages/core-blocks/src/HTMLTemplates/head.html.ejs @@ -7,8 +7,6 @@ -