From 5a565f1154e33244d1d2dcf3248d305118b407b9 Mon Sep 17 00:00:00 2001 From: Elio Struyf Date: Mon, 3 Oct 2022 14:07:14 +0200 Subject: [PATCH] #412 - Override duplicates in config split --- .../components/Header/Header.tsx | 2 +- src/helpers/SettingsHelper.ts | 68 +++++++++++++------ 2 files changed, 48 insertions(+), 22 deletions(-) diff --git a/src/dashboardWebView/components/Header/Header.tsx b/src/dashboardWebView/components/Header/Header.tsx index 5be485bb..05437604 100644 --- a/src/dashboardWebView/components/Header/Header.tsx +++ b/src/dashboardWebView/components/Header/Header.tsx @@ -180,7 +180,7 @@ export const Header: React.FunctionComponent = ({header, totalPage { - (settings?.dashboardState.contents.pagination) && (totalPages || 0) > PAGE_LIMIT && (!grouping || grouping === GroupOption.none) && ( + (settings?.dashboardState?.contents?.pagination) && (totalPages || 0) > PAGE_LIMIT && (!grouping || grouping === GroupOption.none) && (
diff --git a/src/helpers/SettingsHelper.ts b/src/helpers/SettingsHelper.ts index e3eafc3c..b566345c 100644 --- a/src/helpers/SettingsHelper.ts +++ b/src/helpers/SettingsHelper.ts @@ -3,7 +3,7 @@ import { Telemetry } from './Telemetry'; import { Notifications } from './Notifications'; import { commands, Uri, workspace, window } from 'vscode'; import * as vscode from 'vscode'; -import { ContentType, CustomTaxonomy, TaxonomyType } from '../models'; +import { ContentFolder, ContentType, CustomPlaceholder, CustomTaxonomy, DataFile, DataFolder, DataType, TaxonomyType } from '../models'; import { SETTING_TAXONOMY_TAGS, SETTING_TAXONOMY_CATEGORIES, CONFIG_KEY, CONTEXT, ExtensionState, SETTING_TAXONOMY_CUSTOM, TelemetryEvent, COMMAND_NAME, SETTING_TAXONOMY_CONTENT_TYPES, SETTING_CONTENT_PAGE_FOLDERS, SETTING_CONTENT_SNIPPETS, SETTING_CONTENT_PLACEHOLDERS, SETTING_CUSTOM_SCRIPTS, SETTING_DATA_FILES, SETTING_DATA_TYPES, SETTING_DATA_FOLDERS } from '../constants'; import { Folders } from '../commands/Folders'; import { join, basename, dirname, parse } from 'path'; @@ -477,35 +477,41 @@ export class Settings { } // Array settings - if (relSettingName === SETTING_TAXONOMY_CONTENT_TYPES.toLowerCase() || - relSettingName === SETTING_CONTENT_PAGE_FOLDERS.toLowerCase() || - relSettingName === SETTING_CONTENT_PLACEHOLDERS.toLowerCase() || - relSettingName === SETTING_CUSTOM_SCRIPTS.toLowerCase() || - relSettingName === SETTING_DATA_FILES.toLowerCase() || - relSettingName === SETTING_DATA_FOLDERS.toLowerCase() || - relSettingName === SETTING_DATA_TYPES.toLowerCase()) { + if (relSettingName === SETTING_CUSTOM_SCRIPTS.toLowerCase()) { // Get the correct setting name let settingNameValue = "" - if (relSettingName === SETTING_TAXONOMY_CONTENT_TYPES.toLowerCase()) { - settingNameValue = SETTING_TAXONOMY_CONTENT_TYPES; - } else if (relSettingName === SETTING_CONTENT_PAGE_FOLDERS.toLowerCase()) { - settingNameValue = SETTING_CONTENT_PAGE_FOLDERS; - } else if (relSettingName === SETTING_CONTENT_PLACEHOLDERS.toLowerCase()) { - settingNameValue = SETTING_CONTENT_PLACEHOLDERS; - } else if (relSettingName === SETTING_CUSTOM_SCRIPTS.toLowerCase()) { + if (relSettingName === SETTING_CUSTOM_SCRIPTS.toLowerCase()) { settingNameValue = SETTING_CUSTOM_SCRIPTS; - } else if (relSettingName === SETTING_DATA_FILES.toLowerCase()) { - settingNameValue = SETTING_DATA_FILES; - } else if (relSettingName === SETTING_DATA_FOLDERS.toLowerCase()) { - settingNameValue = SETTING_DATA_FOLDERS; - } else if (relSettingName === SETTING_DATA_TYPES.toLowerCase()) { - settingNameValue = SETTING_DATA_TYPES; } const crntValue = Settings.globalConfig[`${CONFIG_KEY}.${settingNameValue}`] || []; Settings.globalConfig[`${CONFIG_KEY}.${settingNameValue}`] = [...crntValue, configJson]; } + // Content types + else if (relSettingName === SETTING_TAXONOMY_CONTENT_TYPES.toLowerCase()) { + Settings.updateGlobalConfigArraySetting(SETTING_TAXONOMY_CONTENT_TYPES, "name", configJson); + } + // Data files + else if (relSettingName === SETTING_DATA_FILES.toLowerCase()) { + Settings.updateGlobalConfigArraySetting(SETTING_DATA_FILES, "id", configJson); + } + // Data folders + else if (relSettingName === SETTING_DATA_FOLDERS.toLowerCase()) { + Settings.updateGlobalConfigArraySetting(SETTING_DATA_FOLDERS, "id", configJson); + } + // Data types + else if (relSettingName === SETTING_DATA_TYPES.toLowerCase()) { + Settings.updateGlobalConfigArraySetting(SETTING_DATA_TYPES, "id", configJson); + } + // Page folders + else if (relSettingName === SETTING_CONTENT_PAGE_FOLDERS.toLowerCase()) { + Settings.updateGlobalConfigArraySetting(SETTING_CONTENT_PAGE_FOLDERS, "path", configJson); + } + // Placeholders + else if (relSettingName === SETTING_CONTENT_PLACEHOLDERS.toLowerCase()) { + Settings.updateGlobalConfigArraySetting(SETTING_CONTENT_PLACEHOLDERS, "id", configJson); + } // Object settings else if (relSettingName === SETTING_CONTENT_SNIPPETS.toLowerCase()) { // Filename is the key @@ -519,6 +525,26 @@ export class Settings { } } + /** + * Update an array setting in the global config + * @param settingName + * @param fieldName + * @param configJson + */ + private static updateGlobalConfigArraySetting(settingName: string, fieldName: string, configJson: any): void { + const crntValue: T[] = Settings.globalConfig[`${CONFIG_KEY}.${settingName}`] || []; + + // Check if folder is already added + const itemIdx = crntValue.findIndex((item: any) => item[fieldName] === configJson[fieldName]); + if (itemIdx !== -1) { + crntValue[itemIdx] = configJson; + } else { + crntValue.push(configJson); + } + + Settings.globalConfig[`${CONFIG_KEY}.${settingName}`] = [...crntValue]; + } + /** * Create a file creation watcher */