diff --git a/src/vs/editor/common/languages.ts b/src/vs/editor/common/languages.ts index 48b53b97b166b..fd06b0591e776 100644 --- a/src/vs/editor/common/languages.ts +++ b/src/vs/editor/common/languages.ts @@ -1658,6 +1658,14 @@ export enum CommentMode { Preview = 1 } +/** + * @internal + */ +export enum CommentState { + Published = 0, + Draft = 1 +} + /** * @internal */ diff --git a/src/vs/workbench/api/common/extHost.api.impl.ts b/src/vs/workbench/api/common/extHost.api.impl.ts index d6b2c3a4fffc7..0ca0b95ca9ca2 100644 --- a/src/vs/workbench/api/common/extHost.api.impl.ts +++ b/src/vs/workbench/api/common/extHost.api.impl.ts @@ -1285,6 +1285,7 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I ColorPresentation: extHostTypes.ColorPresentation, ColorThemeKind: extHostTypes.ColorThemeKind, CommentMode: extHostTypes.CommentMode, + CommentState: extHostTypes.CommentState, CommentThreadCollapsibleState: extHostTypes.CommentThreadCollapsibleState, CommentThreadState: extHostTypes.CommentThreadState, CompletionItem: extHostTypes.CompletionItem, diff --git a/src/vs/workbench/api/common/extHost.protocol.ts b/src/vs/workbench/api/common/extHost.protocol.ts index bae88633ffbc5..b42dbbd126744 100644 --- a/src/vs/workbench/api/common/extHost.protocol.ts +++ b/src/vs/workbench/api/common/extHost.protocol.ts @@ -119,6 +119,7 @@ export interface CommentChanges { readonly commentReactions?: languages.CommentReaction[]; readonly label?: string; readonly mode?: languages.CommentMode; + readonly state?: languages.CommentState; readonly timestamp?: string; } diff --git a/src/vs/workbench/api/common/extHostComments.ts b/src/vs/workbench/api/common/extHostComments.ts index ffa1ff11e42dd..13f02e08b35b7 100644 --- a/src/vs/workbench/api/common/extHostComments.ts +++ b/src/vs/workbench/api/common/extHostComments.ts @@ -491,7 +491,7 @@ export function createExtHostComments(mainContext: IMainContext, commands: ExtHo } if (modified('comments')) { formattedModifications.comments = - this._comments.map(cmt => convertToDTOComment(this, cmt, this._commentsMap)); + this._comments.map(cmt => convertToDTOComment(this, cmt, this._commentsMap, this.extensionDescription)); } if (modified('collapsibleState')) { formattedModifications.collapseState = convertToCollapsibleState(this._collapseState); @@ -666,13 +666,17 @@ export function createExtHostComments(mainContext: IMainContext, commands: ExtHo } } - function convertToDTOComment(thread: ExtHostCommentThread, vscodeComment: vscode.Comment, commentsMap: Map): CommentChanges { + function convertToDTOComment(thread: ExtHostCommentThread, vscodeComment: vscode.Comment, commentsMap: Map, extension: IExtensionDescription): CommentChanges { let commentUniqueId = commentsMap.get(vscodeComment)!; if (!commentUniqueId) { commentUniqueId = ++thread.commentHandle; commentsMap.set(vscodeComment, commentUniqueId); } + if (vscodeComment.state !== undefined) { + checkProposedApiEnabled(extension, 'commentsDraftState'); + } + return { mode: vscodeComment.mode, contextValue: vscodeComment.contextValue, @@ -682,6 +686,7 @@ export function createExtHostComments(mainContext: IMainContext, commands: ExtHo userIconPath: vscodeComment.author.iconPath, label: vscodeComment.label, commentReactions: vscodeComment.reactions ? vscodeComment.reactions.map(reaction => convertToReaction(reaction)) : undefined, + state: vscodeComment.state, timestamp: vscodeComment.timestamp?.toJSON() }; } diff --git a/src/vs/workbench/api/common/extHostTypes.ts b/src/vs/workbench/api/common/extHostTypes.ts index 3ea4a313f2aa0..b815f0039e236 100644 --- a/src/vs/workbench/api/common/extHostTypes.ts +++ b/src/vs/workbench/api/common/extHostTypes.ts @@ -3056,6 +3056,11 @@ export enum CommentMode { Preview = 1 } +export enum CommentState { + Published = 0, + Draft = 1 +} + export enum CommentThreadState { Unresolved = 0, Resolved = 1 diff --git a/src/vs/workbench/services/extensions/common/extensionsApiProposals.ts b/src/vs/workbench/services/extensions/common/extensionsApiProposals.ts index 3aeb7803c862f..75d9aa53ecd1a 100644 --- a/src/vs/workbench/services/extensions/common/extensionsApiProposals.ts +++ b/src/vs/workbench/services/extensions/common/extensionsApiProposals.ts @@ -8,6 +8,7 @@ export const allApiProposals = Object.freeze({ authSession: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.authSession.d.ts', codiconDecoration: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.codiconDecoration.d.ts', + commentsDraftState: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.commentsDraftState.d.ts', contribCommentEditorActionsMenu: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribCommentEditorActionsMenu.d.ts', contribCommentPeekContext: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribCommentPeekContext.d.ts', contribCommentThreadAdditionalMenu: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribCommentThreadAdditionalMenu.d.ts', diff --git a/src/vscode-dts/vscode.proposed.commentsDraftState.d.ts b/src/vscode-dts/vscode.proposed.commentsDraftState.d.ts new file mode 100644 index 0000000000000..ee41130910a09 --- /dev/null +++ b/src/vscode-dts/vscode.proposed.commentsDraftState.d.ts @@ -0,0 +1,18 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +declare module 'vscode' { + + // https://github.com/microsoft/vscode/issues/171166 + + export enum CommentState { + Published = 0, + Draft = 1 + } + + export interface Comment { + state?: CommentState; + } +}