Skip to content

Commit f9d6eff

Browse files
committed
Authenticates Linear trhough GKDev
(#4543, #4579)
1 parent 37339bb commit f9d6eff

File tree

3 files changed

+19
-52
lines changed

3 files changed

+19
-52
lines changed

src/constants.integrations.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ export type IssuesHostIntegrationIds = IssuesCloudHostIntegrationId;
3131

3232
export type IntegrationIds = GitHostIntegrationIds | IssuesHostIntegrationIds;
3333

34-
export const supportedOrderedCloudIssuesIntegrationIds = [IssuesCloudHostIntegrationId.Jira];
34+
export const supportedOrderedCloudIssuesIntegrationIds = [
35+
IssuesCloudHostIntegrationId.Jira,
36+
IssuesCloudHostIntegrationId.Linear,
37+
];
3538
export const supportedOrderedCloudIntegrationIds = [
3639
GitCloudHostIntegrationId.GitHub,
3740
GitSelfManagedHostIntegrationId.CloudGitHubEnterprise,
@@ -42,6 +45,7 @@ export const supportedOrderedCloudIntegrationIds = [
4245
GitCloudHostIntegrationId.Bitbucket,
4346
GitSelfManagedHostIntegrationId.BitbucketServer,
4447
IssuesCloudHostIntegrationId.Jira,
48+
IssuesCloudHostIntegrationId.Linear,
4549
];
4650

4751
export const integrationIds = [
@@ -56,6 +60,7 @@ export const integrationIds = [
5660
GitSelfManagedHostIntegrationId.GitHubEnterprise,
5761
GitSelfManagedHostIntegrationId.GitLabSelfHosted,
5862
IssuesCloudHostIntegrationId.Jira,
63+
IssuesCloudHostIntegrationId.Linear,
5964
IssuesCloudHostIntegrationId.Trello,
6065
];
6166

@@ -143,4 +148,11 @@ export const supportedCloudIntegrationDescriptors: IntegrationDescriptor[] = [
143148
supports: ['issues'],
144149
requiresPro: true,
145150
},
151+
{
152+
id: IssuesCloudHostIntegrationId.Linear,
153+
name: 'Linear',
154+
icon: 'gl-provider-linear',
155+
supports: ['issues'],
156+
requiresPro: true,
157+
},
146158
];

src/plus/integrations/authentication/integrationAuthenticationService.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ export class IntegrationAuthenticationService implements Disposable {
151151
case IssuesCloudHostIntegrationId.Linear:
152152
provider = new (
153153
await import(/* webpackChunkName: "integrations" */ './linear')
154-
).LinearAuthenticationProvider();
154+
).LinearAuthenticationProvider(this.container, this, this.configuredIntegrationService);
155155
break;
156156
default:
157157
provider = new BuiltInAuthenticationProvider(
Lines changed: 5 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,8 @@
1-
import type { Disposable, Event } from 'vscode';
2-
import type { Sources } from '../../../constants.telemetry';
3-
import { configuration } from '../../../system/-webview/configuration';
4-
import type {
5-
IntegrationAuthenticationProvider,
6-
IntegrationAuthenticationSessionDescriptor,
7-
} from './integrationAuthenticationProvider';
8-
import type { ProviderAuthenticationSession } from './models';
1+
import { IssuesCloudHostIntegrationId } from '../../../constants.integrations';
2+
import { CloudIntegrationAuthenticationProvider } from './integrationAuthenticationProvider';
93

10-
export class LinearAuthenticationProvider implements IntegrationAuthenticationProvider {
11-
// I want to read the token from the config "ololo-linear-config":
12-
private currentToken: string | undefined = (configuration.get('ololo-linear-token') as string) ?? undefined;
13-
14-
deleteSession(_descriptor: IntegrationAuthenticationSessionDescriptor): Promise<void> {
15-
//throw new Error('Method not implemented.');
16-
this.currentToken = undefined;
17-
return Promise.resolve();
18-
}
19-
deleteAllSessions(): Promise<void> {
20-
//throw new Error('Method not implemented.');
21-
this.currentToken = undefined;
22-
return Promise.resolve();
23-
}
24-
getSession(
25-
_descriptor: IntegrationAuthenticationSessionDescriptor,
26-
_options?:
27-
| { createIfNeeded?: boolean; forceNewSession?: boolean; sync?: never; source?: Sources }
28-
| { createIfNeeded?: never; forceNewSession?: never; sync: boolean; source?: Sources },
29-
): Promise<ProviderAuthenticationSession | undefined> {
30-
return Promise.resolve(
31-
this.currentToken
32-
? {
33-
accessToken: this.currentToken,
34-
id: 'linear',
35-
account: {
36-
id: 'linear',
37-
label: 'Linear',
38-
},
39-
scopes: ['read'],
40-
cloud: true,
41-
expiresAt: new Date(Date.now() + 1000 * 60 * 60 * 24 * 365),
42-
domain: 'linear.app',
43-
}
44-
: undefined,
45-
);
46-
}
47-
get onDidChange(): Event<void> {
48-
return (_listener: (e: void) => any, _thisArgs?: any, _disposables?: Disposable[]): Disposable => {
49-
return { dispose: () => {} };
50-
};
4+
export class LinearAuthenticationProvider extends CloudIntegrationAuthenticationProvider<IssuesCloudHostIntegrationId.Linear> {
5+
protected override get authProviderId(): IssuesCloudHostIntegrationId.Linear {
6+
return IssuesCloudHostIntegrationId.Linear;
517
}
52-
dispose(): void {}
538
}

0 commit comments

Comments
 (0)