@theia/collaboration 1.62.0-next.3 → 1.62.1

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.
@@ -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,EAC9I,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,kBAAkB,EAA6B,MAAM,6BAA6B,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,SAAS,EAAsB,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAInG,eAAO,MAAM,sBAAsB,kBAAkB,CAAC;AAEtD,yBAAiB,qBAAqB,CAAC;IAC5B,MAAM,WAAW,EAAE,OAEzB,CAAC;IACK,MAAM,SAAS,EAAE,OAEvB,CAAC;CACL;AAED,eAAO,MAAM,2BAA2B,4BAA4B,CAAC;AAErE,eAAO,MAAM,wBAAwB,4BAA4B,CAAC;AAClE,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AACnE,eAAO,MAAM,gCAAgC,mCAAmC,CAAC;AAEjF,qBACa,iCAAkC,YAAW,mBAAmB;IAEzE,SAAS,CAAC,QAAQ,CAAC,kBAAkB,+BAAsC;IAG3E,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAGhD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAGzD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;IAGpD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,6BAA6B,CAAC;IAGnE,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAGlD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IAG7C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAGxC,SAAS,CAAC,QAAQ,CAAC,4BAA4B,EAAE,4BAA4B,CAAC;IAE9E,SAAS,CAAC,eAAe,CAAC,EAAE,qBAAqB,CAAC;IAGlD,SAAS,CAAC,IAAI,IAAI,IAAI;cAeN,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;cAmBrC,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cA4ChD,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAkBnD,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;cAQzC,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAQpD,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAQvD,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;cAQ1E,yBAAyB,IAAI,OAAO,CAAC,MAAM,CAAC;IAK5D,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAmFjD,SAAS,CAAC,aAAa,CAAC,GAAG,MAAM,EAAE,iBAAiB,EAAE,GAAG,WAAW;cAMpD,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAuB1F"}
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
- this.getCollaborationServerUrl().then(serverUrl => {
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
- const authHandler = new open_collaboration_protocol_1.ConnectionProvider({
55
- url: serverUrl,
56
- client: frontend_application_config_provider_1.FrontendApplicationConfigProvider.get().applicationName,
57
- fetch: window.fetch.bind(window),
58
- opener: url => this.windowService.openNewWindow(url, { external: true }),
59
- transports: [open_collaboration_protocol_1.SocketIoTransportProvider],
60
- userToken: (_a = localStorage.getItem(exports.COLLABORATION_AUTH_TOKEN)) !== null && _a !== void 0 ? _a : undefined
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
- this.connectionProvider.resolve(authHandler);
63
- }, err => this.connectionProvider.reject(err));
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
- return (serverUrlVariable === null || serverUrlVariable === void 0 ? void 0 : serverUrlVariable.value) || exports.DEFAULT_COLLABORATION_SERVER_URL;
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.connectionProvider.promise;
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.connectionProvider.promise;
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;;AAQ/D,wBAWG"}
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;AAElF,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;AAChE,CAAC,CAAC,CAAC"}
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,3 @@
1
+ import { PreferenceSchema } from '@theia/core/lib/browser';
2
+ export declare const collaborationPreferencesSchema: PreferenceSchema;
3
+ //# sourceMappingURL=collaboration-preferences.d.ts.map
@@ -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.62.0-next.3+907647f99",
3
+ "version": "1.62.1",
4
4
  "description": "Theia - Collaboration Extension",
5
5
  "dependencies": {
6
- "@theia/core": "1.62.0-next.3+907647f99",
7
- "@theia/editor": "1.62.0-next.3+907647f99",
8
- "@theia/filesystem": "1.62.0-next.3+907647f99",
9
- "@theia/monaco": "1.62.0-next.3+907647f99",
6
+ "@theia/core": "1.62.1",
7
+ "@theia/editor": "1.62.1",
8
+ "@theia/filesystem": "1.62.1",
9
+ "@theia/monaco": "1.62.1",
10
10
  "@theia/monaco-editor-core": "1.96.302",
11
- "@theia/workspace": "1.62.0-next.3+907647f99",
11
+ "@theia/workspace": "1.62.1",
12
12
  "lib0": "^0.2.52",
13
- "open-collaboration-protocol": "0.2.0",
14
- "open-collaboration-yjs": "0.2.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.61.0"
52
+ "@theia/ext-scripts": "1.62.1"
53
53
  },
54
54
  "nyc": {
55
55
  "extends": "../../configs/nyc.json"
56
56
  },
57
- "gitHead": "907647f99bd78541b18e8e6133acc9246d85a8a2"
57
+ "gitHead": "0cdb67623c7b5ce0a2d41a1440ed0a78bce890de"
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
- this.getCollaborationServerUrl().then(serverUrl => {
85
- const authHandler = new ConnectionProvider({
86
- url: serverUrl,
87
- client: FrontendApplicationConfigProvider.get().applicationName,
88
- fetch: window.fetch.bind(window),
89
- opener: url => this.windowService.openNewWindow(url, { external: true }),
90
- transports: [SocketIoTransportProvider],
91
- userToken: localStorage.getItem(COLLABORATION_AUTH_TOKEN) ?? undefined
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
- this.connectionProvider.resolve(authHandler);
94
- }, err => this.connectionProvider.reject(err));
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
- return serverUrlVariable?.value || DEFAULT_COLLABORATION_SERVER_URL;
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.connectionProvider.promise;
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.connectionProvider.promise;
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
+ };