diff --git a/src/plugin/memory-webview-main.ts b/src/plugin/memory-webview-main.ts index d13914a..9d396db 100644 --- a/src/plugin/memory-webview-main.ts +++ b/src/plugin/memory-webview-main.ts @@ -163,14 +163,14 @@ export class MemoryWebview implements vscode.CustomReadonlyEditorProvider { } // Set HTML content - await this.getWebviewContent(panel); + await this.getWebviewContent(panel, initialMemory); // Sets up an event listener to listen for messages passed from the webview view context // and executes code based on the message that is received this.setWebviewMessageListener(panel, initialMemory); } - protected async getWebviewContent(panel: vscode.WebviewPanel): Promise { + protected async getWebviewContent(panel: vscode.WebviewPanel, initialMemory?: MemoryOptions): Promise { const mainUri = panel.webview.asWebviewUri(vscode.Uri.joinPath( this.extensionUri, 'dist', @@ -194,7 +194,7 @@ export class MemoryWebview implements vscode.CustomReadonlyEditorProvider { -
+
${initialMemory ? `
` : ''} `; @@ -206,7 +206,6 @@ export class MemoryWebview implements vscode.CustomReadonlyEditorProvider { this.messenger.onNotification(readyType, async () => { this.setSessionContext(participant, this.createContext()); await this.setMemoryDisplaySettings(participant, panel.title); - this.refresh(participant, options); }, { sender: participant }), this.messenger.onRequest(setOptionsType, newOptions => { options = { ...options, ...newOptions }; }, { sender: participant }), this.messenger.onRequest(logMessageType, message => outputChannelLogger.info('[webview]:', message), { sender: participant }), diff --git a/src/webview/memory-webview-view.tsx b/src/webview/memory-webview-view.tsx index 537cf1f..81db5d4 100644 --- a/src/webview/memory-webview-view.tsx +++ b/src/webview/memory-webview-view.tsx @@ -86,12 +86,18 @@ export const DEFAULT_MEMORY_DISPLAY_CONFIGURATION: MemoryDisplaySettings = { visibleColumns: manifest.DEFAULT_VISIBLE_COLUMNS }; +function getInitialValuesHolder(): HTMLElement | null { + return document.getElementById('initial-data'); +} + class App extends React.Component<{}, MemoryAppState> { protected memoryWidget = React.createRef(); protected refreshTimer?: NodeJS.Timeout | number; public constructor(props: {}) { super(props); + const initialValuesHolder = getInitialValuesHolder(); + const initialReadArguments = initialValuesHolder ? { ...DEFAULT_READ_ARGUMENTS, ...JSON.parse(initialValuesHolder.dataset['options']!) } : DEFAULT_READ_ARGUMENTS; columnContributionService.register(new AddressColumn(), false); columnContributionService.register(new DataColumn(), false); columnContributionService.register(variableDecorator); @@ -106,8 +112,8 @@ class App extends React.Component<{}, MemoryAppState> { sessionContext: DEFAULT_SESSION_CONTEXT, memory: undefined, effectiveAddressLength: 0, - configuredReadArguments: DEFAULT_READ_ARGUMENTS, - activeReadArguments: DEFAULT_READ_ARGUMENTS, + configuredReadArguments: initialReadArguments, + activeReadArguments: initialReadArguments, decorations: [], hoverService: hoverService, columns: columnContributionService.getColumns(), @@ -118,6 +124,9 @@ class App extends React.Component<{}, MemoryAppState> { } public componentDidMount(): void { + if (getInitialValuesHolder()) { + this.fetchMemory(this.state.activeReadArguments); + } messenger.onRequest(setOptionsType, options => this.setOptions(options)); messenger.onNotification(memoryWrittenType, writtenMemory => this.memoryWritten(writtenMemory)); messenger.onNotification(sessionContextChangedType, sessionContext => this.sessionContextChanged(sessionContext));