@theia/collaboration 1.61.0 → 1.62.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/collaboration-frontend-contribution.d.ts +12 -4
- package/lib/browser/collaboration-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/collaboration-frontend-contribution.js +116 -17
- package/lib/browser/collaboration-frontend-contribution.js.map +1 -1
- package/lib/browser/collaboration-frontend-module.d.ts.map +1 -1
- package/lib/browser/collaboration-frontend-module.js +3 -0
- package/lib/browser/collaboration-frontend-module.js.map +1 -1
- package/lib/browser/collaboration-preferences.d.ts +3 -0
- package/lib/browser/collaboration-preferences.d.ts.map +1 -0
- package/lib/browser/collaboration-preferences.js +32 -0
- package/lib/browser/collaboration-preferences.js.map +1 -0
- package/package.json +10 -10
- package/src/browser/collaboration-frontend-contribution.ts +122 -18
- package/src/browser/collaboration-frontend-module.ts +4 -0
- package/src/browser/collaboration-preferences.ts +31 -0
|
@@ -1,33 +1,41 @@
|
|
|
1
1
|
import '../../src/browser/style/index.css';
|
|
2
|
-
import { CancellationToken, Command, CommandContribution, CommandRegistry, MessageService, QuickInputService } from '@theia/core';
|
|
3
|
-
import { ConnectionProvider } from 'open-collaboration-protocol';
|
|
2
|
+
import { CancellationToken, Command, CommandContribution, CommandRegistry, MessageService, QuickInputService, QuickPickItem } from '@theia/core';
|
|
3
|
+
import { AuthMetadata, AuthProvider, ConnectionProvider, FormAuthProvider, WebAuthProvider } from 'open-collaboration-protocol';
|
|
4
4
|
import { WindowService } from '@theia/core/lib/browser/window/window-service';
|
|
5
5
|
import { CollaborationInstance, CollaborationInstanceFactory } from './collaboration-instance';
|
|
6
6
|
import { EnvVariablesServer } from '@theia/core/lib/common/env-variables';
|
|
7
|
-
import { Deferred } from '@theia/core/lib/common/promise-util';
|
|
8
7
|
import { CollaborationWorkspaceService } from './collaboration-workspace-service';
|
|
9
8
|
import { StatusBar, StatusBarEntry } from '@theia/core/lib/browser/status-bar';
|
|
9
|
+
import { PreferenceService } from '@theia/core/lib/browser';
|
|
10
10
|
export declare const COLLABORATION_CATEGORY = "Collaboration";
|
|
11
11
|
export declare namespace CollaborationCommands {
|
|
12
12
|
const CREATE_ROOM: Command;
|
|
13
13
|
const JOIN_ROOM: Command;
|
|
14
|
+
const SIGN_OUT: Command;
|
|
15
|
+
}
|
|
16
|
+
export interface CollaborationAuthQuickPickItem extends QuickPickItem {
|
|
17
|
+
provider: AuthProvider;
|
|
14
18
|
}
|
|
15
19
|
export declare const COLLABORATION_STATUS_BAR_ID = "statusBar.collaboration";
|
|
16
20
|
export declare const COLLABORATION_AUTH_TOKEN = "THEIA_COLLAB_AUTH_TOKEN";
|
|
17
21
|
export declare const COLLABORATION_SERVER_URL = "COLLABORATION_SERVER_URL";
|
|
18
22
|
export declare const DEFAULT_COLLABORATION_SERVER_URL = "https://api.open-collab.tools/";
|
|
19
23
|
export declare class CollaborationFrontendContribution implements CommandContribution {
|
|
20
|
-
protected readonly connectionProvider: Deferred<ConnectionProvider>;
|
|
21
24
|
protected readonly windowService: WindowService;
|
|
22
25
|
protected readonly quickInputService?: QuickInputService;
|
|
23
26
|
protected readonly envVariables: EnvVariablesServer;
|
|
24
27
|
protected readonly workspaceService: CollaborationWorkspaceService;
|
|
25
28
|
protected readonly messageService: MessageService;
|
|
26
29
|
protected readonly commands: CommandRegistry;
|
|
30
|
+
protected readonly preferenceService: PreferenceService;
|
|
27
31
|
protected readonly statusBar: StatusBar;
|
|
28
32
|
protected readonly collaborationInstanceFactory: CollaborationInstanceFactory;
|
|
29
33
|
protected currentInstance?: CollaborationInstance;
|
|
30
34
|
protected init(): void;
|
|
35
|
+
protected createConnectionProvider(): Promise<ConnectionProvider>;
|
|
36
|
+
protected handleAuth(serverUrl: string, token: string, metaData: AuthMetadata): Promise<boolean>;
|
|
37
|
+
protected handleFormAuth(serverUrl: string, token: string, provider: FormAuthProvider): Promise<boolean>;
|
|
38
|
+
protected handleWebAuth(serverUrl: string, token: string, provider: WebAuthProvider): Promise<boolean>;
|
|
31
39
|
protected onStatusDefaultClick(): Promise<void>;
|
|
32
40
|
protected onStatusSharedClick(code: string): Promise<void>;
|
|
33
41
|
protected onStatusConnectedClick(code: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collaboration-frontend-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/collaboration-frontend-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,mCAAmC,CAAC;AAE3C,OAAO,EACH,iBAAiB,EAA2B,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAiB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"collaboration-frontend-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/collaboration-frontend-contribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,11 +24,14 @@ const open_collaboration_protocol_1 = require("open-collaboration-protocol");
|
|
|
24
24
|
const window_service_1 = require("@theia/core/lib/browser/window/window-service");
|
|
25
25
|
const collaboration_instance_1 = require("./collaboration-instance");
|
|
26
26
|
const env_variables_1 = require("@theia/core/lib/common/env-variables");
|
|
27
|
-
const promise_util_1 = require("@theia/core/lib/common/promise-util");
|
|
28
27
|
const collaboration_workspace_service_1 = require("./collaboration-workspace-service");
|
|
29
28
|
const status_bar_1 = require("@theia/core/lib/browser/status-bar");
|
|
30
29
|
const widget_1 = require("@theia/core/lib/browser/widgets/widget");
|
|
31
30
|
const frontend_application_config_provider_1 = require("@theia/core/lib/browser/frontend-application-config-provider");
|
|
31
|
+
const browser_1 = require("@theia/core/lib/browser");
|
|
32
|
+
(0, open_collaboration_protocol_1.initializeProtocol)({
|
|
33
|
+
cryptoModule: window.crypto
|
|
34
|
+
});
|
|
32
35
|
exports.COLLABORATION_CATEGORY = 'Collaboration';
|
|
33
36
|
var CollaborationCommands;
|
|
34
37
|
(function (CollaborationCommands) {
|
|
@@ -38,29 +41,115 @@ var CollaborationCommands;
|
|
|
38
41
|
CollaborationCommands.JOIN_ROOM = {
|
|
39
42
|
id: 'collaboration.join-room'
|
|
40
43
|
};
|
|
44
|
+
CollaborationCommands.SIGN_OUT = {
|
|
45
|
+
id: 'collaboration.sign-out',
|
|
46
|
+
label: core_1.nls.localizeByDefault('Sign Out'),
|
|
47
|
+
category: exports.COLLABORATION_CATEGORY,
|
|
48
|
+
};
|
|
41
49
|
})(CollaborationCommands || (exports.CollaborationCommands = CollaborationCommands = {}));
|
|
42
50
|
exports.COLLABORATION_STATUS_BAR_ID = 'statusBar.collaboration';
|
|
43
51
|
exports.COLLABORATION_AUTH_TOKEN = 'THEIA_COLLAB_AUTH_TOKEN';
|
|
44
52
|
exports.COLLABORATION_SERVER_URL = 'COLLABORATION_SERVER_URL';
|
|
45
53
|
exports.DEFAULT_COLLABORATION_SERVER_URL = 'https://api.open-collab.tools/';
|
|
46
54
|
let CollaborationFrontendContribution = class CollaborationFrontendContribution {
|
|
47
|
-
constructor() {
|
|
48
|
-
this.connectionProvider = new promise_util_1.Deferred();
|
|
49
|
-
}
|
|
50
55
|
init() {
|
|
51
56
|
this.setStatusBarEntryDefault();
|
|
52
|
-
|
|
57
|
+
}
|
|
58
|
+
async createConnectionProvider() {
|
|
59
|
+
var _a;
|
|
60
|
+
const serverUrl = await this.getCollaborationServerUrl();
|
|
61
|
+
return new open_collaboration_protocol_1.ConnectionProvider({
|
|
62
|
+
url: serverUrl,
|
|
63
|
+
client: frontend_application_config_provider_1.FrontendApplicationConfigProvider.get().applicationName,
|
|
64
|
+
fetch: window.fetch.bind(window),
|
|
65
|
+
authenticationHandler: (token, meta) => this.handleAuth(serverUrl, token, meta),
|
|
66
|
+
transports: [open_collaboration_protocol_1.SocketIoTransportProvider],
|
|
67
|
+
userToken: (_a = localStorage.getItem(exports.COLLABORATION_AUTH_TOKEN)) !== null && _a !== void 0 ? _a : undefined
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
async handleAuth(serverUrl, token, metaData) {
|
|
71
|
+
const hasAuthProviders = Boolean(metaData.providers.length);
|
|
72
|
+
if (!hasAuthProviders && metaData.loginPageUrl) {
|
|
73
|
+
if (metaData.loginPageUrl) {
|
|
74
|
+
this.windowService.openNewWindow(metaData.loginPageUrl, { external: true });
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.messageService.error(core_1.nls.localize('theia/collaboration/noAuth', 'No authentication method provided by the server.'));
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (!this.quickInputService) {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
const quickPickItems = metaData.providers.map(provider => {
|
|
53
86
|
var _a;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
87
|
+
return ({
|
|
88
|
+
label: provider.label.message,
|
|
89
|
+
detail: (_a = provider.details) === null || _a === void 0 ? void 0 : _a.message,
|
|
90
|
+
provider
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
const item = await this.quickInputService.pick(quickPickItems, {
|
|
94
|
+
title: core_1.nls.localize('theia/collaboration/selectAuth', 'Select Authentication Method'),
|
|
95
|
+
});
|
|
96
|
+
if (item) {
|
|
97
|
+
switch (item.provider.type) {
|
|
98
|
+
case 'form':
|
|
99
|
+
return this.handleFormAuth(serverUrl, token, item.provider);
|
|
100
|
+
case 'web':
|
|
101
|
+
return this.handleWebAuth(serverUrl, token, item.provider);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
async handleFormAuth(serverUrl, token, provider) {
|
|
107
|
+
const fields = provider.fields;
|
|
108
|
+
const values = {
|
|
109
|
+
token
|
|
110
|
+
};
|
|
111
|
+
for (const field of fields) {
|
|
112
|
+
let placeHolder;
|
|
113
|
+
if (field.placeHolder) {
|
|
114
|
+
placeHolder = field.placeHolder.message;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
placeHolder = field.label.message;
|
|
118
|
+
}
|
|
119
|
+
placeHolder += field.required ? '' : ` (${core_1.nls.localize('theia/collaboration/optional', 'optional')})`;
|
|
120
|
+
const value = await this.quickInputService.input({
|
|
121
|
+
prompt: field.label.message,
|
|
122
|
+
placeHolder,
|
|
61
123
|
});
|
|
62
|
-
|
|
63
|
-
|
|
124
|
+
// Test for thruthyness to also test for empty string
|
|
125
|
+
if (value) {
|
|
126
|
+
values[field.name] = value;
|
|
127
|
+
}
|
|
128
|
+
else if (field.required) {
|
|
129
|
+
this.messageService.error(core_1.nls.localize('theia/collaboration/fieldRequired', 'The {0} field is required. Login aborted.', field.label.message));
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
const endpointUrl = new core_1.URI(serverUrl).withPath(provider.endpoint);
|
|
134
|
+
const response = await fetch(endpointUrl.toString(true), {
|
|
135
|
+
method: 'POST',
|
|
136
|
+
body: JSON.stringify(values),
|
|
137
|
+
headers: {
|
|
138
|
+
'Content-Type': 'application/json'
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
if (response.ok) {
|
|
142
|
+
this.messageService.info(core_1.nls.localize('theia/collaboration/loginSuccessful', 'Login successful.'));
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
this.messageService.error(core_1.nls.localize('theia/collaboration/loginFailed', 'Login failed.'));
|
|
146
|
+
}
|
|
147
|
+
return response.ok;
|
|
148
|
+
}
|
|
149
|
+
async handleWebAuth(serverUrl, token, provider) {
|
|
150
|
+
const uri = new core_1.URI(serverUrl).withPath(provider.endpoint).withQuery('token=' + token);
|
|
151
|
+
this.windowService.openNewWindow(uri.toString(true), { external: true });
|
|
152
|
+
return true;
|
|
64
153
|
}
|
|
65
154
|
async onStatusDefaultClick() {
|
|
66
155
|
var _a;
|
|
@@ -173,7 +262,8 @@ let CollaborationFrontendContribution = class CollaborationFrontendContribution
|
|
|
173
262
|
}
|
|
174
263
|
async getCollaborationServerUrl() {
|
|
175
264
|
const serverUrlVariable = await this.envVariables.getValue(exports.COLLABORATION_SERVER_URL);
|
|
176
|
-
|
|
265
|
+
const serverUrlPreference = this.preferenceService.get('collaboration.serverUrl');
|
|
266
|
+
return (serverUrlVariable === null || serverUrlVariable === void 0 ? void 0 : serverUrlVariable.value) || serverUrlPreference || exports.DEFAULT_COLLABORATION_SERVER_URL;
|
|
177
267
|
}
|
|
178
268
|
registerCommands(commands) {
|
|
179
269
|
commands.registerCommand(CollaborationCommands.CREATE_ROOM, {
|
|
@@ -187,7 +277,7 @@ let CollaborationFrontendContribution = class CollaborationFrontendContribution
|
|
|
187
277
|
}
|
|
188
278
|
}, () => cancelTokenSource.cancel());
|
|
189
279
|
try {
|
|
190
|
-
const authHandler = await this.
|
|
280
|
+
const authHandler = await this.createConnectionProvider();
|
|
191
281
|
const roomClaim = await authHandler.createRoom({
|
|
192
282
|
reporter: info => progress.report({ message: info.message }),
|
|
193
283
|
abortSignal: this.toAbortSignal(cancelTokenSource.token)
|
|
@@ -222,7 +312,7 @@ let CollaborationFrontendContribution = class CollaborationFrontendContribution
|
|
|
222
312
|
let joinRoomProgress;
|
|
223
313
|
const cancelTokenSource = new core_1.CancellationTokenSource();
|
|
224
314
|
try {
|
|
225
|
-
const authHandler = await this.
|
|
315
|
+
const authHandler = await this.createConnectionProvider();
|
|
226
316
|
const id = await ((_a = this.quickInputService) === null || _a === void 0 ? void 0 : _a.input({
|
|
227
317
|
placeHolder: core_1.nls.localize('theia/collaboration/enterCode', 'Enter collaboration session code')
|
|
228
318
|
}));
|
|
@@ -261,6 +351,11 @@ let CollaborationFrontendContribution = class CollaborationFrontendContribution
|
|
|
261
351
|
}
|
|
262
352
|
}
|
|
263
353
|
});
|
|
354
|
+
commands.registerCommand(CollaborationCommands.SIGN_OUT, {
|
|
355
|
+
execute: async () => {
|
|
356
|
+
localStorage.removeItem(exports.COLLABORATION_AUTH_TOKEN);
|
|
357
|
+
}
|
|
358
|
+
});
|
|
264
359
|
}
|
|
265
360
|
toAbortSignal(...tokens) {
|
|
266
361
|
const controller = new AbortController();
|
|
@@ -314,6 +409,10 @@ tslib_1.__decorate([
|
|
|
314
409
|
(0, inversify_1.inject)(core_1.CommandRegistry),
|
|
315
410
|
tslib_1.__metadata("design:type", core_1.CommandRegistry)
|
|
316
411
|
], CollaborationFrontendContribution.prototype, "commands", void 0);
|
|
412
|
+
tslib_1.__decorate([
|
|
413
|
+
(0, inversify_1.inject)(browser_1.PreferenceService),
|
|
414
|
+
tslib_1.__metadata("design:type", Object)
|
|
415
|
+
], CollaborationFrontendContribution.prototype, "preferenceService", void 0);
|
|
317
416
|
tslib_1.__decorate([
|
|
318
417
|
(0, inversify_1.inject)(status_bar_1.StatusBar),
|
|
319
418
|
tslib_1.__metadata("design:type", Object)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collaboration-frontend-contribution.js","sourceRoot":"","sources":["../../src/browser/collaboration-frontend-contribution.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"collaboration-frontend-contribution.js","sourceRoot":"","sources":["../../src/browser/collaboration-frontend-contribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collaboration-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/collaboration-frontend-module.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;
|
|
1
|
+
{"version":3,"file":"collaboration-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/collaboration-frontend-module.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;AAU/D,wBAaG"}
|
|
@@ -23,6 +23,8 @@ const collaboration_frontend_contribution_1 = require("./collaboration-frontend-
|
|
|
23
23
|
const collaboration_instance_1 = require("./collaboration-instance");
|
|
24
24
|
const collaboration_utils_1 = require("./collaboration-utils");
|
|
25
25
|
const collaboration_workspace_service_1 = require("./collaboration-workspace-service");
|
|
26
|
+
const browser_2 = require("@theia/core/lib/browser");
|
|
27
|
+
const collaboration_preferences_1 = require("./collaboration-preferences");
|
|
26
28
|
exports.default = new inversify_1.ContainerModule((bind, _, __, rebind) => {
|
|
27
29
|
bind(collaboration_workspace_service_1.CollaborationWorkspaceService).toSelf().inSingletonScope();
|
|
28
30
|
rebind(browser_1.WorkspaceService).toService(collaboration_workspace_service_1.CollaborationWorkspaceService);
|
|
@@ -34,5 +36,6 @@ exports.default = new inversify_1.ContainerModule((bind, _, __, rebind) => {
|
|
|
34
36
|
return container.get(collaboration_instance_1.CollaborationInstance);
|
|
35
37
|
});
|
|
36
38
|
bind(collaboration_color_service_1.CollaborationColorService).toSelf().inSingletonScope();
|
|
39
|
+
bind(browser_2.PreferenceContribution).toConstantValue({ schema: collaboration_preferences_1.collaborationPreferencesSchema });
|
|
37
40
|
});
|
|
38
41
|
//# sourceMappingURL=collaboration-frontend-module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collaboration-frontend-module.js","sourceRoot":"","sources":["../../src/browser/collaboration-frontend-module.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,sCAAkD;AAClD,4DAA+D;AAC/D,0DAAgE;AAChE,+EAA0E;AAC1E,+FAA0F;AAC1F,qEAAmK;AACnK,+DAA2D;AAC3D,uFAAkF;
|
|
1
|
+
{"version":3,"file":"collaboration-frontend-module.js","sourceRoot":"","sources":["../../src/browser/collaboration-frontend-module.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,sCAAkD;AAClD,4DAA+D;AAC/D,0DAAgE;AAChE,+EAA0E;AAC1E,+FAA0F;AAC1F,qEAAmK;AACnK,+DAA2D;AAC3D,uFAAkF;AAClF,qDAAiE;AACjE,2EAA6E;AAE7E,kBAAe,IAAI,2BAAe,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;IACvD,IAAI,CAAC,+DAA6B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAChE,MAAM,CAAC,0BAAgB,CAAC,CAAC,SAAS,CAAC,+DAA6B,CAAC,CAAC;IAClE,IAAI,CAAC,wCAAkB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACrD,IAAI,CAAC,uEAAiC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACpE,IAAI,CAAC,0BAAmB,CAAC,CAAC,SAAS,CAAC,uEAAiC,CAAC,CAAC;IACvE,IAAI,CAAC,qDAA4B,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAqC,EAAE,EAAE;QAC9F,MAAM,SAAS,GAAG,IAAA,6DAAoC,EAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACnF,OAAO,SAAS,CAAC,GAAG,CAAC,8CAAqB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,uDAAyB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAE5D,IAAI,CAAC,gCAAsB,CAAC,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,0DAA8B,EAAE,CAAC,CAAC;AAC7F,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collaboration-preferences.d.ts","sourceRoot":"","sources":["../../src/browser/collaboration-preferences.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,eAAO,MAAM,8BAA8B,EAAE,gBAW5C,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2025 TypeFox and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.collaborationPreferencesSchema = void 0;
|
|
19
|
+
const core_1 = require("@theia/core");
|
|
20
|
+
exports.collaborationPreferencesSchema = {
|
|
21
|
+
type: 'object',
|
|
22
|
+
properties: {
|
|
23
|
+
'collaboration.serverUrl': {
|
|
24
|
+
type: 'string',
|
|
25
|
+
default: 'https://api.open-collab.tools/',
|
|
26
|
+
title: core_1.nls.localize('theia/collaboration/serverUrl', 'Server URL'),
|
|
27
|
+
description: core_1.nls.localize('theia/collaboration/serverUrlDescription', 'URL of the Open Collaboration Tools Server instance for live collaboration sessions'),
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
title: core_1.nls.localize('theia/collaboration/collaboration', 'Collaboration'),
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=collaboration-preferences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collaboration-preferences.js","sourceRoot":"","sources":["../../src/browser/collaboration-preferences.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,sCAAkC;AAGrB,QAAA,8BAA8B,GAAqB;IAC5D,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACR,yBAAyB,EAAE;YACvB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,gCAAgC;YACzC,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,+BAA+B,EAAE,YAAY,CAAC;YAClE,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,0CAA0C,EAAE,qFAAqF,CAAC;SAC/J;KACJ;IACD,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,mCAAmC,EAAE,eAAe,CAAC;CAC5E,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/collaboration",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.62.0",
|
|
4
4
|
"description": "Theia - Collaboration Extension",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/core": "1.
|
|
7
|
-
"@theia/editor": "1.
|
|
8
|
-
"@theia/filesystem": "1.
|
|
9
|
-
"@theia/monaco": "1.
|
|
6
|
+
"@theia/core": "1.62.0",
|
|
7
|
+
"@theia/editor": "1.62.0",
|
|
8
|
+
"@theia/filesystem": "1.62.0",
|
|
9
|
+
"@theia/monaco": "1.62.0",
|
|
10
10
|
"@theia/monaco-editor-core": "1.96.302",
|
|
11
|
-
"@theia/workspace": "1.
|
|
11
|
+
"@theia/workspace": "1.62.0",
|
|
12
12
|
"lib0": "^0.2.52",
|
|
13
|
-
"open-collaboration-protocol": "0.
|
|
14
|
-
"open-collaboration-yjs": "0.
|
|
13
|
+
"open-collaboration-protocol": "0.3.0",
|
|
14
|
+
"open-collaboration-yjs": "0.3.0",
|
|
15
15
|
"socket.io-client": "^4.5.3",
|
|
16
16
|
"y-protocols": "^1.0.6",
|
|
17
17
|
"yjs": "^13.6.7"
|
|
@@ -49,10 +49,10 @@
|
|
|
49
49
|
"watch": "theiaext watch"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@theia/ext-scripts": "1.
|
|
52
|
+
"@theia/ext-scripts": "1.62.0"
|
|
53
53
|
},
|
|
54
54
|
"nyc": {
|
|
55
55
|
"extends": "../../configs/nyc.json"
|
|
56
56
|
},
|
|
57
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "a4e035ccc26fde24c2769a466cb18e3b54c517c5"
|
|
58
58
|
}
|
|
@@ -17,18 +17,23 @@
|
|
|
17
17
|
import '../../src/browser/style/index.css';
|
|
18
18
|
|
|
19
19
|
import {
|
|
20
|
-
CancellationToken, CancellationTokenSource, Command, CommandContribution, CommandRegistry, MessageService, nls, Progress, QuickInputService, QuickPickItem
|
|
20
|
+
CancellationToken, CancellationTokenSource, Command, CommandContribution, CommandRegistry, MessageService, nls, Progress, QuickInputService, QuickPickItem,
|
|
21
|
+
URI
|
|
21
22
|
} from '@theia/core';
|
|
22
23
|
import { inject, injectable, optional, postConstruct } from '@theia/core/shared/inversify';
|
|
23
|
-
import { ConnectionProvider, SocketIoTransportProvider } from 'open-collaboration-protocol';
|
|
24
|
+
import { AuthMetadata, AuthProvider, ConnectionProvider, FormAuthProvider, initializeProtocol, SocketIoTransportProvider, WebAuthProvider } from 'open-collaboration-protocol';
|
|
24
25
|
import { WindowService } from '@theia/core/lib/browser/window/window-service';
|
|
25
26
|
import { CollaborationInstance, CollaborationInstanceFactory } from './collaboration-instance';
|
|
26
27
|
import { EnvVariablesServer } from '@theia/core/lib/common/env-variables';
|
|
27
|
-
import { Deferred } from '@theia/core/lib/common/promise-util';
|
|
28
28
|
import { CollaborationWorkspaceService } from './collaboration-workspace-service';
|
|
29
29
|
import { StatusBar, StatusBarAlignment, StatusBarEntry } from '@theia/core/lib/browser/status-bar';
|
|
30
30
|
import { codiconArray } from '@theia/core/lib/browser/widgets/widget';
|
|
31
31
|
import { FrontendApplicationConfigProvider } from '@theia/core/lib/browser/frontend-application-config-provider';
|
|
32
|
+
import { PreferenceService } from '@theia/core/lib/browser';
|
|
33
|
+
|
|
34
|
+
initializeProtocol({
|
|
35
|
+
cryptoModule: window.crypto
|
|
36
|
+
});
|
|
32
37
|
|
|
33
38
|
export const COLLABORATION_CATEGORY = 'Collaboration';
|
|
34
39
|
|
|
@@ -39,6 +44,15 @@ export namespace CollaborationCommands {
|
|
|
39
44
|
export const JOIN_ROOM: Command = {
|
|
40
45
|
id: 'collaboration.join-room'
|
|
41
46
|
};
|
|
47
|
+
export const SIGN_OUT: Command = {
|
|
48
|
+
id: 'collaboration.sign-out',
|
|
49
|
+
label: nls.localizeByDefault('Sign Out'),
|
|
50
|
+
category: COLLABORATION_CATEGORY,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface CollaborationAuthQuickPickItem extends QuickPickItem {
|
|
55
|
+
provider: AuthProvider;
|
|
42
56
|
}
|
|
43
57
|
|
|
44
58
|
export const COLLABORATION_STATUS_BAR_ID = 'statusBar.collaboration';
|
|
@@ -50,8 +64,6 @@ export const DEFAULT_COLLABORATION_SERVER_URL = 'https://api.open-collab.tools/'
|
|
|
50
64
|
@injectable()
|
|
51
65
|
export class CollaborationFrontendContribution implements CommandContribution {
|
|
52
66
|
|
|
53
|
-
protected readonly connectionProvider = new Deferred<ConnectionProvider>();
|
|
54
|
-
|
|
55
67
|
@inject(WindowService)
|
|
56
68
|
protected readonly windowService: WindowService;
|
|
57
69
|
|
|
@@ -70,6 +82,9 @@ export class CollaborationFrontendContribution implements CommandContribution {
|
|
|
70
82
|
@inject(CommandRegistry)
|
|
71
83
|
protected readonly commands: CommandRegistry;
|
|
72
84
|
|
|
85
|
+
@inject(PreferenceService)
|
|
86
|
+
protected readonly preferenceService: PreferenceService;
|
|
87
|
+
|
|
73
88
|
@inject(StatusBar)
|
|
74
89
|
protected readonly statusBar: StatusBar;
|
|
75
90
|
|
|
@@ -81,17 +96,100 @@ export class CollaborationFrontendContribution implements CommandContribution {
|
|
|
81
96
|
@postConstruct()
|
|
82
97
|
protected init(): void {
|
|
83
98
|
this.setStatusBarEntryDefault();
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
protected async createConnectionProvider(): Promise<ConnectionProvider> {
|
|
102
|
+
const serverUrl = await this.getCollaborationServerUrl();
|
|
103
|
+
return new ConnectionProvider({
|
|
104
|
+
url: serverUrl,
|
|
105
|
+
client: FrontendApplicationConfigProvider.get().applicationName,
|
|
106
|
+
fetch: window.fetch.bind(window),
|
|
107
|
+
authenticationHandler: (token, meta) => this.handleAuth(serverUrl, token, meta),
|
|
108
|
+
transports: [SocketIoTransportProvider],
|
|
109
|
+
userToken: localStorage.getItem(COLLABORATION_AUTH_TOKEN) ?? undefined
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
protected async handleAuth(serverUrl: string, token: string, metaData: AuthMetadata): Promise<boolean> {
|
|
114
|
+
const hasAuthProviders = Boolean(metaData.providers.length);
|
|
115
|
+
if (!hasAuthProviders && metaData.loginPageUrl) {
|
|
116
|
+
if (metaData.loginPageUrl) {
|
|
117
|
+
this.windowService.openNewWindow(metaData.loginPageUrl, { external: true });
|
|
118
|
+
return true;
|
|
119
|
+
} else {
|
|
120
|
+
this.messageService.error(nls.localize('theia/collaboration/noAuth', 'No authentication method provided by the server.'));
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (!this.quickInputService) {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
const quickPickItems: CollaborationAuthQuickPickItem[] = metaData.providers.map(provider => ({
|
|
128
|
+
label: provider.label.message,
|
|
129
|
+
detail: provider.details?.message,
|
|
130
|
+
provider
|
|
131
|
+
}));
|
|
132
|
+
const item = await this.quickInputService.pick(quickPickItems, {
|
|
133
|
+
title: nls.localize('theia/collaboration/selectAuth', 'Select Authentication Method'),
|
|
134
|
+
});
|
|
135
|
+
if (item) {
|
|
136
|
+
switch (item.provider.type) {
|
|
137
|
+
case 'form':
|
|
138
|
+
return this.handleFormAuth(serverUrl, token, item.provider);
|
|
139
|
+
case 'web':
|
|
140
|
+
return this.handleWebAuth(serverUrl, token, item.provider);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
protected async handleFormAuth(serverUrl: string, token: string, provider: FormAuthProvider): Promise<boolean> {
|
|
147
|
+
const fields = provider.fields;
|
|
148
|
+
const values: Record<string, string> = {
|
|
149
|
+
token
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
for (const field of fields) {
|
|
153
|
+
let placeHolder: string;
|
|
154
|
+
if (field.placeHolder) {
|
|
155
|
+
placeHolder = field.placeHolder.message;
|
|
156
|
+
} else {
|
|
157
|
+
placeHolder = field.label.message;
|
|
158
|
+
}
|
|
159
|
+
placeHolder += field.required ? '' : ` (${nls.localize('theia/collaboration/optional', 'optional')})`;
|
|
160
|
+
const value = await this.quickInputService!.input({
|
|
161
|
+
prompt: field.label.message,
|
|
162
|
+
placeHolder,
|
|
92
163
|
});
|
|
93
|
-
|
|
94
|
-
|
|
164
|
+
// Test for thruthyness to also test for empty string
|
|
165
|
+
if (value) {
|
|
166
|
+
values[field.name] = value;
|
|
167
|
+
} else if (field.required) {
|
|
168
|
+
this.messageService.error(nls.localize('theia/collaboration/fieldRequired', 'The {0} field is required. Login aborted.', field.label.message));
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
const endpointUrl = new URI(serverUrl).withPath(provider.endpoint);
|
|
174
|
+
const response = await fetch(endpointUrl.toString(true), {
|
|
175
|
+
method: 'POST',
|
|
176
|
+
body: JSON.stringify(values),
|
|
177
|
+
headers: {
|
|
178
|
+
'Content-Type': 'application/json'
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
if (response.ok) {
|
|
182
|
+
this.messageService.info(nls.localize('theia/collaboration/loginSuccessful', 'Login successful.'));
|
|
183
|
+
} else {
|
|
184
|
+
this.messageService.error(nls.localize('theia/collaboration/loginFailed', 'Login failed.'));
|
|
185
|
+
}
|
|
186
|
+
return response.ok;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
protected async handleWebAuth(serverUrl: string, token: string, provider: WebAuthProvider): Promise<boolean> {
|
|
190
|
+
const uri = new URI(serverUrl).withPath(provider.endpoint).withQuery('token=' + token);
|
|
191
|
+
this.windowService.openNewWindow(uri.toString(true), { external: true });
|
|
192
|
+
return true;
|
|
95
193
|
}
|
|
96
194
|
|
|
97
195
|
protected async onStatusDefaultClick(): Promise<void> {
|
|
@@ -209,7 +307,8 @@ export class CollaborationFrontendContribution implements CommandContribution {
|
|
|
209
307
|
|
|
210
308
|
protected async getCollaborationServerUrl(): Promise<string> {
|
|
211
309
|
const serverUrlVariable = await this.envVariables.getValue(COLLABORATION_SERVER_URL);
|
|
212
|
-
|
|
310
|
+
const serverUrlPreference = this.preferenceService.get<string>('collaboration.serverUrl');
|
|
311
|
+
return serverUrlVariable?.value || serverUrlPreference || DEFAULT_COLLABORATION_SERVER_URL;
|
|
213
312
|
}
|
|
214
313
|
|
|
215
314
|
registerCommands(commands: CommandRegistry): void {
|
|
@@ -223,7 +322,7 @@ export class CollaborationFrontendContribution implements CommandContribution {
|
|
|
223
322
|
}
|
|
224
323
|
}, () => cancelTokenSource.cancel());
|
|
225
324
|
try {
|
|
226
|
-
const authHandler = await this.
|
|
325
|
+
const authHandler = await this.createConnectionProvider();
|
|
227
326
|
const roomClaim = await authHandler.createRoom({
|
|
228
327
|
reporter: info => progress.report({ message: info.message }),
|
|
229
328
|
abortSignal: this.toAbortSignal(cancelTokenSource.token)
|
|
@@ -255,7 +354,7 @@ export class CollaborationFrontendContribution implements CommandContribution {
|
|
|
255
354
|
let joinRoomProgress: Progress | undefined;
|
|
256
355
|
const cancelTokenSource = new CancellationTokenSource();
|
|
257
356
|
try {
|
|
258
|
-
const authHandler = await this.
|
|
357
|
+
const authHandler = await this.createConnectionProvider();
|
|
259
358
|
const id = await this.quickInputService?.input({
|
|
260
359
|
placeHolder: nls.localize('theia/collaboration/enterCode', 'Enter collaboration session code')
|
|
261
360
|
});
|
|
@@ -293,6 +392,11 @@ export class CollaborationFrontendContribution implements CommandContribution {
|
|
|
293
392
|
}
|
|
294
393
|
}
|
|
295
394
|
});
|
|
395
|
+
commands.registerCommand(CollaborationCommands.SIGN_OUT, {
|
|
396
|
+
execute: async () => {
|
|
397
|
+
localStorage.removeItem(COLLABORATION_AUTH_TOKEN);
|
|
398
|
+
}
|
|
399
|
+
});
|
|
296
400
|
}
|
|
297
401
|
|
|
298
402
|
protected toAbortSignal(...tokens: CancellationToken[]): AbortSignal {
|
|
@@ -22,6 +22,8 @@ import { CollaborationFrontendContribution } from './collaboration-frontend-cont
|
|
|
22
22
|
import { CollaborationInstance, CollaborationInstanceFactory, CollaborationInstanceOptions, createCollaborationInstanceContainer } from './collaboration-instance';
|
|
23
23
|
import { CollaborationUtils } from './collaboration-utils';
|
|
24
24
|
import { CollaborationWorkspaceService } from './collaboration-workspace-service';
|
|
25
|
+
import { PreferenceContribution } from '@theia/core/lib/browser';
|
|
26
|
+
import { collaborationPreferencesSchema } from './collaboration-preferences';
|
|
25
27
|
|
|
26
28
|
export default new ContainerModule((bind, _, __, rebind) => {
|
|
27
29
|
bind(CollaborationWorkspaceService).toSelf().inSingletonScope();
|
|
@@ -34,4 +36,6 @@ export default new ContainerModule((bind, _, __, rebind) => {
|
|
|
34
36
|
return container.get(CollaborationInstance);
|
|
35
37
|
});
|
|
36
38
|
bind(CollaborationColorService).toSelf().inSingletonScope();
|
|
39
|
+
|
|
40
|
+
bind(PreferenceContribution).toConstantValue({ schema: collaborationPreferencesSchema });
|
|
37
41
|
});
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2025 TypeFox and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { nls } from '@theia/core';
|
|
18
|
+
import { PreferenceSchema } from '@theia/core/lib/browser';
|
|
19
|
+
|
|
20
|
+
export const collaborationPreferencesSchema: PreferenceSchema = {
|
|
21
|
+
type: 'object',
|
|
22
|
+
properties: {
|
|
23
|
+
'collaboration.serverUrl': {
|
|
24
|
+
type: 'string',
|
|
25
|
+
default: 'https://api.open-collab.tools/',
|
|
26
|
+
title: nls.localize('theia/collaboration/serverUrl', 'Server URL'),
|
|
27
|
+
description: nls.localize('theia/collaboration/serverUrlDescription', 'URL of the Open Collaboration Tools Server instance for live collaboration sessions'),
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
title: nls.localize('theia/collaboration/collaboration', 'Collaboration'),
|
|
31
|
+
};
|