in src/awsexplorer/defaultRegion.ts [51:143]
export async function checkExplorerForDefaultRegion(
profileName: string,
awsContext: AwsContext,
awsExplorer: AwsExplorer
): Promise<void> {
const profileRegion = awsContext.getCredentialDefaultRegion()
const explorerRegions = new Set(await awsContext.getExplorerRegions())
if (explorerRegions.has(profileRegion)) {
return
}
// Explorer does not contain the default region. See if we should add it.
const config = vscode.workspace.getConfiguration(extensionSettingsPrefix)
const defaultAction = config.get<OnDefaultRegionMissingOperation>(
'onDefaultRegionMissing',
OnDefaultRegionMissingOperation.Prompt
)
// Bypass prompt if user has requested to suppress it.
if (defaultAction === OnDefaultRegionMissingOperation.Add) {
await awsContext.addExplorerRegion(profileRegion)
awsExplorer.refresh()
return
} else if (defaultAction === OnDefaultRegionMissingOperation.Ignore) {
return
}
// Ask user what to do
const items = [
DefaultRegionMissingPromptItems.add,
DefaultRegionMissingPromptItems.alwaysAdd,
DefaultRegionMissingPromptItems.ignore,
DefaultRegionMissingPromptItems.alwaysIgnore,
].map<vscode.QuickPickItem>(item => {
return {
label: item,
}
})
const picker = createQuickPick({
options: {
canPickMany: false,
ignoreFocusOut: true,
title: localize(
'AWS.message.prompt.defaultRegionHidden',
'Default region "{0}" of profile "{1}" is currently hidden. Show it in {2} Explorer?',
profileRegion,
profileName,
getIdeProperties().company
),
},
items: items,
})
const response = await promptUser({ picker: picker })
// User Cancelled
if (!response || response.length === 0) {
return
}
const regionHiddenResponse = response[0].label
if (
regionHiddenResponse === DefaultRegionMissingPromptItems.add ||
regionHiddenResponse === DefaultRegionMissingPromptItems.alwaysAdd
) {
await awsContext.addExplorerRegion(profileRegion)
awsExplorer.refresh()
}
if (
regionHiddenResponse === DefaultRegionMissingPromptItems.alwaysAdd ||
regionHiddenResponse === DefaultRegionMissingPromptItems.alwaysIgnore
) {
// User does not want to be prompted anymore
const action =
regionHiddenResponse === DefaultRegionMissingPromptItems.alwaysAdd
? OnDefaultRegionMissingOperation.Add
: OnDefaultRegionMissingOperation.Ignore
await config.update('onDefaultRegionMissing', action, vscode.ConfigurationTarget.Global)
vscode.window.showInformationMessage(
localize(
'AWS.message.prompt.defaultRegionHidden.suppressed',
// prettier-ignore
"You will no longer be asked what to do when the current profile's default region is hidden from the Explorer. This behavior can be changed by modifying the '{0}' setting.",
'aws.onDefaultRegionMissing'
)
)
}
}