#412 - Override duplicates in config split

This commit is contained in:
Elio Struyf
2022-10-03 14:07:14 +02:00
parent 5c9d7eda17
commit 5a565f1154
2 changed files with 48 additions and 22 deletions
@@ -180,7 +180,7 @@ export const Header: React.FunctionComponent<IHeaderProps> = ({header, totalPage
</div>
{
(settings?.dashboardState.contents.pagination) && (totalPages || 0) > PAGE_LIMIT && (!grouping || grouping === GroupOption.none) && (
(settings?.dashboardState?.contents?.pagination) && (totalPages || 0) > PAGE_LIMIT && (!grouping || grouping === GroupOption.none) && (
<div className={`flex justify-center py-2 border-b border-gray-300 dark:border-vulcan-100`}>
<Pagination totalPages={totalPages || 0} />
</div>
+47 -21
View File
@@ -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<T>(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
*/