Implemented the Network tab.

Signed-off-by: Akos Kitta <kittaakos@typefox.io>
This commit is contained in:
Akos Kitta
2021-01-29 09:09:38 +01:00
committed by Akos Kitta
parent e957ac4331
commit 68b1f8d4f2
7 changed files with 322 additions and 17 deletions

View File

@@ -11,9 +11,9 @@ import { ILogger } from '@theia/core/lib/common/logger';
import { FileUri } from '@theia/core/lib/node/file-uri';
import { Event, Emitter } from '@theia/core/lib/common/event';
import { BackendApplicationContribution } from '@theia/core/lib/node/backend-application';
import { ConfigService, Config, NotificationServiceServer } from '../common/protocol';
import { ConfigService, Config, NotificationServiceServer, Network } from '../common/protocol';
import { spawnCommand } from './exec-util';
import { RawData, WriteRequest } from './cli-protocol/settings/settings_pb';
import { WriteRequest, RawData } from './cli-protocol/settings/settings_pb';
import { SettingsClient } from './cli-protocol/settings/settings_grpc_pb';
import * as serviceGrpcPb from './cli-protocol/settings/settings_grpc_pb';
import { ArduinoDaemonImpl } from './arduino-daemon-impl';
@@ -78,7 +78,7 @@ export class ConfigServiceImpl implements BackendApplicationContribution, Config
if (!copyDefaultCliConfig) {
copyDefaultCliConfig = await this.getFallbackCliConfig();
}
const { additionalUrls, dataDirUri, downloadsDirUri, sketchDirUri } = config;
const { additionalUrls, dataDirUri, downloadsDirUri, sketchDirUri, network } = config;
copyDefaultCliConfig.directories = {
data: FileUri.fsPath(dataDirUri),
downloads: FileUri.fsPath(downloadsDirUri),
@@ -89,6 +89,8 @@ export class ConfigServiceImpl implements BackendApplicationContribution, Config
...additionalUrls
]
};
const proxy = Network.stringify(network);
copyDefaultCliConfig.network = { proxy };
const { port } = copyDefaultCliConfig.daemon;
await this.updateDaemon(port, copyDefaultCliConfig);
await this.writeDaemonState(port);
@@ -175,11 +177,13 @@ export class ConfigServiceImpl implements BackendApplicationContribution, Config
if (cliConfig.board_manager && cliConfig.board_manager.additional_urls) {
additionalUrls.push(...Array.from(new Set(cliConfig.board_manager.additional_urls)));
}
const network = Network.parse(cliConfig.network?.proxy);
return {
dataDirUri: FileUri.create(data).toString(),
sketchDirUri: FileUri.create(user).toString(),
downloadsDirUri: FileUri.create(downloads).toString(),
additionalUrls,
network
};
}
@@ -195,7 +199,9 @@ export class ConfigServiceImpl implements BackendApplicationContribution, Config
protected async updateDaemon(port: string | number, config: DefaultCliConfig): Promise<void> {
const client = this.createClient(port);
const data = new RawData();
data.setJsondata(JSON.stringify(config, null, 2));
const json = JSON.stringify(config, null, 2);
data.setJsondata(json);
console.log(`Updating daemon with 'data': ${json}`);
return new Promise<void>((resolve, reject) => {
client.merge(data, error => {
try {