@@ -4,12 +4,13 @@ import type { Account } from '../../../git/models/author';
44import type { Issue , IssueShape } from '../../../git/models/issue' ;
55import type { IssueOrPullRequest , IssueOrPullRequestType } from '../../../git/models/issueOrPullRequest' ;
66import type { IssueResourceDescriptor , ResourceDescriptor } from '../../../git/models/resourceDescriptor' ;
7+ import { isIssueResourceDescriptor } from '../../../git/utils/resourceDescriptor.utils' ;
78import { Logger } from '../../../system/logger' ;
89import type { IntegrationAuthenticationProviderDescriptor } from '../authentication/integrationAuthenticationProvider' ;
910import type { ProviderAuthenticationSession } from '../authentication/models' ;
1011import { IssuesIntegration } from '../models/issuesIntegration' ;
1112import type { IssueFilter } from './models' ;
12- import { providersMetadata , toIssueShape } from './models' ;
13+ import { fromProviderIssue , providersMetadata , toIssueShape } from './models' ;
1314
1415const metadata = providersMetadata [ IssuesCloudHostIntegrationId . Linear ] ;
1516const authProvider = Object . freeze ( { id : metadata . id , scopes : metadata . scopes } ) ;
@@ -110,11 +111,35 @@ export class LinearIntegration extends IssuesIntegration<IssuesCloudHostIntegrat
110111 ) : Promise < IssueOrPullRequest | undefined > {
111112 throw new Error ( 'Method not implemented.' ) ;
112113 }
113- protected override getProviderIssue (
114- _session : ProviderAuthenticationSession ,
115- _resource : ResourceDescriptor ,
116- _id : string ,
114+ protected override async getProviderIssue (
115+ session : ProviderAuthenticationSession ,
116+ resource : ResourceDescriptor ,
117+ id : string ,
117118 ) : Promise < Issue | undefined > {
118- throw new Error ( 'Method not implemented.' ) ;
119+ const api = await this . getProvidersApi ( ) ;
120+ try {
121+ if ( ! isIssueResourceDescriptor ( resource ) ) {
122+ Logger . error ( undefined , 'getProviderIssue: resource is not an IssueResourceDescriptor' ) ;
123+ return undefined ;
124+ }
125+
126+ const result = await api . getIssue (
127+ this . id ,
128+ {
129+ resourceId : resource . id ,
130+ number : id ,
131+ } ,
132+ {
133+ accessToken : session . accessToken ,
134+ } ,
135+ ) ;
136+
137+ if ( result == null ) return undefined ;
138+
139+ return fromProviderIssue ( result , this ) ;
140+ } catch ( ex ) {
141+ Logger . error ( ex , 'getProviderIssue' ) ;
142+ return undefined ;
143+ }
119144 }
120145}
0 commit comments