export async function showTriggerInfo()

in src/commands/showTriggerInfo.ts [26:91]


export async function showTriggerInfo(
    trigger: WskTrigger,
    context: vscode.ExtensionContext
): Promise<void> {
    const panel = vscode.window.createWebviewPanel(
        'showTriggerInfo',
        `Trigger: ${trigger.label}`,
        vscode.ViewColumn.One,
        {
            enableScripts: true,
        }
    );

    const nodeModulesDiskPath = vscode.Uri.file(path.join(context.extensionPath, 'node_modules'));
    const nodeModulePath = panel.webview.asWebviewUri(nodeModulesDiskPath);
    const webviewTemplateDiskPath = vscode.Uri.file(WEBVIEW_TEMPLATE_PATH);
    const webviewTemplatePath = panel.webview.asWebviewUri(webviewTemplateDiskPath);

    const html = await fs.promises.readFile(
        path.resolve(WEBVIEW_TEMPLATE_PATH, 'triggerInfo.html'),
        'utf-8'
    );

    panel.webview.html = html
        .replace(/{{nodeModulePath}}/gi, nodeModulePath.toString())
        .replace(/{{webviewTemplatePath}}/gi, webviewTemplatePath.toString());

    let triggerDesc: openwhisk.Trigger | null;

    panel.webview.onDidReceiveMessage(async (message) => {
        if (message.command === 'initialized') {
            if (!triggerDesc) {
                triggerDesc = await trigger.client.triggers.get(trigger.label);
            }
            let params = '';
            let annotations = '';
            if (triggerDesc.parameters) {
                params = JSON.stringify(convertKeyValToObj(triggerDesc.parameters), null, 4);
            }
            if (triggerDesc.annotations) {
                annotations = JSON.stringify(convertKeyValToObj(triggerDesc.annotations), null, 4);
            }
            panel.webview.postMessage({
                command: 'getData',
                name: triggerDesc.name,
                params: params,
                annotations: annotations,
                rules: triggerDesc.rules,
            });
        }

        if (message.command === 'update') {
            const annotationObject = JSON.parse(message.annotations);
            const parameterObject = JSON.parse(message.parameters);
            await trigger.client.triggers.update({
                name: trigger.label,
                trigger: {
                    annotations: convertObjToKeyVal(annotationObject),
                    parameters: convertObjToKeyVal(parameterObject),
                },
            });
            vscode.window.showInformationMessage('The trigger is updated successfully.');
            triggerDesc = null;
        }
    });
}