diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 8b649412b..f9168cc88 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -73,6 +73,7 @@ "attemptingReconnection": "Attempting reconnect in $reconnect_duration_in_seconds$ seconds", "submitDebugLog": "Debug log", "debugLog": "Debug Log", + "showDebugLog": "Show Debug Log", "goToReleaseNotes": "Go to Release Notes", "goToSupportPage": "Go to Support Page", "menuReportIssue": "Report an Issue", diff --git a/debug_log_preload.js b/debug_log_preload.js index 8121af5d6..dbd23deff 100644 --- a/debug_log_preload.js +++ b/debug_log_preload.js @@ -22,5 +22,9 @@ window.getNodeVersion = () => config.node_version; window.getEnvironment = () => config.environment; require('./js/logging'); +const os = require('os'); + +window.getOSRelease = () => `${os.type()} ${os.release} ${os.platform()}`; +window.getCommitHash = () => config.commitHash; window.closeDebugLog = () => ipcRenderer.send('close-debug-log'); diff --git a/js/views/debug_log_view.js b/js/views/debug_log_view.js index 1ed681538..4ef324362 100644 --- a/js/views/debug_log_view.js +++ b/js/views/debug_log_view.js @@ -26,9 +26,15 @@ this.render(); this.$('textarea').val(i18n('loading')); + const operatingSystemInfo = `Operating System: ${window.getOSRelease()}`; + + const commitHashInfo = window.getCommitHash() ? `Commit Hash: ${window.getCommitHash()}` : ''; + // eslint-disable-next-line more/no-then window.log.fetch().then(text => { - this.$('textarea').val(text); + const debugLogWithSystemInfo = operatingSystemInfo + commitHashInfo + text; + + this.$('textarea').val(debugLogWithSystemInfo); }); }, events: { diff --git a/ts/components/conversation/message/OutgoingMessageStatus.tsx b/ts/components/conversation/message/OutgoingMessageStatus.tsx index 2a6869b75..0701ce131 100644 --- a/ts/components/conversation/message/OutgoingMessageStatus.tsx +++ b/ts/components/conversation/message/OutgoingMessageStatus.tsx @@ -1,3 +1,4 @@ +import { ipcRenderer } from 'electron'; import React from 'react'; import styled from 'styled-components'; import { MessageDeliveryStatus } from '../../../models/messageType'; @@ -40,8 +41,12 @@ const MessageStatusRead = () => { }; const MessageStatusError = () => { + const showDebugLog = () => { + ipcRenderer.send('show-debug-log'); + }; + return ( - + ); diff --git a/ts/components/session/settings/SessionSettings.tsx b/ts/components/session/settings/SessionSettings.tsx index 05db39c86..487bc236b 100644 --- a/ts/components/session/settings/SessionSettings.tsx +++ b/ts/components/session/settings/SessionSettings.tsx @@ -14,7 +14,7 @@ import { getPasswordHash, hasLinkPreviewPopupBeenDisplayed, } from '../../../../ts/data/data'; -import { shell } from 'electron'; +import { ipcRenderer, shell } from 'electron'; import { mapDispatchToProps } from '../../../state/actions'; import { unblockConvoById } from '../../../interactions/conversationInteractions'; import { toggleAudioAutoplay } from '../../../state/ducks/userConfig'; @@ -497,6 +497,23 @@ class SettingsViewInner extends React.Component { buttonColor: SessionButtonColor.Primary, }, }, + { + id: 'debug-log-setting', + title: window.i18n('showDebugLog'), + description: undefined, + hidden: false, + type: SessionSettingType.Button, + category: SessionSettingCategory.Appearance, + setFn: undefined, + comparisonValue: undefined, + onClick: () => { + ipcRenderer.send('show-debug-log'); + }, + content: { + buttonText: window.i18n('debugLog'), + buttonColor: SessionButtonColor.Primary, + }, + }, { id: 'media-permissions', title: window.i18n('mediaPermissionsTitle'),