@@ -11,37 +11,44 @@ import { URI } from 'vs/base/common/uri';
1111import { Range } from 'vs/editor/common/core/range' ;
1212import { keys } from 'vs/base/common/map' ;
1313import { CancellationToken } from 'vs/base/common/cancellation' ;
14+ import { ExtensionCommentProviderHandler } from 'vs/workbench/api/electron-browser/mainThreadComments' ;
15+ import { assign } from 'vs/base/common/objects' ;
16+ import { ICommentThreadChangedEvent } from 'vs/workbench/parts/comments/common/commentModel' ;
1417
1518export const ICommentService = createDecorator < ICommentService > ( 'commentService' ) ;
1619
1720export interface IResourceCommentThreadEvent {
1821 resource : URI ;
19- commentInfos : CommentInfo [ ] ;
22+ commentInfos : ICommentInfo [ ] ;
23+ }
24+
25+ export interface ICommentInfo extends CommentInfo {
26+ owner : string ;
2027}
2128
2229export interface IWorkspaceCommentThreadsEvent {
23- ownerId : number ;
30+ ownerId : string ;
2431 commentThreads : CommentThread [ ] ;
2532}
2633
2734export interface ICommentService {
2835 _serviceBrand : any ;
2936 readonly onDidSetResourceCommentInfos : Event < IResourceCommentThreadEvent > ;
3037 readonly onDidSetAllCommentThreads : Event < IWorkspaceCommentThreadsEvent > ;
31- readonly onDidUpdateCommentThreads : Event < CommentThreadChangedEvent > ;
38+ readonly onDidUpdateCommentThreads : Event < ICommentThreadChangedEvent > ;
3239 readonly onDidSetDataProvider : Event < void > ;
33- readonly onDidDeleteDataProvider : Event < number > ;
34- setDocumentComments ( resource : URI , commentInfos : CommentInfo [ ] ) : void ;
35- setWorkspaceComments ( owner : number , commentsByResource : CommentThread [ ] ) : void ;
36- removeWorkspaceComments ( owner : number ) : void ;
37- registerDataProvider ( owner : number , commentProvider : DocumentCommentProvider ) : void ;
38- unregisterDataProvider ( owner : number ) : void ;
39- updateComments ( event : CommentThreadChangedEvent ) : void ;
40- createNewCommentThread ( owner : number , resource : URI , range : Range , text : string ) : Promise < CommentThread | null > ;
41- replyToCommentThread ( owner : number , resource : URI , range : Range , thread : CommentThread , text : string ) : Promise < CommentThread | null > ;
42- editComment ( owner : number , resource : URI , comment : Comment , text : string ) : Promise < void > ;
43- deleteComment ( owner : number , resource : URI , comment : Comment ) : Promise < boolean > ;
44- getComments ( resource : URI ) : Promise < CommentInfo [ ] > ;
40+ readonly onDidDeleteDataProvider : Event < string > ;
41+ setDocumentComments ( resource : URI , commentInfos : ICommentInfo [ ] ) : void ;
42+ setWorkspaceComments ( owner : string , commentsByResource : CommentThread [ ] ) : void ;
43+ removeWorkspaceComments ( owner : string ) : void ;
44+ registerDataProvider ( owner : string , commentProvider : ExtensionCommentProviderHandler ) : void ;
45+ unregisterDataProvider ( owner : string ) : void ;
46+ updateComments ( ownerId : string , event : CommentThreadChangedEvent ) : void ;
47+ createNewCommentThread ( owner : string , resource : URI , range : Range , text : string ) : Promise < CommentThread | null > ;
48+ replyToCommentThread ( owner : string , resource : URI , range : Range , thread : CommentThread , text : string ) : Promise < CommentThread | null > ;
49+ editComment ( owner : string , resource : URI , comment : Comment , text : string ) : Promise < void > ;
50+ deleteComment ( owner : string , resource : URI , comment : Comment ) : Promise < boolean > ;
51+ getComments ( resource : URI ) : Promise < ICommentInfo [ ] > ;
4552}
4653
4754export class CommentService extends Disposable implements ICommentService {
@@ -50,51 +57,52 @@ export class CommentService extends Disposable implements ICommentService {
5057 private readonly _onDidSetDataProvider : Emitter < void > = this . _register ( new Emitter < void > ( ) ) ;
5158 readonly onDidSetDataProvider : Event < void > = this . _onDidSetDataProvider . event ;
5259
53- private readonly _onDidDeletetDataProvider : Emitter < number > = this . _register ( new Emitter < number > ( ) ) ;
54- readonly onDidDeleteDataProvider : Event < number > = this . _onDidDeletetDataProvider . event ;
60+ private readonly _onDidDeleteDataProvider : Emitter < string > = this . _register ( new Emitter < string > ( ) ) ;
61+ readonly onDidDeleteDataProvider : Event < string > = this . _onDidDeleteDataProvider . event ;
5562
5663 private readonly _onDidSetResourceCommentInfos : Emitter < IResourceCommentThreadEvent > = this . _register ( new Emitter < IResourceCommentThreadEvent > ( ) ) ;
5764 readonly onDidSetResourceCommentInfos : Event < IResourceCommentThreadEvent > = this . _onDidSetResourceCommentInfos . event ;
5865
5966 private readonly _onDidSetAllCommentThreads : Emitter < IWorkspaceCommentThreadsEvent > = this . _register ( new Emitter < IWorkspaceCommentThreadsEvent > ( ) ) ;
6067 readonly onDidSetAllCommentThreads : Event < IWorkspaceCommentThreadsEvent > = this . _onDidSetAllCommentThreads . event ;
6168
62- private readonly _onDidUpdateCommentThreads : Emitter < CommentThreadChangedEvent > = this . _register ( new Emitter < CommentThreadChangedEvent > ( ) ) ;
63- readonly onDidUpdateCommentThreads : Event < CommentThreadChangedEvent > = this . _onDidUpdateCommentThreads . event ;
69+ private readonly _onDidUpdateCommentThreads : Emitter < ICommentThreadChangedEvent > = this . _register ( new Emitter < ICommentThreadChangedEvent > ( ) ) ;
70+ readonly onDidUpdateCommentThreads : Event < ICommentThreadChangedEvent > = this . _onDidUpdateCommentThreads . event ;
6471
65- private _commentProviders = new Map < number , DocumentCommentProvider > ( ) ;
72+ private _commentProviders = new Map < string , DocumentCommentProvider > ( ) ;
6673
6774 constructor ( ) {
6875 super ( ) ;
6976 }
7077
71- setDocumentComments ( resource : URI , commentInfos : CommentInfo [ ] ) : void {
78+ setDocumentComments ( resource : URI , commentInfos : ICommentInfo [ ] ) : void {
7279 this . _onDidSetResourceCommentInfos . fire ( { resource, commentInfos } ) ;
7380 }
7481
75- setWorkspaceComments ( owner : number , commentsByResource : CommentThread [ ] ) : void {
82+ setWorkspaceComments ( owner : string , commentsByResource : CommentThread [ ] ) : void {
7683 this . _onDidSetAllCommentThreads . fire ( { ownerId : owner , commentThreads : commentsByResource } ) ;
7784 }
7885
79- removeWorkspaceComments ( owner : number ) : void {
86+ removeWorkspaceComments ( owner : string ) : void {
8087 this . _onDidSetAllCommentThreads . fire ( { ownerId : owner , commentThreads : [ ] } ) ;
8188 }
8289
83- registerDataProvider ( owner : number , commentProvider : DocumentCommentProvider ) {
90+ registerDataProvider ( owner : string , commentProvider : DocumentCommentProvider ) {
8491 this . _commentProviders . set ( owner , commentProvider ) ;
8592 this . _onDidSetDataProvider . fire ( ) ;
8693 }
8794
88- unregisterDataProvider ( owner : number ) : void {
95+ unregisterDataProvider ( owner : string ) : void {
8996 this . _commentProviders . delete ( owner ) ;
90- this . _onDidDeletetDataProvider . fire ( owner ) ;
97+ this . _onDidDeleteDataProvider . fire ( owner ) ;
9198 }
9299
93- updateComments ( event : CommentThreadChangedEvent ) : void {
94- this . _onDidUpdateCommentThreads . fire ( event ) ;
100+ updateComments ( ownerId : string , event : CommentThreadChangedEvent ) : void {
101+ const evt = assign ( { } , event , { ownerId } ) ;
102+ this . _onDidUpdateCommentThreads . fire ( evt ) ;
95103 }
96104
97- async createNewCommentThread ( owner : number , resource : URI , range : Range , text : string ) : Promise < CommentThread | null > {
105+ async createNewCommentThread ( owner : string , resource : URI , range : Range , text : string ) : Promise < CommentThread | null > {
98106 const commentProvider = this . _commentProviders . get ( owner ) ;
99107
100108 if ( commentProvider ) {
@@ -104,7 +112,7 @@ export class CommentService extends Disposable implements ICommentService {
104112 return null ;
105113 }
106114
107- async replyToCommentThread ( owner : number , resource : URI , range : Range , thread : CommentThread , text : string ) : Promise < CommentThread | null > {
115+ async replyToCommentThread ( owner : string , resource : URI , range : Range , thread : CommentThread , text : string ) : Promise < CommentThread | null > {
108116 const commentProvider = this . _commentProviders . get ( owner ) ;
109117
110118 if ( commentProvider ) {
@@ -114,7 +122,7 @@ export class CommentService extends Disposable implements ICommentService {
114122 return null ;
115123 }
116124
117- editComment ( owner : number , resource : URI , comment : Comment , text : string ) : Promise < void > {
125+ editComment ( owner : string , resource : URI , comment : Comment , text : string ) : Promise < void > {
118126 const commentProvider = this . _commentProviders . get ( owner ) ;
119127
120128 if ( commentProvider ) {
@@ -124,7 +132,7 @@ export class CommentService extends Disposable implements ICommentService {
124132 return Promise . resolve ( void 0 ) ;
125133 }
126134
127- deleteComment ( owner : number , resource : URI , comment : Comment ) : Promise < boolean > {
135+ deleteComment ( owner : string , resource : URI , comment : Comment ) : Promise < boolean > {
128136 const commentProvider = this . _commentProviders . get ( owner ) ;
129137
130138 if ( commentProvider ) {
@@ -134,12 +142,23 @@ export class CommentService extends Disposable implements ICommentService {
134142 return Promise . resolve ( false ) ;
135143 }
136144
137- getComments ( resource : URI ) : Promise < CommentInfo [ ] > {
138- const result : Promise < CommentInfo > [ ] = [ ] ;
139- for ( const handle of keys ( this . _commentProviders ) ) {
140- const provider = this . _commentProviders . get ( handle ) ;
141- if ( ( < DocumentCommentProvider > provider ) . provideDocumentComments ) {
142- result . push ( ( < DocumentCommentProvider > provider ) . provideDocumentComments ( resource , CancellationToken . None ) ) ;
145+ getComments ( resource : URI ) : Promise < ICommentInfo [ ] > {
146+ const result : Promise < ICommentInfo > [ ] = [ ] ;
147+ for ( const owner of keys ( this . _commentProviders ) ) {
148+ const provider = this . _commentProviders . get ( owner ) ;
149+ if ( provider . provideDocumentComments ) {
150+ result . push ( provider . provideDocumentComments ( resource , CancellationToken . None ) . then ( commentInfo => {
151+ if ( commentInfo ) {
152+ return < ICommentInfo > {
153+ owner : owner ,
154+ threads : commentInfo . threads ,
155+ commentingRanges : commentInfo . commentingRanges ,
156+ reply : commentInfo . reply
157+ } ;
158+ } else {
159+ return null ;
160+ }
161+ } ) ) ;
143162 }
144163 }
145164
0 commit comments