diff --git a/package.json b/package.json index d8f86302..4b3132f2 100644 --- a/package.json +++ b/package.json @@ -268,6 +268,11 @@ "type": "string", "default": null, "description": "The URL of the button when you are not editing a file in a Git repository. Set to null to disable." + }, + "rpc.suppressNotifications": { + "type": "boolean", + "default": false, + "description": "Controls whether error messages should be shown to the user." } } } diff --git a/src/config.ts b/src/config.ts index 607d9f5f..b03d1c40 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,5 +1,34 @@ -import { workspace } from 'vscode'; -import { WorkspaceExtensionConfiguration } from './configuration'; +import { workspace, WorkspaceConfiguration } from 'vscode'; + +export type WorkspaceExtensionConfiguration = WorkspaceConfiguration & { + id: string; + enabled: boolean; + detailsIdling: string; + detailsViewing: string; + detailsEditing: string; + detailsDebugging: string; + lowerDetailsIdling: string; + lowerDetailsViewing: string; + lowerDetailsEditing: string; + lowerDetailsDebugging: string; + lowerDetailsNoWorkspaceFound: string; + largeImageIdling: string; + largeImage: string; + smallImage: string; + removeElapsedTime: boolean; + ignoreWorkspaces: string[]; + idleTimeout: number; + checkIdle: boolean; + idleText: string; + appName: string; + showProblems: boolean; + problemsText: string; + buttonEnabled: boolean; + buttonActiveLabel: string; + buttonInactiveLabel: string; + buttonInactiveUrl: string; + suppressNotifications: boolean; +}; export function getConfig(): WorkspaceExtensionConfiguration { return workspace.getConfiguration('rpc') as WorkspaceExtensionConfiguration; diff --git a/src/configuration.ts b/src/configuration.ts deleted file mode 100644 index c42e1e2c..00000000 --- a/src/configuration.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { WorkspaceConfiguration } from 'vscode'; - -export type WorkspaceExtensionConfiguration = WorkspaceConfiguration & { - id: string; - enabled: boolean; - detailsIdling: string; - detailsViewing: string; - detailsEditing: string; - detailsDebugging: string; - lowerDetailsIdling: string; - lowerDetailsViewing: string; - lowerDetailsEditing: string; - lowerDetailsDebugging: string; - lowerDetailsNoWorkspaceFound: string; - largeImageIdling: string; - largeImage: string; - smallImage: string; - removeElapsedTime: boolean; - ignoreWorkspaces: string[]; - idleTimeout: number; - checkIdle: boolean; - idleText: string; - appName: string; - showProblems: boolean; - problemsText: string; - buttonEnabled: boolean; - buttonActiveLabel: string; - buttonInactiveLabel: string; - buttonInactiveUrl: string; -}; diff --git a/src/constants.ts b/src/constants.ts index fce1d231..09ca2b2c 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -43,7 +43,8 @@ export const enum CONFIG_KEYS { ButtonEnabled = 'buttonEnabled', ButtonActiveLabel = 'buttonActiveLabel', ButtonInactiveLabel = 'buttonInactiveLabel', - ButtonInactiveUrl = 'buttonInactiveUrl' + ButtonInactiveUrl = 'buttonInactiveUrl', + SuppressNotifications = 'suppressNotifications' } export const enum REPLACE_KEYS { diff --git a/src/extension.ts b/src/extension.ts index 110bf296..62210074 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -103,6 +103,14 @@ async function login() { await rpc.destroy(); + if (!config[CONFIG_KEYS.SuppressNotifications]) { + error?.message?.includes('ENOENT') + ? void window.showErrorMessage('No Discord client detected') + : void window.showErrorMessage( + `Couldn't connect to Discord via RPC: ${error as string}` + ); + } + statusBarIcon.text = '$(search-refresh) Reconnect to Discord Gateway'; statusBarIcon.command = 'rpc.reconnect'; }