- Notifications
You must be signed in to change notification settings - Fork 440
/
Copy pathupload-certificate.ts
143 lines (126 loc) · 4.29 KB
/
upload-certificate.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
import{inject,injectable}from'@theia/core/shared/inversify';
import{
Command,
MenuModelRegistry,
CommandRegistry,
Contribution,
}from'./contribution';
import{ArduinoMenus}from'../menu/arduino-menus';
import{UploadCertificateDialog}from'../dialogs/certificate-uploader/certificate-uploader-dialog';
import{ContextMenuRenderer}from'@theia/core/lib/browser/context-menu-renderer';
import{
PreferenceScope,
PreferenceService,
}from'@theia/core/lib/browser/preferences/preference-service';
import{
arduinoCert,
certificateList,
}from'../dialogs/certificate-uploader/utils';
import{
ArduinoFirmwareUploader,
UploadCertificateParams,
}from'../../common/protocol/arduino-firmware-uploader';
import{nls}from'@theia/core/lib/common';
@injectable()
exportclassUploadCertificateextendsContribution{
@inject(UploadCertificateDialog)
protectedreadonlydialog: UploadCertificateDialog;
@inject(ContextMenuRenderer)
protectedreadonlycontextMenuRenderer: ContextMenuRenderer;
@inject(PreferenceService)
protectedreadonlypreferenceService: PreferenceService;
@inject(ArduinoFirmwareUploader)
protectedreadonlyarduinoFirmwareUploader: ArduinoFirmwareUploader;
protecteddialogOpened=false;
overrideonStart(): void{
this.preferences.onPreferenceChanged(({ preferenceName })=>{
if(preferenceName==='arduino.board.certificates'){
this.menuManager.update();
}
});
}
overrideregisterCommands(registry: CommandRegistry): void{
registry.registerCommand(UploadCertificate.Commands.OPEN,{
execute: async()=>{
try{
this.dialogOpened=true;
this.menuManager.update();
awaitthis.dialog.open();
}finally{
this.dialogOpened=false;
this.menuManager.update();
}
},
isEnabled: ()=>!this.dialogOpened,
});
registry.registerCommand(UploadCertificate.Commands.REMOVE_CERT,{
execute: async(certToRemove)=>{
constcerts=this.preferences.get('arduino.board.certificates');
this.preferenceService.set(
'arduino.board.certificates',
certificateList(certs)
.filter((c)=>c!==certToRemove)
.join(','),
PreferenceScope.User
);
},
isEnabled: (certToRemove)=>certToRemove!==arduinoCert,
});
registry.registerCommand(UploadCertificate.Commands.UPLOAD_CERT,{
execute: async(params: UploadCertificateParams)=>{
returnthis.arduinoFirmwareUploader.uploadCertificates(params);
},
});
registry.registerCommand(UploadCertificate.Commands.OPEN_CERT_CONTEXT,{
execute: async(args: any)=>{
this.contextMenuRenderer.render({
menuPath: ArduinoMenus.ROOT_CERTIFICATES__CONTEXT,
anchor: {
x: args.x,
y: args.y,
},
args: [args.cert],
});
},
});
}
overrideregisterMenus(registry: MenuModelRegistry): void{
registry.registerMenuAction(ArduinoMenus.TOOLS__FIRMWARE_UPLOADER_GROUP,{
commandId: UploadCertificate.Commands.OPEN.id,
label: UploadCertificate.Commands.OPEN.label,
order: '1',
});
registry.registerMenuAction(ArduinoMenus.ROOT_CERTIFICATES__CONTEXT,{
commandId: UploadCertificate.Commands.REMOVE_CERT.id,
label: UploadCertificate.Commands.REMOVE_CERT.label,
order: '1',
});
}
}
exportnamespaceUploadCertificate{
exportnamespaceCommands{
exportconstOPEN: Command={
id: 'arduino-upload-certificate-open',
label: nls.localize(
'arduino/certificate/uploadRootCertificates',
'Upload SSL Root Certificates'
),
category: 'Arduino',
};
exportconstOPEN_CERT_CONTEXT: Command={
id: 'arduino-certificate-open-context',
label: nls.localize('arduino/certificate/openContext','Open context'),
category: 'Arduino',
};
exportconstREMOVE_CERT: Command={
id: 'arduino-certificate-remove',
label: nls.localize('arduino/certificate/remove','Remove'),
category: 'Arduino',
};
exportconstUPLOAD_CERT: Command={
id: 'arduino-certificate-upload',
label: nls.localize('arduino/certificate/upload','Upload'),
category: 'Arduino',
};
}
}