blob: e379cfc236a2376eb4078741fd4c31793d59c030 [file] [log] [blame]
// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import { WebviewApi } from 'vscode-webview';
import { ExternalActionRequestEvent, LoggingView } from './components/view';
import { PersistedState, State } from './src/state';
//@ts-check
// This script will be run within the webview itself
// It cannot access the main VS Code APIs directly.
(function () {
const vscode = acquireVsCodeApi() as WebviewApi<PersistedState>;
const view = new LoggingView(new State(vscode), document.body);
// TODO(fxbug.dev/109719): move this to the persisted state.
let playing = true;
// Handle messages sent from the extension to the webview
window.addEventListener('message', event => {
const message = event.data;
switch (message.type) {
case 'addLog':
if (playing) {
view.addLog(message.log);
}
break;
case 'reset':
view.reset();
}
});
// Forward webview messages to the extension.
view.addEventListener(LoggingView.externalActionRequestEvent, (e) => {
const event = (e as CustomEvent).detail as ExternalActionRequestEvent;
switch (event.type) {
case 'pause-log-streaming':
playing = false;
vscode.postMessage({
command: 'pauseLogStreaming'
});
break;
case 'resume-log-streaming':
playing = true;
vscode.postMessage({
command: 'resumeLogStreaming'
});
break;
}
});
}());