diff --git a/app/src/components/Sidebar/ValueRenderer/ValuePanel.tsx b/app/src/components/Sidebar/ValueRenderer/ValuePanel.tsx index fc07a51..e20bab7 100644 --- a/app/src/components/Sidebar/ValueRenderer/ValuePanel.tsx +++ b/app/src/components/Sidebar/ValueRenderer/ValuePanel.tsx @@ -60,9 +60,9 @@ function ValuePanel(props: Props) { return node?.message && decodeMessage(node.message)?.message?.toUnicodeString() }, [node, decodeMessage]) - const getBuffer = () => { + const getData = () => { if (node?.message && node.message.payload) { - return node.message.payload.toBuffer() + return node.message.payload.base64Message } } @@ -100,7 +100,7 @@ function ValuePanel(props: Props) { const [value] = node && node.message && node.message.payload ? node.message.payload?.format(node.type) : [null, undefined] const copyValue = value ? : null - const saveValue = value ? : null + const saveValue = value ? : null return ( diff --git a/app/src/components/helper/Save.tsx b/app/src/components/helper/Save.tsx index d085786..25a4cff 100644 --- a/app/src/components/helper/Save.tsx +++ b/app/src/components/helper/Save.tsx @@ -2,15 +2,15 @@ import * as React from 'react' import { connect } from 'react-redux' import Check from '@material-ui/icons/Check' import CustomIconButton from './CustomIconButton' -import { promises as fsPromise } from 'fs' + import { SaveAlt } from '@material-ui/icons' import { bindActionCreators } from 'redux' -import { rendererRpc } from '../../../../events' +import { rendererRpc, writeFile } from '../../../../events' import { makeSaveDialogRpc } from '../../../../events/OpenDialogRequest' import { globalActions } from '../../actions' -export async function saveToFile(buffer: Buffer | string): Promise { +export async function saveToFile(data: string): Promise { const rejectReasons = { errorWritingFile: 'Error writing file', } @@ -21,7 +21,7 @@ export async function saveToFile(buffer: Buffer | string): Promise Buffer | undefined + getData: () => string | undefined actions: { global: typeof globalActions } @@ -48,9 +48,9 @@ class Save extends React.PureComponent { private handleClick = async (event: React.MouseEvent) => { event.stopPropagation() - const buffer = this.props.getBuffer() - if (buffer !== undefined) { - const filename = await saveToFile(buffer) + const data = this.props.getData() + if (data != undefined) { + const filename = await saveToFile(data) this.props.actions.global.showNotification(`Saved to ${filename}`) this.setState({ didSave: true }) setTimeout(() => { diff --git a/events/Events.ts b/events/Events.ts index 418652b..a951724 100644 --- a/events/Events.ts +++ b/events/Events.ts @@ -54,3 +54,7 @@ export function makeConnectionMessageEvent(connectionId: string): Event = { topic: 'getAppVersion', } + +export const writeFile: RpcEvent<{ filePath: string, data: string }, void> = { + topic: 'writeFile', +} \ No newline at end of file diff --git a/src/electron.ts b/src/electron.ts index 6acd034..5df6ca2 100644 --- a/src/electron.ts +++ b/src/electron.ts @@ -4,6 +4,7 @@ import ConfigStorage from '../backend/src/ConfigStorage' import { app, BrowserWindow, Menu, dialog } from 'electron' import { autoUpdater } from 'electron-updater' import { ConnectionManager } from '../backend/src/index' +import { promises as fsPromise } from 'fs' // import { electronTelemetryFactory } from 'electron-telemetry' import { menuTemplate } from './MenuTemplate' import buildOptions from './buildOptions' @@ -11,7 +12,7 @@ import { waitForDevServer, isDev, runningUiTestOnCi, loadDevTools } from './deve import { shouldAutoUpdate, handleAutoUpdate } from './autoUpdater' import { registerCrashReporter } from './registerCrashReporter' import { makeOpenDialogRpc, makeSaveDialogRpc } from '../events/OpenDialogRequest' -import { backendRpc, getAppVersion } from '../events' +import { backendRpc, getAppVersion, writeFile } from '../events' registerCrashReporter() @@ -31,6 +32,10 @@ app.whenReady().then(() => { }) backendRpc.on(getAppVersion, async () => app.getVersion()) + + backendRpc.on(writeFile, async ({ filePath, data }) => { + await fsPromise.writeFile(filePath, Buffer.from(data, 'base64')) + }) }) autoUpdater.logger = log