in src/eventSchemas/commands/searchSchemas.ts [65:157]
SearchInputPlaceholder: localize(
'AWS.schemas.search.input.placeholder',
'Search for schema keyword...'
),
VersionPrefix: localize('AWS.schemas.search.version.prefix', 'Search matched version:'),
Scripts: loadScripts,
Libraries: loadLibs,
Stylesheets: loadStylesheets,
}),
})
view.webview.postMessage({
command: 'setLocalizedMessages',
noSchemasFound: localize('AWS.schemas.search.no_results', 'No schemas found'),
searching: localize('AWS.schemas.search.searching', 'Searching for schemas...'),
loading: localize('AWS.schemas.search.loading', 'Loading...'),
select: localize('AWS.schemas.search.select', 'Select a schema'),
})
view.webview.onDidReceiveMessage(
createMessageReceivedFunc({
registryNames: registryNames,
schemaClient: client,
telemetryService: globals.telemetry,
onPostMessage: message => view.webview.postMessage(message),
outputChannel: params.outputChannel,
}),
undefined,
globals.context.subscriptions
)
} catch (err) {
webviewResult = 'Failed'
const error = err as Error
logger.error('Error searching schemas: %O', error)
} finally {
// TODO make this telemetry actually record failures
recordSchemasSearch({ result: webviewResult })
}
}
export async function getRegistryNames(node: RegistryItemNode | SchemasNode, client: SchemaClient): Promise<string[]> {
const registryNames: string[] = []
if (node instanceof SchemasNode) {
try {
const registries = await toArrayAsync(listRegistryItems(client))
registries.forEach(element => registryNames.push(element.RegistryName!))
} catch (err) {
const error = err as Error
getLogger().error(error)
vscode.window.showErrorMessage(
localize('AWS.message.error.schemas.search.failed_to_load_resources', 'Error loading Schemas resources')
)
}
}
if (node instanceof RegistryItemNode) {
registryNames.push(node.registryName)
}
return registryNames
}
export function getPageHeader(registryNames: string[]): string {
if (registryNames.length === 1) {
return localize('AWS.schemas.search.header.text.singleRegistry', 'Search "{0}" registry', registryNames[0])
}
return localize('AWS.schemas.search.header.text.allRegistries', 'Search across all registries')
}
export interface CommandMessage {
command: string
keyword?: string
schemaSummary?: SchemaVersionedSummary
version?: string
}
export function createMessageReceivedFunc({
registryNames,
schemaClient,
telemetryService,
...restParams
}: {
registryNames: string[]
schemaClient: SchemaClient
telemetryService: TelemetryService
onPostMessage(message: any): Thenable<boolean>
outputChannel: vscode.OutputChannel
}): (message: CommandMessage) => Promise<void> {
return async (message: CommandMessage) => {
switch (message.command) {
case 'fetchSchemaContent': {