diff --git a/.flowconfig b/.flowconfig index 664b2d8de35..1eaa4969ed2 100644 --- a/.flowconfig +++ b/.flowconfig @@ -20,5 +20,6 @@ module.name_mapper='^lbry\(.*\)$' -> '/src/renderer/lbry\1' module.name_mapper='^rewards\(.*\)$' -> '/src/renderer/rewards\1' module.name_mapper='^modal\(.*\)$' -> '/src/renderer/modal\1' module.name_mapper='^app\(.*\)$' -> '/src/renderer/app\1' +module.name_mapper='^native\(.*\)$' -> '/src/renderer/native\1' [strict] diff --git a/CHANGELOG.md b/CHANGELOG.md index 00bd560df0f..8af50eb4bc5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/). ### Added + * Add ability to open log file and log directory in the help page ([#1556](https://github.com/lbryio/lbry-app/issues/1556)) * Add ability to resend verification email ([#1492](https://github.com/lbryio/lbry-app/issues/1492)) * Add Narrative about Feature Request on Help Page and Report Page ([#1551](https://github.com/lbryio/lbry-app/pull/1551)) * Add keyboard shortcut to quit the app on Windows ([#1202](https://github.com/lbryio/lbry-app/pull/1202)) @@ -27,6 +28,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/). * Move rewards logic to interal api ([#1509](https://github.com/lbryio/lbry-app/pull/1509)) ### Fixed + * Fixing content address extending outside of visible area. ([#741](https://github.com/lbryio/lbry-app/issues/741)) * Fix content-type not shown correctly in file description ([#863](https://github.com/lbryio/lbry-app/pull/863)) * Fix [Flow](https://flow.org/) ([#1197](https://github.com/lbryio/lbry-app/pull/1197)) * Fix black screen on macOS after maximizing LBRY and then closing ([#1235](https://github.com/lbryio/lbry-app/pull/1235)) diff --git a/src/renderer/page/help/index.js b/src/renderer/page/help/index.js index 6a59becb9ac..cfabb784b1b 100644 --- a/src/renderer/page/help/index.js +++ b/src/renderer/page/help/index.js @@ -1,12 +1,14 @@ import { connect } from 'react-redux'; import { doAuthNavigate } from 'redux/actions/navigation'; import { doFetchAccessToken } from 'redux/actions/user'; +import { selectDaemonSettings } from 'redux/selectors/settings'; import { selectAccessToken, selectUser } from 'redux/selectors/user'; import HelpPage from './view'; const select = state => ({ user: selectUser(state), accessToken: selectAccessToken(state), + deamonSettings: selectDaemonSettings(state), }); const perform = dispatch => ({ @@ -14,4 +16,7 @@ const perform = dispatch => ({ fetchAccessToken: () => dispatch(doFetchAccessToken()), }); -export default connect(select, perform)(HelpPage); +export default connect( + select, + perform +)(HelpPage); diff --git a/src/renderer/page/help/view.jsx b/src/renderer/page/help/view.jsx index eb8da4aae2c..cc8dd13fcfc 100644 --- a/src/renderer/page/help/view.jsx +++ b/src/renderer/page/help/view.jsx @@ -1,15 +1,44 @@ // @TODO: Customize advice based on OS -import React from 'react'; +// @flow +import * as React from 'react'; +import { shell } from 'electron'; import { Lbry } from 'lbry-redux'; import Native from 'native'; import Button from 'component/button'; import BusyIndicator from 'component/common/busy-indicator'; -import Icon from 'component/common/icon'; import Page from 'component/page'; import * as icons from 'constants/icons'; -class HelpPage extends React.PureComponent { - constructor(props) { +type DeamonSettings = { + data_dir: string | any, +}; + +type Props = { + deamonSettings: DeamonSettings, + accessToken: string, + fetchAccessToken: () => void, + doAuth: () => void, + user: any, +}; + +type VersionInfo = { + os_system: string, + os_release: string, + platform: string, + lbrynet_version: string, + lbryum_version: string, +}; + +type State = { + versionInfo: VersionInfo | any, + lbryId: String | any, + uiVersion: ?string, + upgradeAvailable: ?boolean, + accessTokenHidden: ?boolean, +}; + +class HelpPage extends React.PureComponent { + constructor(props: Props) { super(props); this.state = { @@ -20,11 +49,12 @@ class HelpPage extends React.PureComponent { accessTokenHidden: true, }; - this.showAccessToken = this.showAccessToken.bind(this); + (this: any).showAccessToken = this.showAccessToken.bind(this); + (this: any).openLogFile = this.openLogFile.bind(this); } componentDidMount() { - Native.getAppVersionInfo().then(({ remoteVersion, localVersion, upgradeAvailable }) => { + Native.getAppVersionInfo().then(({ localVersion, upgradeAvailable }) => { this.setState({ uiVersion: localVersion, upgradeAvailable, @@ -50,13 +80,24 @@ class HelpPage extends React.PureComponent { }); } + openLogFile(userHomeDirectory: string) { + const logFileName = 'lbrynet.log'; + const os = this.state.versionInfo.os_system; + if (os === 'Darwin' || os === 'Linux') { + shell.openItem(`${userHomeDirectory}/${logFileName}`); + } else { + shell.openItem(`${userHomeDirectory}\\${logFileName}`); + } + } + render() { let ver; let osName; let platform; let newVerLink; - const { accessToken, doAuth, user } = this.props; + const { accessToken, doAuth, user, deamonSettings } = this.props; + const { data_dir: dataDirectory } = deamonSettings; if (this.state.versionInfo) { ver = this.state.versionInfo; @@ -108,12 +149,34 @@ class HelpPage extends React.PureComponent { +
+
{__('View your Log')}
+

+ {__( + 'Do you find something wrong? Have a look in your log, or send your log to support for some help.' + )} +

+
+
+
+
{__('Report a Bug or Suggest a New Feature')}

{__('Did you find something wrong? Think LBRY could add something useful and cool?')}

-