From 96e4163c6156a7ecb34ab1eb9dbebf0921c8f6ae Mon Sep 17 00:00:00 2001 From: Jeremy Curcio Date: Thu, 15 Feb 2018 10:21:35 -0500 Subject: [PATCH 01/15] Fix sort by date --- src/renderer/component/fileList/view.jsx | 34 +++++++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/src/renderer/component/fileList/view.jsx b/src/renderer/component/fileList/view.jsx index 8dcccadc3..cca8dec98 100644 --- a/src/renderer/component/fileList/view.jsx +++ b/src/renderer/component/fileList/view.jsx @@ -9,12 +9,35 @@ class FileList extends React.PureComponent { super(props); this.state = { - sortBy: 'date', + sortBy: 'dateNew', }; this._sortFunctions = { - date(fileInfos) { - return fileInfos.slice().reverse(); + dateNew(fileInfos) { + return fileInfos.slice().sort((fileInfo1, fileInfo2) => { + console.log(fileInfo1); + const height1 = fileInfo1.height + const height2 = fileInfo2.height + if (height1 > height2) { + return -1; + } else if (height1 < height2) { + return 1; + } + return 0; + }); + }, + dateOld(fileInfos) { + return fileInfos.slice().sort((fileInfo1, fileInfo2) => { + console.log(fileInfo1); + const height1 = fileInfo1.height + const height2 = fileInfo2.height + if (height1 < height2) { + return -1; + } else if (height1 > height2) { + return 1; + } + return 0; + }); }, title(fileInfos) { return fileInfos.slice().sort((fileInfo1, fileInfo2) => { @@ -65,6 +88,8 @@ class FileList extends React.PureComponent { const { sortBy } = this.state; const content = []; + console.log(sortBy); + this._sortFunctions[sortBy](fileInfos).forEach(fileInfo => { const uriParams = {}; @@ -95,7 +120,8 @@ class FileList extends React.PureComponent { {__('Sort by')}{' '} - + + From 3e6757a35d29788e0acf8bf67ff2984adcd32a94 Mon Sep 17 00:00:00 2001 From: Jeremy Curcio Date: Thu, 15 Feb 2018 10:23:03 -0500 Subject: [PATCH 02/15] Remove debug --- src/renderer/component/fileList/view.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/renderer/component/fileList/view.jsx b/src/renderer/component/fileList/view.jsx index cca8dec98..a5e62f776 100644 --- a/src/renderer/component/fileList/view.jsx +++ b/src/renderer/component/fileList/view.jsx @@ -15,7 +15,6 @@ class FileList extends React.PureComponent { this._sortFunctions = { dateNew(fileInfos) { return fileInfos.slice().sort((fileInfo1, fileInfo2) => { - console.log(fileInfo1); const height1 = fileInfo1.height const height2 = fileInfo2.height if (height1 > height2) { From d1eed7f7de594f9196a49325139367b2ee1bcce4 Mon Sep 17 00:00:00 2001 From: Jeremy Curcio Date: Thu, 15 Feb 2018 10:25:22 -0500 Subject: [PATCH 03/15] Add to changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e414ff7cb..ce228e9d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,7 +16,7 @@ Web UI version numbers should always match the corresponding version of LBRY App * ### Fixed - * + * Fixed sort by date of published content ([#986](https://github.com/lbryio/lbry-app/issues/986)) * ### Deprecated From 34b6ef674b5219eed6e306031d21859797ad2beb Mon Sep 17 00:00:00 2001 From: Jeremy Curcio Date: Thu, 15 Feb 2018 10:49:31 -0500 Subject: [PATCH 04/15] Remove a couple more debugs --- src/renderer/component/fileList/view.jsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/renderer/component/fileList/view.jsx b/src/renderer/component/fileList/view.jsx index a5e62f776..f2654b0f1 100644 --- a/src/renderer/component/fileList/view.jsx +++ b/src/renderer/component/fileList/view.jsx @@ -27,7 +27,6 @@ class FileList extends React.PureComponent { }, dateOld(fileInfos) { return fileInfos.slice().sort((fileInfo1, fileInfo2) => { - console.log(fileInfo1); const height1 = fileInfo1.height const height2 = fileInfo2.height if (height1 < height2) { @@ -87,8 +86,6 @@ class FileList extends React.PureComponent { const { sortBy } = this.state; const content = []; - console.log(sortBy); - this._sortFunctions[sortBy](fileInfos).forEach(fileInfo => { const uriParams = {}; From 4b2a4d2a10ffae0c032a5d6294cc2f71617af638 Mon Sep 17 00:00:00 2001 From: Jeremy Curcio Date: Thu, 15 Feb 2018 12:55:25 -0500 Subject: [PATCH 05/15] Change title of date sort options --- src/renderer/component/fileList/view.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/renderer/component/fileList/view.jsx b/src/renderer/component/fileList/view.jsx index f2654b0f1..afb446323 100644 --- a/src/renderer/component/fileList/view.jsx +++ b/src/renderer/component/fileList/view.jsx @@ -116,8 +116,8 @@ class FileList extends React.PureComponent { {__('Sort by')}{' '} - - + + From 47e0f7c992d7433c48684b4de42724eb1d1a53cc Mon Sep 17 00:00:00 2001 From: Igor Gassmann Date: Fri, 23 Feb 2018 18:20:12 -0500 Subject: [PATCH 06/15] Save app state when closing to tray --- electron-builder.json | 10 +++---- src/main/Tray.js | 63 ---------------------------------------- src/main/createTray.js | 41 ++++++++++++++++++++++++++ src/main/createWindow.js | 17 +++++------ src/main/index.js | 46 +++++++++-------------------- 5 files changed, 67 insertions(+), 110 deletions(-) delete mode 100644 src/main/Tray.js create mode 100644 src/main/createTray.js diff --git a/electron-builder.json b/electron-builder.json index 011d1f3b3..0f70c9385 100644 --- a/electron-builder.json +++ b/electron-builder.json @@ -1,10 +1,10 @@ { "appId": "io.lbry.LBRY", - "publish": { - "provider": "s3", - "bucket": "releases.lbry.io", - "path": "app/latest" - }, +// "publish": { +// "provider": "s3", +// "bucket": "releases.lbry.io", +// "path": "app/latest" +// }, "mac": { "category": "public.app-category.entertainment" }, diff --git a/src/main/Tray.js b/src/main/Tray.js deleted file mode 100644 index 6937dda42..000000000 --- a/src/main/Tray.js +++ /dev/null @@ -1,63 +0,0 @@ -import { app, Menu, Tray as ElectronTray } from 'electron'; -import path from 'path'; -import createWindow from './createWindow'; - -export default class Tray { - window; - updateAttachedWindow; - tray; - - constructor(window, updateAttachedWindow) { - this.window = window; - this.updateAttachedWindow = updateAttachedWindow; - } - - create() { - let iconPath; - switch (process.platform) { - case 'darwin': { - iconPath = path.join(__static, '/img/tray/mac/trayTemplate.png'); - break; - } - case 'win32': { - iconPath = path.join(__static, '/img/tray/windows/tray.ico'); - break; - } - default: { - iconPath = path.join(__static, '/img/tray/default/tray.png'); - } - } - - this.tray = new ElectronTray(iconPath); - - this.tray.on('double-click', () => { - if (!this.window || this.window.isDestroyed()) { - this.window = createWindow(); - this.updateAttachedWindow(this.window); - } else { - this.window.show(); - this.window.focus(); - } - }); - - this.tray.setToolTip('LBRY App'); - - const template = [ - { - label: `Open ${app.getName()}`, - click: () => { - if (!this.window || this.window.isDestroyed()) { - this.window = createWindow(); - this.updateAttachedWindow(this.window); - } else { - this.window.show(); - this.window.focus(); - } - }, - }, - { role: 'quit' }, - ]; - const contextMenu = Menu.buildFromTemplate(template); - this.tray.setContextMenu(contextMenu); - } -} diff --git a/src/main/createTray.js b/src/main/createTray.js new file mode 100644 index 000000000..ba12aeb60 --- /dev/null +++ b/src/main/createTray.js @@ -0,0 +1,41 @@ +import { app, Menu, Tray as ElectronTray } from 'electron'; +import path from 'path'; + +export default window => { + let iconPath; + switch (process.platform) { + case 'darwin': { + iconPath = path.join(__static, '/img/tray/mac/trayTemplate.png'); + break; + } + case 'win32': { + iconPath = path.join(__static, '/img/tray/windows/tray.ico'); + break; + } + default: { + iconPath = path.join(__static, '/img/tray/default/tray.png'); + } + } + + const tray = new ElectronTray(iconPath); + + tray.on('double-click', () => { + window.show(); + }); + + tray.setToolTip('LBRY App'); + + const template = [ + { + label: `Open ${app.getName()}`, + click: () => { + window.show(); + }, + }, + { role: 'quit' }, + ]; + const contextMenu = Menu.buildFromTemplate(template); + tray.setContextMenu(contextMenu); + + return tray; +}; diff --git a/src/main/createWindow.js b/src/main/createWindow.js index 6809761f3..8521b3207 100644 --- a/src/main/createWindow.js +++ b/src/main/createWindow.js @@ -2,7 +2,7 @@ import { app, BrowserWindow, dialog } from 'electron'; import setupBarMenu from './menu/setupBarMenu'; import setupContextMenu from './menu/setupContextMenu'; -export default deepLinkingURIArg => { +export default appState => { let windowConfiguration = { backgroundColor: '#155B4A', minWidth: 800, @@ -35,11 +35,7 @@ export default deepLinkingURIArg => { let deepLinkingURI; // Protocol handler for win32 - if ( - !deepLinkingURIArg && - process.platform === 'win32' && - String(process.argv[1]).startsWith('lbry') - ) { + if (process.platform === 'win32' && String(process.argv[1]).startsWith('lbry')) { // Keep only command line / deep linked arguments // Windows normalizes URIs when they're passed in from other apps. On Windows, this tries to // restore the original URI that was typed. @@ -48,15 +44,16 @@ export default deepLinkingURIArg => { // - In a URI with a claim ID, like lbry://channel#claimid, Windows interprets the hash mark as // an anchor and converts it to lbry://channel/#claimid. We remove the slash here as well. deepLinkingURI = process.argv[1].replace(/\/$/, '').replace('/#', '#'); - } else { - deepLinkingURI = deepLinkingURIArg; } setupBarMenu(); setupContextMenu(window); - window.on('closed', () => { - window = null; + window.on('close', event => { + if (!appState.isQuitting) { + event.preventDefault(); + window.hide(); + } }); window.on('focus', () => { diff --git a/src/main/index.js b/src/main/index.js index 6aeebe453..c63de5e1c 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -8,7 +8,7 @@ import https from 'https'; import { shell, app, ipcMain, dialog } from 'electron'; import { autoUpdater } from 'electron-updater'; import Daemon from './Daemon'; -import Tray from './Tray'; +import createTray from './createTray'; import createWindow from './createWindow'; autoUpdater.autoDownload = true; @@ -32,11 +32,7 @@ let rendererWindow; let tray; let daemon; -let isQuitting; - -const updateRendererWindow = window => { - rendererWindow = window; -}; +const appState = {}; const installExtensions = async () => { // eslint-disable-next-line import/no-extraneous-dependencies,global-require @@ -64,7 +60,7 @@ app.on('ready', async () => { daemon = new Daemon(); daemon.on('exit', () => { daemon = null; - if (!isQuitting) { + if (!appState.isQuitting) { dialog.showErrorBox( 'Daemon has Exited', 'The daemon may have encountered an unexpected error, or another daemon instance is already running.' @@ -77,15 +73,12 @@ app.on('ready', async () => { if (process.env.NODE_ENV === 'development') { await installExtensions(); } - rendererWindow = createWindow(); - tray = new Tray(rendererWindow, updateRendererWindow); - tray.create(); + rendererWindow = createWindow(appState); + tray = createTray(rendererWindow); }); app.on('activate', () => { - // On macOS it's common to re-create a window in the app when the - // dock icon is clicked and there are no other windows open. - if (!rendererWindow) rendererWindow = createWindow(); + rendererWindow.show(); }); app.on('will-quit', event => { @@ -117,7 +110,7 @@ app.on('will-quit', event => { return; } - isQuitting = true; + appState.isQuitting = true; if (daemon) daemon.quit(); }); @@ -126,18 +119,13 @@ app.on('will-finish-launching', () => { // Protocol handler for macOS app.on('open-url', (event, URL) => { event.preventDefault(); - if (rendererWindow && !rendererWindow.isDestroyed()) { - rendererWindow.webContents.send('open-uri-requested', URL); - rendererWindow.show(); - rendererWindow.focus(); - } else { - rendererWindow = createWindow(URL); - } + rendererWindow.webContents.send('open-uri-requested', URL); + rendererWindow.show(); }); }); -app.on('window-all-closed', () => { - // Subscribe to event so the app doesn't quit when closing the window. +app.on('before-quit', () => { + appState.isQuitting = true; }); ipcMain.on('upgrade', (event, installerPath) => { @@ -224,7 +212,7 @@ ipcMain.on('set-auth-token', (event, token) => { process.on('uncaughtException', error => { dialog.showErrorBox('Error Encountered', `Caught error: ${error}`); - isQuitting = true; + appState.isQuitting = true; if (daemon) daemon.quit(); app.exit(1); }); @@ -240,14 +228,8 @@ const isSecondInstance = app.makeSingleInstance(argv => { URI = argv[1].replace(/\/$/, '').replace('/#', '#'); } - if (rendererWindow && !rendererWindow.isDestroyed()) { - rendererWindow.webContents.send('open-uri-requested', URI); - - rendererWindow.show(); - rendererWindow.focus(); - } else { - rendererWindow = createWindow(URI); - } + rendererWindow.webContents.send('open-uri-requested', URI); + rendererWindow.show(); }); if (isSecondInstance) { From a7d5fc650307f0a3cc53985b9c58cf58bc3b789a Mon Sep 17 00:00:00 2001 From: Igor Gassmann Date: Sat, 24 Feb 2018 19:26:49 -0500 Subject: [PATCH 07/15] Fix macOS badge --- src/renderer/util/setBadge.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/renderer/util/setBadge.js b/src/renderer/util/setBadge.js index ca4c9d358..77e5ee2f2 100644 --- a/src/renderer/util/setBadge.js +++ b/src/renderer/util/setBadge.js @@ -2,10 +2,10 @@ import { remote } from 'electron'; const application = remote.app; const { dock } = application; -const win = remote.BrowserWindow.getFocusedWindow(); +const browserWindow = remote.getCurrentWindow(); const setBadge = text => { if (!dock) return; - if (win.isFocused()) return; + if (browserWindow.isFocused()) return; dock.setBadge(text); }; From 9ad6676a4fd224f12063e3cf640b10bc572a9bc4 Mon Sep 17 00:00:00 2001 From: Igor Gassmann Date: Sun, 25 Feb 2018 13:27:19 -0500 Subject: [PATCH 08/15] Fix ESLint problems other than type validation --- .../component/video/internal/player.jsx | 117 +++++++++--------- 1 file changed, 56 insertions(+), 61 deletions(-) diff --git a/src/renderer/component/video/internal/player.jsx b/src/renderer/component/video/internal/player.jsx index e938a856f..c6a39026b 100644 --- a/src/renderer/component/video/internal/player.jsx +++ b/src/renderer/component/video/internal/player.jsx @@ -1,5 +1,4 @@ -const { remote } = require('electron'); - +import { remote } from 'electron'; import React from 'react'; import { Thumbnail } from 'component/common'; import player from 'render-media'; @@ -21,33 +20,21 @@ class VideoPlayer extends React.PureComponent { this.togglePlayListener = this.togglePlay.bind(this); } - componentWillReceiveProps(next) { - const el = this.refs.media.children[0]; - if (!this.props.paused && next.paused && !el.paused) el.pause(); - } - componentDidMount() { - const container = this.refs.media; - const { - contentType, - downloadPath, - mediaType, - changeVolume, - volume, - position, - claim, - uri, - } = this.props; + const container = this.media; + const { contentType, changeVolume, volume, position, claim } = this.props; - const loadedMetadata = e => { + const loadedMetadata = () => { this.setState({ hasMetadata: true, startedPlaying: true }); - this.refs.media.children[0].play(); + this.media.children[0].play(); }; - const renderMediaCallback = err => { - if (err) this.setState({ unplayable: true }); + + const renderMediaCallback = error => { + if (error) this.setState({ unplayable: true }); }; + // Handle fullscreen change for the Windows platform - const win32FullScreenChange = e => { + const win32FullScreenChange = () => { const win = remote.BrowserWindow.getFocusedWindow(); if (process.platform === 'win32') { win.setMenu(document.webkitIsFullScreen ? null : remote.Menu.getApplicationMenu()); @@ -67,7 +54,7 @@ class VideoPlayer extends React.PureComponent { } document.addEventListener('keydown', this.togglePlayListener); - const mediaElement = this.refs.media.children[0]; + const mediaElement = this.media.children[0]; if (mediaElement) { mediaElement.currentTime = position || 0; mediaElement.addEventListener('play', () => this.props.doPlay()); @@ -87,29 +74,38 @@ class VideoPlayer extends React.PureComponent { } } + componentWillReceiveProps(next) { + const el = this.media.children[0]; + if (!this.props.paused && next.paused && !el.paused) el.pause(); + } + + componentDidUpdate() { + const { contentType, downloadCompleted } = this.props; + const { startedPlaying } = this.state; + + if (this.playableType() && !startedPlaying && downloadCompleted) { + const container = this.media.children[0]; + + if (VideoPlayer.MP3_CONTENT_TYPES.indexOf(contentType) > -1) { + this.renderAudio(this.media, true); + } else { + player.render(this.file(), container, { + autoplay: true, + controls: true, + }); + } + } + } + componentWillUnmount() { document.removeEventListener('keydown', this.togglePlayListener); - const mediaElement = this.refs.media.children[0]; + const mediaElement = this.media.children[0]; if (mediaElement) { mediaElement.removeEventListener('click', this.togglePlayListener); } this.props.doPause(); } - renderAudio(container, autoplay) { - if (container.firstChild) { - container.firstChild.remove(); - } - - // clear the container - const { downloadPath } = this.props; - const audio = document.createElement('audio'); - audio.autoplay = autoplay; - audio.controls = true; - audio.src = downloadPath; - container.appendChild(audio); - } - togglePlay(event) { // ignore all events except click and spacebar keydown, or input events in a form control if ( @@ -119,7 +115,7 @@ class VideoPlayer extends React.PureComponent { return; } event.preventDefault(); - const mediaElement = this.refs.media.children[0]; + const mediaElement = this.media.children[0]; if (mediaElement) { if (!mediaElement.paused) { mediaElement.pause(); @@ -129,24 +125,6 @@ class VideoPlayer extends React.PureComponent { } } - componentDidUpdate() { - const { contentType, downloadCompleted } = this.props; - const { startedPlaying } = this.state; - - if (this.playableType() && !startedPlaying && downloadCompleted) { - const container = this.refs.media.children[0]; - - if (VideoPlayer.MP3_CONTENT_TYPES.indexOf(contentType) > -1) { - this.renderAudio(this.refs.media, true); - } else { - player.render(this.file(), container, { - autoplay: true, - controls: true, - }); - } - } - } - file() { const { downloadPath, filename } = this.props; @@ -162,14 +140,26 @@ class VideoPlayer extends React.PureComponent { return ['audio', 'video'].indexOf(mediaType) !== -1; } + renderAudio(container, autoplay) { + if (container.firstChild) { + container.firstChild.remove(); + } + + // clear the container + const { downloadPath } = this.props; + const audio = document.createElement('audio'); + audio.autoplay = autoplay; + audio.controls = true; + audio.src = downloadPath; + container.appendChild(audio); + } + render() { const { mediaType, poster } = this.props; const { hasMetadata, unplayable } = this.state; const noMetadataMessage = 'Waiting for metadata.'; const unplayableMessage = "Sorry, looks like we can't play this file."; - const needsMetadata = this.playableType(); - return (
{['audio', 'application'].indexOf(mediaType) !== -1 && @@ -179,7 +169,12 @@ class VideoPlayer extends React.PureComponent { !hasMetadata && !unplayable && } {unplayable && } -
+
{ + this.media = container; + }} + className="media" + />
); } From 019926059ed4a6bf205156487ae8350e99fc1157 Mon Sep 17 00:00:00 2001 From: Igor Gassmann Date: Sun, 25 Feb 2018 15:18:03 -0500 Subject: [PATCH 09/15] Fix #754 --- src/renderer/component/video/internal/player.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/component/video/internal/player.jsx b/src/renderer/component/video/internal/player.jsx index c6a39026b..8bbf2692f 100644 --- a/src/renderer/component/video/internal/player.jsx +++ b/src/renderer/component/video/internal/player.jsx @@ -48,7 +48,7 @@ class VideoPlayer extends React.PureComponent { player.append( this.file(), container, - { autoplay: false, controls: true }, + { autoplay: true, controls: true }, renderMediaCallback.bind(this) ); } From 07655ebd1beae5c06cc2f8f0038b205fb86bc418 Mon Sep 17 00:00:00 2001 From: Igor Gassmann Date: Sun, 25 Feb 2018 22:00:12 -0500 Subject: [PATCH 10/15] Fix #1012 --- src/renderer/jsonrpc.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/jsonrpc.js b/src/renderer/jsonrpc.js index 8e11c4f12..184065122 100644 --- a/src/renderer/jsonrpc.js +++ b/src/renderer/jsonrpc.js @@ -15,7 +15,7 @@ jsonrpc.call = ( return response.json().then(json => { let error; if (json.error) { - error = new Error(json.error); + error = new Error(json.error.message); } else { error = new Error('Protocol error with unknown response signature'); } From fe76ca1bbdd66d61fb51bfce8de026e09e6f7dbc Mon Sep 17 00:00:00 2001 From: Igor Gassmann Date: Mon, 26 Feb 2018 14:46:24 -0500 Subject: [PATCH 11/15] Uncomment publishing configuration --- electron-builder.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/electron-builder.json b/electron-builder.json index 0f70c9385..011d1f3b3 100644 --- a/electron-builder.json +++ b/electron-builder.json @@ -1,10 +1,10 @@ { "appId": "io.lbry.LBRY", -// "publish": { -// "provider": "s3", -// "bucket": "releases.lbry.io", -// "path": "app/latest" -// }, + "publish": { + "provider": "s3", + "bucket": "releases.lbry.io", + "path": "app/latest" + }, "mac": { "category": "public.app-category.entertainment" }, From 51835874450b10133385c3fc59bcf573841e8843 Mon Sep 17 00:00:00 2001 From: Thomas Zarebczan Date: Mon, 26 Feb 2018 20:22:25 -0500 Subject: [PATCH 12/15] Fix night mode start time 21:00 = 9PM --- src/renderer/redux/actions/settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/redux/actions/settings.js b/src/renderer/redux/actions/settings.js index 9196dca44..40365b7f8 100644 --- a/src/renderer/redux/actions/settings.js +++ b/src/renderer/redux/actions/settings.js @@ -71,7 +71,7 @@ export function doUpdateIsNight() { return { type: ACTIONS.UPDATE_IS_NIGHT, data: { isNight: (() => { - const startNightMoment = moment('19:00', 'HH:mm'); + const startNightMoment = moment('21:00', 'HH:mm'); const endNightMoment = moment('8:00', 'HH:mm'); return !(momentNow.isAfter(endNightMoment) && momentNow.isBefore(startNightMoment)); })() From 2fa8d62560b6a2de086fee5e200f68bb9ea77efa Mon Sep 17 00:00:00 2001 From: Thomas Zarebczan Date: Mon, 26 Feb 2018 20:26:07 -0500 Subject: [PATCH 13/15] changelog for #1050 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e414ff7cb..bb69008a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,7 +16,7 @@ Web UI version numbers should always match the corresponding version of LBRY App * ### Fixed - * + * Fix night mode start time, set to 9PM (#1050) * ### Deprecated From 04523ddfe9e870946dabdbde1cc791c0d7fe9d26 Mon Sep 17 00:00:00 2001 From: Igor Gassmann Date: Mon, 26 Feb 2018 23:03:01 -0500 Subject: [PATCH 14/15] Rename Tray import --- src/main/createTray.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/createTray.js b/src/main/createTray.js index ba12aeb60..c8ed9ba95 100644 --- a/src/main/createTray.js +++ b/src/main/createTray.js @@ -1,4 +1,4 @@ -import { app, Menu, Tray as ElectronTray } from 'electron'; +import { app, Menu, Tray } from 'electron'; import path from 'path'; export default window => { @@ -17,7 +17,7 @@ export default window => { } } - const tray = new ElectronTray(iconPath); + const tray = new Tray(iconPath); tray.on('double-click', () => { window.show(); From 2df31a091eecfd523058b9d0e20b16b290af3a01 Mon Sep 17 00:00:00 2001 From: Igor Gassmann Date: Mon, 26 Feb 2018 23:52:39 -0500 Subject: [PATCH 15/15] Add #968 to changelog --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bb69008a3..ae7cb6c1d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ Web UI version numbers should always match the corresponding version of LBRY App ## [Unreleased] ### Added - * + * Save app state when closing to tray ([#968](https://github.com/lbryio/lbry-app/issues/968)) * ### Changed @@ -16,7 +16,7 @@ Web UI version numbers should always match the corresponding version of LBRY App * ### Fixed - * Fix night mode start time, set to 9PM (#1050) + * Fix night mode start time, set to 9PM ([#1050](https://github.com/lbryio/lbry-app/issues/1050)) * ### Deprecated