export async function loginWithMostRecentCredentials()

in src/credentials/activation.ts [42:125]


export async function loginWithMostRecentCredentials(
    toolkitSettings: SettingsConfiguration,
    loginManager: LoginManager
): Promise<void> {
    const defaultName = 'profile:default'
    const manager = CredentialsProviderManager.getInstance()
    const previousCredentialsId = toolkitSettings.readSetting<string>(profileSettingKey, '')

    async function tryConnect(creds: CredentialsId, popup: boolean): Promise<boolean> {
        const provider = await manager.getCredentialsProvider(creds)
        // 'provider' may be undefined if the last-used credentials no longer exists.
        if (!provider) {
            getLogger().warn('autoconnect: getCredentialsProvider() lookup failed for profile: %O', asString(creds))
        } else if (provider.canAutoConnect()) {
            if (!(await loginManager.login({ passive: true, providerId: creds }))) {
                getLogger().warn('autoconnect: failed to connect: "%s"', asString(creds))
                return false
            }
            getLogger().info('autoconnect: connected: %O', asString(creds))
            if (popup) {
                vscode.window.showInformationMessage(
                    localize(
                        'AWS.message.credentials.connected',
                        'Connected to {0} with {1}',
                        getIdeProperties().company,
                        asString(creds)
                    )
                )
            }
            return true
        }
        return false
    }

    // Auto-connect if there is a recently-used profile.
    if (previousCredentialsId) {
        // Migrate from old Toolkits: default to "shared" provider type.
        const loginCredentialsId = tryMakeCredentialsProviderId(previousCredentialsId) ?? {
            credentialSource: SharedCredentialsProvider.getProviderType(),
            credentialTypeId: previousCredentialsId,
        }
        if (await tryConnect(loginCredentialsId, false)) {
            return
        }
        getLogger().warn('autoconnect: login failed: "%s"', previousCredentialsId)
    }

    const providerMap = await manager.getCredentialProviderNames()
    const profileNames = Object.keys(providerMap)
    // Look for "default" profile or exactly one (any name).
    const defaultProfile = profileNames.includes(defaultName)
        ? defaultName
        : profileNames.length === 1
        ? profileNames[0]
        : undefined

    if (!previousCredentialsId && profileNames.length === 0) {
        await loginManager.logout(true)
        getLogger().info('autoconnect: skipped (profileNames=%d)', profileNames.length)
        return
    }

    // Try to auto-connect the default profile.
    if (defaultProfile) {
        getLogger().info('autoconnect: trying "%s"', defaultProfile)
        if (await tryConnect(providerMap[defaultProfile], !isCloud9())) {
            return
        }
    }

    // Try to auto-connect up to 3 other profiles (useful for Cloud9, ECS, …).
    for (let i = 0; i < 4 && i < profileNames.length; i++) {
        const p = profileNames[i]
        if (p === defaultName) {
            continue
        }
        getLogger().info('autoconnect: trying "%s"', p)
        if (await tryConnect(providerMap[p], !isCloud9())) {
            return
        }
    }

    await loginManager.logout(true)
}