@@ -5,37 +5,53 @@ export type SettingsPackageTrust = {
55 [ key : string ] : InstallPermissionEnum . AlwaysAllow | InstallPermissionEnum . AlwaysAsk ;
66} ;
77
8- export const ALWAYS_ALLOW = 'Always allow installs ' ;
9- export const ALWAYS_ASK = 'Always ask before installing ' ;
8+ export const ALWAYS_ALLOW = 'Always allow' ;
9+ export const ALWAYS_ASK = 'Ask every time ' ;
1010export const INSTALL_NO_CONFIGURE = 'Install without configuring permissions' ;
1111
1212export const YES_INSTALL = 'Yes, Install' ;
1313export const NO_INSTALL = 'Do Not Install' ;
1414
15- export function promptForInstallPermissions ( extensionName : string , packages : string ) : Thenable < InstallPermissionEnum > {
15+ export function promptForInstallPermissions (
16+ extensionName : string ,
17+ packages : string [ ] ,
18+ ) : Thenable < InstallPermissionEnum > {
19+ const extName = extensionName . split ( '.' ) [ 1 ] ;
20+ if ( packages . length < 1 ) {
21+ return Promise . reject ( 'No packages to install.' ) ;
22+ }
23+ let detailStr = `'${ extensionName } ' wants to install the package '${ packages [ 0 ] } '.` ;
24+ if ( packages . length > 1 ) {
25+ detailStr = `'${ extensionName } ' wants to install packages '${ packages . join ( ', ' ) } '.` ;
26+ }
27+ detailStr = `Set permissions for this and future package installations from '${ extensionName } '.` ;
1628 return new Promise ( ( resolve ) => {
1729 window
1830 . showInformationMessage (
19- 'Would you like to set permissions for future package installs from the ' + extensionName + ' extension?' ,
31+ `Allow extension ' ${ extName } ' to install packages?` ,
2032 {
21- detail : `package/s: " ${ packages } "` ,
33+ detail : detailStr ,
2234 modal : true ,
2335 } ,
2436 ALWAYS_ASK ,
2537 ALWAYS_ALLOW ,
26- INSTALL_NO_CONFIGURE ,
2738 )
2839 . then ( ( selectedOption ) => {
2940 switch ( selectedOption ) {
3041 case ALWAYS_ALLOW :
42+ window . showInformationMessage (
43+ `${ extName } extension installed ${ packages . join ( ', ' ) } package and is always allowed to install in the future.` ,
44+ 'Configure'
45+ ) . then ( ( selection ) => {
46+ if ( selection === 'Configure' ) {
47+ // Add logic to open the configuration settings
48+ }
49+ } ) ;
3150 resolve ( InstallPermissionEnum . AlwaysAllow ) ;
3251 break ;
3352 case ALWAYS_ASK :
3453 resolve ( InstallPermissionEnum . AlwaysAsk ) ;
3554 break ;
36- case INSTALL_NO_CONFIGURE :
37- resolve ( InstallPermissionEnum . InstallNoConfigure ) ;
38- break ;
3955 default :
4056 resolve ( InstallPermissionEnum . Cancel ) ;
4157 break ;
@@ -44,13 +60,21 @@ export function promptForInstallPermissions(extensionName: string, packages: str
4460 } ) ;
4561}
4662
47- export function promptForAlwaysAsk ( extensionName : string , packages : string ) : Thenable < string | undefined > {
63+ export function promptForAlwaysAsk ( extensionName : string , packages : string [ ] ) : Thenable < string | undefined > {
64+ const extName = extensionName . split ( '.' ) [ 1 ] ;
65+ if ( packages . length < 1 ) {
66+ return Promise . reject ( 'No packages to install.' ) ;
67+ }
68+ let detailStr = `${ extName } wants to install '${ packages [ 0 ] } ' package.` ;
69+ if ( packages . length > 1 ) {
70+ detailStr = `${ extName } wants to install '${ packages . join ( ', ' ) } ' packages.` ;
71+ }
4872 return new Promise ( ( resolve ) => {
4973 window
5074 . showInformationMessage (
51- 'Do you want to install the following package/s from the ' + extensionName + ' extension?' ,
75+ `Allow ${ extName } to Install Packages?` ,
5276 {
53- detail : `package/s: " ${ packages } "` ,
77+ detail : detailStr ,
5478 modal : true ,
5579 } ,
5680 YES_INSTALL ,
0 commit comments