@@ -600,7 +600,7 @@ export function fromExtensionManifest<T extends TypeDescriptor & Partial<Section
600600 *
601601 * ### Usage:
602602 * ```
603- * if (await settings.isPromptEnabled('myPromptName')) {
603+ * if (settings.isPromptEnabled('myPromptName')) {
604604 * // Show some sort of prompt
605605 * const userResponse = await promptUser()
606606 *
@@ -627,19 +627,12 @@ export class ToolkitPromptSettings
627627 )
628628 implements PromptSettings
629629{
630- public async isPromptEnabled ( promptName : toolkitPromptName ) : Promise < boolean > {
631- try {
632- return ! this . _getOrThrow ( promptName , false )
633- } catch ( e ) {
634- this . _log ( 'prompt check for "%s" failed: %s' , promptName , ( e as Error ) . message )
635- await this . reset ( )
636-
637- return true
638- }
630+ public isPromptEnabled ( promptName : toolkitPromptName ) {
631+ return isEnabled ( this , promptName )
639632 }
640633
641634 public async disablePrompt ( promptName : toolkitPromptName ) : Promise < void > {
642- if ( await this . isPromptEnabled ( promptName ) ) {
635+ if ( this . isPromptEnabled ( promptName ) ) {
643636 await this . update ( promptName , true )
644637 }
645638 }
@@ -660,19 +653,12 @@ export class AmazonQPromptSettings
660653 )
661654 implements PromptSettings
662655{
663- public async isPromptEnabled ( promptName : amazonQPromptName ) : Promise < boolean > {
664- try {
665- return ! this . _getOrThrow ( promptName , false )
666- } catch ( e ) {
667- this . _log ( 'prompt check for "%s" failed: %s' , promptName , ( e as Error ) . message )
668- await this . reset ( )
669-
670- return true
671- }
656+ public isPromptEnabled ( promptName : amazonQPromptName ) : boolean {
657+ return isEnabled ( this , promptName )
672658 }
673659
674660 public async disablePrompt ( promptName : amazonQPromptName ) : Promise < void > {
675- if ( await this . isPromptEnabled ( promptName ) ) {
661+ if ( this . isPromptEnabled ( promptName ) ) {
676662 await this . update ( promptName , true )
677663 }
678664 }
@@ -692,7 +678,7 @@ export class AmazonQPromptSettings
692678type AllPromptNames = amazonQPromptName | toolkitPromptName
693679
694680export interface PromptSettings {
695- isPromptEnabled ( promptName : AllPromptNames ) : Promise < boolean >
681+ isPromptEnabled ( promptName : AllPromptNames ) : boolean
696682 disablePrompt ( promptName : AllPromptNames ) : Promise < void >
697683}
698684
@@ -708,7 +694,7 @@ type ExperimentName = keyof typeof experiments
708694 * ### Usage:
709695 * ```
710696 * function myExperimentalFeature(): void {
711- * if (!(await settings.isExperimentEnabled('myExperimentalFeature'))) {
697+ * if (!(settings.isExperimentEnabled('myExperimentalFeature'))) {
712698 * return
713699 * }
714700 *
@@ -727,14 +713,7 @@ export class Experiments extends Settings.define(
727713 toRecord ( keys ( experiments ) , ( ) => Boolean )
728714) {
729715 public isExperimentEnabled ( name : ExperimentName ) : boolean {
730- try {
731- return this . _getOrThrow ( name , false )
732- } catch ( error ) {
733- this . _log ( `experiment check for ${ name } failed: %s` , error )
734- this . reset ( ) . catch ( ( e ) => getLogger ( ) . error ( `failed to reset experiment settings: %O` , e ) )
735-
736- return false
737- }
716+ return isEnabled ( this , name )
738717 }
739718
740719 static #instance: Experiments
@@ -949,3 +928,22 @@ export async function openSettings(prefix: string): Promise<void> {
949928export async function openSettingsId < K extends keyof SettingsProps > ( key : K ) : Promise < void > {
950929 await vscode . commands . executeCommand ( 'workbench.action.openSettings' , `@id:${ key } ` )
951930}
931+
932+ function isEnabled <
933+ S extends {
934+ _getOrThrow ( key : P & string , defaultValue : boolean ) : boolean
935+ _log ( message : string , ...args : any [ ] ) : void
936+ update ( key : P & string , value : boolean ) : Promise < boolean >
937+ reset ( ) : Promise < void >
938+ } ,
939+ P extends AllPromptNames | ExperimentName ,
940+ > ( settings : S , promptName : P ) {
941+ try {
942+ return ! settings . _getOrThrow ( promptName , false )
943+ } catch ( e ) {
944+ settings . _log ( 'prompt check for "%s" failed: %s' , promptName , ( e as Error ) . message )
945+ settings . reset ( ) . catch ( ( e ) => getLogger ( ) . error ( `failed to reset prompt settings: %O` , ( e as Error ) . message ) )
946+
947+ return true
948+ }
949+ }
0 commit comments