#796 - Settings logging

This commit is contained in:
Elio Struyf
2024-04-25 16:24:52 +02:00
parent 31e27f63c1
commit 70a5de960f
3 changed files with 143 additions and 127 deletions
+84 -76
View File
@@ -57,6 +57,7 @@ import { Settings } from './SettingsHelper';
import { parseWinPath } from './parseWinPath';
import { TaxonomyHelper } from './TaxonomyHelper';
import { ContentType } from './ContentType';
import { Logger } from './Logger';
export class DashboardSettings {
private static cachedSettings: ISettings | undefined = undefined;
@@ -86,88 +87,95 @@ export class DashboardSettings {
}
public static async getSettings() {
const ext = Extension.getInstance();
const wsFolder = Folders.getWorkspaceFolder();
const isInitialized = await Project.isInitialized();
const pagination = Settings.get<boolean | number>(SETTING_DASHBOARD_CONTENT_PAGINATION);
Logger.info('Getting dashboard settings');
const settings = {
projects: Settings.getProjects(),
project: Settings.getProject(),
git: await GitListener.getSettings(),
beta: ext.isBetaVersion(),
wsFolder: wsFolder ? wsFolder.fsPath : '',
staticFolder: Folders.getStaticFolderRelativePath(),
initialized: isInitialized,
tags: (await TaxonomyHelper.get(TaxonomyType.Tag)) || [],
categories: (await TaxonomyHelper.get(TaxonomyType.Category)) || [],
customTaxonomy: Settings.get(SETTING_TAXONOMY_CUSTOM, true) || [],
openOnStart: Settings.get(SETTING_DASHBOARD_OPENONSTART),
versionInfo: ext.getVersion(),
pageViewType: await ext.getState<DashboardViewType | undefined>(
ExtensionState.PagesView,
'workspace'
),
contentTypes: ContentType.getAll() || [],
draftField: Settings.get<DraftField>(SETTING_CONTENT_DRAFT_FIELD),
customSorting: Settings.get<SortingSetting[]>(SETTING_CONTENT_SORTING),
contentFolders: Folders.get(),
filters:
Settings.get<(FilterType | { title: string; name: string })[]>(SETTING_CONTENT_FILTERS),
crntFramework: Settings.get<string>(SETTING_FRAMEWORK_ID),
framework: !isInitialized && wsFolder ? await FrameworkDetector.get(wsFolder.fsPath) : null,
scripts: Settings.get<CustomScript[]>(SETTING_CUSTOM_SCRIPTS) || [],
date: {
format: Settings.get<string>(SETTING_DATE_FORMAT) || ''
},
dashboardState: {
contents: {
sorting: await ext.getState<SortingOption | undefined>(
ExtensionState.Dashboard.Contents.Sorting,
'workspace'
),
defaultSorting: Settings.get<string>(SETTING_CONTENT_SORTING_DEFAULT),
tags: Settings.get<string>(SETTING_DASHBOARD_CONTENT_TAGS),
templatesEnabled: Settings.get<boolean>(SETTING_TEMPLATES_ENABLED),
pagination: pagination !== undefined ? pagination : true,
cardFields: {
state: Settings.get<string>(SETTING_DASHBOARD_CONTENT_CARD_STATE),
date: Settings.get<string>(SETTING_DASHBOARD_CONTENT_CARD_DATE),
title: Settings.get<string>(SETTING_DASHBOARD_CONTENT_CARD_TITLE),
description: Settings.get<string>(SETTING_DASHBOARD_CONTENT_CARD_DESCRIPTION)
try {
const ext = Extension.getInstance();
const wsFolder = Folders.getWorkspaceFolder();
const isInitialized = await Project.isInitialized();
const pagination = Settings.get<boolean | number>(SETTING_DASHBOARD_CONTENT_PAGINATION);
const settings = {
projects: Settings.getProjects(),
project: Settings.getProject(),
git: await GitListener.getSettings(),
beta: ext.isBetaVersion(),
wsFolder: wsFolder ? wsFolder.fsPath : '',
staticFolder: Folders.getStaticFolderRelativePath(),
initialized: isInitialized,
tags: (await TaxonomyHelper.get(TaxonomyType.Tag)) || [],
categories: (await TaxonomyHelper.get(TaxonomyType.Category)) || [],
customTaxonomy: Settings.get(SETTING_TAXONOMY_CUSTOM, true) || [],
openOnStart: Settings.get(SETTING_DASHBOARD_OPENONSTART),
versionInfo: ext.getVersion(),
pageViewType: await ext.getState<DashboardViewType | undefined>(
ExtensionState.PagesView,
'workspace'
),
contentTypes: ContentType.getAll() || [],
draftField: Settings.get<DraftField>(SETTING_CONTENT_DRAFT_FIELD),
customSorting: Settings.get<SortingSetting[]>(SETTING_CONTENT_SORTING),
contentFolders: Folders.get(),
filters:
Settings.get<(FilterType | { title: string; name: string })[]>(SETTING_CONTENT_FILTERS),
crntFramework: Settings.get<string>(SETTING_FRAMEWORK_ID),
framework: !isInitialized && wsFolder ? await FrameworkDetector.get(wsFolder.fsPath) : null,
scripts: Settings.get<CustomScript[]>(SETTING_CUSTOM_SCRIPTS) || [],
date: {
format: Settings.get<string>(SETTING_DATE_FORMAT) || ''
},
dashboardState: {
contents: {
sorting: await ext.getState<SortingOption | undefined>(
ExtensionState.Dashboard.Contents.Sorting,
'workspace'
),
defaultSorting: Settings.get<string>(SETTING_CONTENT_SORTING_DEFAULT),
tags: Settings.get<string>(SETTING_DASHBOARD_CONTENT_TAGS),
templatesEnabled: Settings.get<boolean>(SETTING_TEMPLATES_ENABLED),
pagination: pagination !== undefined ? pagination : true,
cardFields: {
state: Settings.get<string>(SETTING_DASHBOARD_CONTENT_CARD_STATE),
date: Settings.get<string>(SETTING_DASHBOARD_CONTENT_CARD_DATE),
title: Settings.get<string>(SETTING_DASHBOARD_CONTENT_CARD_TITLE),
description: Settings.get<string>(SETTING_DASHBOARD_CONTENT_CARD_DESCRIPTION)
}
},
media: {
sorting: await ext.getState<SortingOption | undefined>(
ExtensionState.Dashboard.Media.Sorting,
'workspace'
),
defaultSorting: Settings.get<string>(SETTING_MEDIA_SORTING_DEFAULT),
selectedFolder: await ext.getState<string | undefined>(
ExtensionState.SelectedFolder,
'workspace'
),
mimeTypes: Settings.get<string[]>(SETTING_MEDIA_SUPPORTED_MIMETYPES)
},
welcome: {
contentFolders: await Folders.getContentFolders()
}
},
dataFiles: await this.getDataFiles(),
dataTypes: Settings.get<DataType[]>(SETTING_DATA_TYPES),
snippets: Settings.get<Snippets>(SETTING_CONTENT_SNIPPETS),
snippetsWrapper: Settings.get<boolean>(SETTING_SNIPPETS_WRAPPER),
isBacker: await ext.getState<boolean | undefined>(CONTEXT.backer, 'global'),
websiteUrl: Settings.get<string>(SETTING_WEBSITE_URL),
media: {
sorting: await ext.getState<SortingOption | undefined>(
ExtensionState.Dashboard.Media.Sorting,
'workspace'
),
defaultSorting: Settings.get<string>(SETTING_MEDIA_SORTING_DEFAULT),
selectedFolder: await ext.getState<string | undefined>(
ExtensionState.SelectedFolder,
'workspace'
),
mimeTypes: Settings.get<string[]>(SETTING_MEDIA_SUPPORTED_MIMETYPES)
contentTypes: Settings.get<MediaContentType[]>(SETTING_MEDIA_CONTENTTYPES) || [
DEFAULT_MEDIA_CONTENT_TYPE
]
},
welcome: {
contentFolders: await Folders.getContentFolders()
}
},
dataFiles: await this.getDataFiles(),
dataTypes: Settings.get<DataType[]>(SETTING_DATA_TYPES),
snippets: Settings.get<Snippets>(SETTING_CONTENT_SNIPPETS),
snippetsWrapper: Settings.get<boolean>(SETTING_SNIPPETS_WRAPPER),
isBacker: await ext.getState<boolean | undefined>(CONTEXT.backer, 'global'),
websiteUrl: Settings.get<string>(SETTING_WEBSITE_URL),
media: {
contentTypes: Settings.get<MediaContentType[]>(SETTING_MEDIA_CONTENTTYPES) || [
DEFAULT_MEDIA_CONTENT_TYPE
]
},
lastUpdated: new Date().getTime()
} as ISettings;
lastUpdated: new Date().getTime()
} as ISettings;
return settings;
return settings;
} catch (error) {
Logger.error(`Error getting dashboard settings ${(error as Error).message}`);
return {} as ISettings;
}
}
/**
+58 -51
View File
@@ -4,7 +4,7 @@ import {
SETTING_WEBSITE_URL
} from './../constants/settings';
import { workspace } from 'vscode';
import { ContentType, Extension, Settings, TaxonomyHelper } from '.';
import { ContentType, Extension, Logger, Settings, TaxonomyHelper } from '.';
import { Dashboard } from '../commands/Dashboard';
import { Preview } from '../commands/Preview';
import { Project } from '../commands/Project';
@@ -48,56 +48,63 @@ import { Folders } from '../commands';
export class PanelSettings {
public static async get(): Promise<IPanelSettings> {
return {
aiEnabled: Settings.get<boolean>(SETTING_SPONSORS_AI_ENABLED) || false,
git: await GitListener.getSettings(),
seo: {
title: (Settings.get(SETTING_SEO_TITLE_LENGTH) as number) || -1,
slug: (Settings.get(SETTING_SEO_SLUG_LENGTH) as number) || -1,
description: (Settings.get(SETTING_SEO_DESCRIPTION_LENGTH) as number) || -1,
content: (Settings.get(SETTING_SEO_CONTENT_MIN_LENGTH) as number) || -1,
titleField: (Settings.get(SETTING_SEO_TITLE_FIELD) as string) || DefaultFields.Title,
descriptionField:
(Settings.get(SETTING_SEO_DESCRIPTION_FIELD) as string) || DefaultFields.Description
},
slug: {
prefix: Settings.get(SETTING_SLUG_PREFIX) || '',
suffix: Settings.get(SETTING_SLUG_SUFFIX) || '',
updateFileName: !!Settings.get<boolean>(SETTING_SLUG_UPDATE_FILE_NAME)
},
date: {
format: Settings.get<string>(SETTING_DATE_FORMAT) || ''
},
tags: (await TaxonomyHelper.get(TaxonomyType.Tag)) || [],
categories: (await TaxonomyHelper.get(TaxonomyType.Category)) || [],
customTaxonomy: Settings.get(SETTING_TAXONOMY_CUSTOM, true) || [],
freeform: Settings.get(SETTING_PANEL_FREEFORM),
scripts: (Settings.get<CustomScript[]>(SETTING_CUSTOM_SCRIPTS) || []).filter(
(s) => (s.type === ScriptType.Content || !s.type) && !s.hidden
),
isInitialized: await Project.isInitialized(),
modifiedDateUpdate: Settings.get(SETTING_AUTO_UPDATE_DATE) || false,
writingSettingsEnabled: this.isWritingSettingsEnabled() || false,
fmHighlighting: Settings.get(SETTING_CONTENT_FRONTMATTER_HIGHLIGHT),
preview: Preview.getSettings(),
commaSeparatedFields: Settings.get(SETTING_COMMA_SEPARATED_FIELDS) || [],
contentTypes: ContentType.getAll() || [],
dashboardViewData: Dashboard.viewData,
draftField: Settings.get<DraftField>(SETTING_CONTENT_DRAFT_FIELD),
isBacker: await Extension.getInstance().getState<boolean | undefined>(
CONTEXT.backer,
'global'
),
framework: Settings.get<string>(SETTING_FRAMEWORK_ID),
commands: {
start: Settings.get<string>(SETTING_FRAMEWORK_START)
},
dataTypes: Settings.get<DataType[]>(SETTING_DATA_TYPES),
fieldGroups: Settings.get<FieldGroup[]>(SETTING_TAXONOMY_FIELD_GROUPS),
contentFolders: Folders.get(),
websiteUrl: Settings.get<string>(SETTING_WEBSITE_URL) || '',
disabledActions: Settings.get<PanelAction[]>(SETTING_PANEL_ACTIONS_DISABLED) || []
};
Logger.info('Getting panel settings');
try {
return {
aiEnabled: Settings.get<boolean>(SETTING_SPONSORS_AI_ENABLED) || false,
git: await GitListener.getSettings(),
seo: {
title: (Settings.get(SETTING_SEO_TITLE_LENGTH) as number) || -1,
slug: (Settings.get(SETTING_SEO_SLUG_LENGTH) as number) || -1,
description: (Settings.get(SETTING_SEO_DESCRIPTION_LENGTH) as number) || -1,
content: (Settings.get(SETTING_SEO_CONTENT_MIN_LENGTH) as number) || -1,
titleField: (Settings.get(SETTING_SEO_TITLE_FIELD) as string) || DefaultFields.Title,
descriptionField:
(Settings.get(SETTING_SEO_DESCRIPTION_FIELD) as string) || DefaultFields.Description
},
slug: {
prefix: Settings.get(SETTING_SLUG_PREFIX) || '',
suffix: Settings.get(SETTING_SLUG_SUFFIX) || '',
updateFileName: !!Settings.get<boolean>(SETTING_SLUG_UPDATE_FILE_NAME)
},
date: {
format: Settings.get<string>(SETTING_DATE_FORMAT) || ''
},
tags: (await TaxonomyHelper.get(TaxonomyType.Tag)) || [],
categories: (await TaxonomyHelper.get(TaxonomyType.Category)) || [],
customTaxonomy: Settings.get(SETTING_TAXONOMY_CUSTOM, true) || [],
freeform: Settings.get(SETTING_PANEL_FREEFORM),
scripts: (Settings.get<CustomScript[]>(SETTING_CUSTOM_SCRIPTS) || []).filter(
(s) => (s.type === ScriptType.Content || !s.type) && !s.hidden
),
isInitialized: await Project.isInitialized(),
modifiedDateUpdate: Settings.get(SETTING_AUTO_UPDATE_DATE) || false,
writingSettingsEnabled: this.isWritingSettingsEnabled() || false,
fmHighlighting: Settings.get(SETTING_CONTENT_FRONTMATTER_HIGHLIGHT),
preview: Preview.getSettings(),
commaSeparatedFields: Settings.get(SETTING_COMMA_SEPARATED_FIELDS) || [],
contentTypes: ContentType.getAll() || [],
dashboardViewData: Dashboard.viewData,
draftField: Settings.get<DraftField>(SETTING_CONTENT_DRAFT_FIELD),
isBacker: await Extension.getInstance().getState<boolean | undefined>(
CONTEXT.backer,
'global'
),
framework: Settings.get<string>(SETTING_FRAMEWORK_ID),
commands: {
start: Settings.get<string>(SETTING_FRAMEWORK_START)
},
dataTypes: Settings.get<DataType[]>(SETTING_DATA_TYPES),
fieldGroups: Settings.get<FieldGroup[]>(SETTING_TAXONOMY_FIELD_GROUPS),
contentFolders: Folders.get(),
websiteUrl: Settings.get<string>(SETTING_WEBSITE_URL) || '',
disabledActions: Settings.get<PanelAction[]>(SETTING_PANEL_ACTIONS_DISABLED) || []
};
} catch (error) {
Logger.error(`Error getting panel settings: ${(error as Error).message}`);
return {} as IPanelSettings;
}
}
/**
+1
View File
@@ -250,6 +250,7 @@ export class Settings {
*/
public static async onConfigChange() {
const projectConfig = await Settings.projectConfigPath();
Logger.info(`Project config path: ${projectConfig}`);
workspace.onDidChangeConfiguration(() => {
Settings.triggerListeners();