From 70a5de960f73e925c1dbaa6039a65c70c46b7f73 Mon Sep 17 00:00:00 2001 From: Elio Struyf Date: Thu, 25 Apr 2024 16:24:52 +0200 Subject: [PATCH] #796 - Settings logging --- src/helpers/DashboardSettings.ts | 160 ++++++++++++++++--------------- src/helpers/PanelSettings.ts | 109 +++++++++++---------- src/helpers/SettingsHelper.ts | 1 + 3 files changed, 143 insertions(+), 127 deletions(-) diff --git a/src/helpers/DashboardSettings.ts b/src/helpers/DashboardSettings.ts index e8bc15d3..d893a3e7 100644 --- a/src/helpers/DashboardSettings.ts +++ b/src/helpers/DashboardSettings.ts @@ -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(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( - ExtensionState.PagesView, - 'workspace' - ), - contentTypes: ContentType.getAll() || [], - draftField: Settings.get(SETTING_CONTENT_DRAFT_FIELD), - customSorting: Settings.get(SETTING_CONTENT_SORTING), - contentFolders: Folders.get(), - filters: - Settings.get<(FilterType | { title: string; name: string })[]>(SETTING_CONTENT_FILTERS), - crntFramework: Settings.get(SETTING_FRAMEWORK_ID), - framework: !isInitialized && wsFolder ? await FrameworkDetector.get(wsFolder.fsPath) : null, - scripts: Settings.get(SETTING_CUSTOM_SCRIPTS) || [], - date: { - format: Settings.get(SETTING_DATE_FORMAT) || '' - }, - dashboardState: { - contents: { - sorting: await ext.getState( - ExtensionState.Dashboard.Contents.Sorting, - 'workspace' - ), - defaultSorting: Settings.get(SETTING_CONTENT_SORTING_DEFAULT), - tags: Settings.get(SETTING_DASHBOARD_CONTENT_TAGS), - templatesEnabled: Settings.get(SETTING_TEMPLATES_ENABLED), - pagination: pagination !== undefined ? pagination : true, - cardFields: { - state: Settings.get(SETTING_DASHBOARD_CONTENT_CARD_STATE), - date: Settings.get(SETTING_DASHBOARD_CONTENT_CARD_DATE), - title: Settings.get(SETTING_DASHBOARD_CONTENT_CARD_TITLE), - description: Settings.get(SETTING_DASHBOARD_CONTENT_CARD_DESCRIPTION) + try { + const ext = Extension.getInstance(); + const wsFolder = Folders.getWorkspaceFolder(); + const isInitialized = await Project.isInitialized(); + const pagination = Settings.get(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( + ExtensionState.PagesView, + 'workspace' + ), + contentTypes: ContentType.getAll() || [], + draftField: Settings.get(SETTING_CONTENT_DRAFT_FIELD), + customSorting: Settings.get(SETTING_CONTENT_SORTING), + contentFolders: Folders.get(), + filters: + Settings.get<(FilterType | { title: string; name: string })[]>(SETTING_CONTENT_FILTERS), + crntFramework: Settings.get(SETTING_FRAMEWORK_ID), + framework: !isInitialized && wsFolder ? await FrameworkDetector.get(wsFolder.fsPath) : null, + scripts: Settings.get(SETTING_CUSTOM_SCRIPTS) || [], + date: { + format: Settings.get(SETTING_DATE_FORMAT) || '' + }, + dashboardState: { + contents: { + sorting: await ext.getState( + ExtensionState.Dashboard.Contents.Sorting, + 'workspace' + ), + defaultSorting: Settings.get(SETTING_CONTENT_SORTING_DEFAULT), + tags: Settings.get(SETTING_DASHBOARD_CONTENT_TAGS), + templatesEnabled: Settings.get(SETTING_TEMPLATES_ENABLED), + pagination: pagination !== undefined ? pagination : true, + cardFields: { + state: Settings.get(SETTING_DASHBOARD_CONTENT_CARD_STATE), + date: Settings.get(SETTING_DASHBOARD_CONTENT_CARD_DATE), + title: Settings.get(SETTING_DASHBOARD_CONTENT_CARD_TITLE), + description: Settings.get(SETTING_DASHBOARD_CONTENT_CARD_DESCRIPTION) + } + }, + media: { + sorting: await ext.getState( + ExtensionState.Dashboard.Media.Sorting, + 'workspace' + ), + defaultSorting: Settings.get(SETTING_MEDIA_SORTING_DEFAULT), + selectedFolder: await ext.getState( + ExtensionState.SelectedFolder, + 'workspace' + ), + mimeTypes: Settings.get(SETTING_MEDIA_SUPPORTED_MIMETYPES) + }, + welcome: { + contentFolders: await Folders.getContentFolders() } }, + dataFiles: await this.getDataFiles(), + dataTypes: Settings.get(SETTING_DATA_TYPES), + snippets: Settings.get(SETTING_CONTENT_SNIPPETS), + snippetsWrapper: Settings.get(SETTING_SNIPPETS_WRAPPER), + isBacker: await ext.getState(CONTEXT.backer, 'global'), + websiteUrl: Settings.get(SETTING_WEBSITE_URL), media: { - sorting: await ext.getState( - ExtensionState.Dashboard.Media.Sorting, - 'workspace' - ), - defaultSorting: Settings.get(SETTING_MEDIA_SORTING_DEFAULT), - selectedFolder: await ext.getState( - ExtensionState.SelectedFolder, - 'workspace' - ), - mimeTypes: Settings.get(SETTING_MEDIA_SUPPORTED_MIMETYPES) + contentTypes: Settings.get(SETTING_MEDIA_CONTENTTYPES) || [ + DEFAULT_MEDIA_CONTENT_TYPE + ] }, - welcome: { - contentFolders: await Folders.getContentFolders() - } - }, - dataFiles: await this.getDataFiles(), - dataTypes: Settings.get(SETTING_DATA_TYPES), - snippets: Settings.get(SETTING_CONTENT_SNIPPETS), - snippetsWrapper: Settings.get(SETTING_SNIPPETS_WRAPPER), - isBacker: await ext.getState(CONTEXT.backer, 'global'), - websiteUrl: Settings.get(SETTING_WEBSITE_URL), - media: { - contentTypes: Settings.get(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; + } } /** diff --git a/src/helpers/PanelSettings.ts b/src/helpers/PanelSettings.ts index 32788a42..84ca2ad1 100644 --- a/src/helpers/PanelSettings.ts +++ b/src/helpers/PanelSettings.ts @@ -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 { - return { - aiEnabled: Settings.get(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(SETTING_SLUG_UPDATE_FILE_NAME) - }, - date: { - format: Settings.get(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(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(SETTING_CONTENT_DRAFT_FIELD), - isBacker: await Extension.getInstance().getState( - CONTEXT.backer, - 'global' - ), - framework: Settings.get(SETTING_FRAMEWORK_ID), - commands: { - start: Settings.get(SETTING_FRAMEWORK_START) - }, - dataTypes: Settings.get(SETTING_DATA_TYPES), - fieldGroups: Settings.get(SETTING_TAXONOMY_FIELD_GROUPS), - contentFolders: Folders.get(), - websiteUrl: Settings.get(SETTING_WEBSITE_URL) || '', - disabledActions: Settings.get(SETTING_PANEL_ACTIONS_DISABLED) || [] - }; + Logger.info('Getting panel settings'); + + try { + return { + aiEnabled: Settings.get(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(SETTING_SLUG_UPDATE_FILE_NAME) + }, + date: { + format: Settings.get(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(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(SETTING_CONTENT_DRAFT_FIELD), + isBacker: await Extension.getInstance().getState( + CONTEXT.backer, + 'global' + ), + framework: Settings.get(SETTING_FRAMEWORK_ID), + commands: { + start: Settings.get(SETTING_FRAMEWORK_START) + }, + dataTypes: Settings.get(SETTING_DATA_TYPES), + fieldGroups: Settings.get(SETTING_TAXONOMY_FIELD_GROUPS), + contentFolders: Folders.get(), + websiteUrl: Settings.get(SETTING_WEBSITE_URL) || '', + disabledActions: Settings.get(SETTING_PANEL_ACTIONS_DISABLED) || [] + }; + } catch (error) { + Logger.error(`Error getting panel settings: ${(error as Error).message}`); + return {} as IPanelSettings; + } } /** diff --git a/src/helpers/SettingsHelper.ts b/src/helpers/SettingsHelper.ts index 19139bf4..eca2a1b4 100644 --- a/src/helpers/SettingsHelper.ts +++ b/src/helpers/SettingsHelper.ts @@ -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();