aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLibravatar Stefan Malzner <stefan@adlk.io>2017-11-03 21:06:23 +0100
committerLibravatar GitHub <noreply@github.com>2017-11-03 21:06:23 +0100
commit57539f8d456681b5123d8c7e9fbdad56504b790d (patch)
tree67469ffd8ffd65652583a793fd5e90103487258d /src
parentMerge pull request #205 from meetfranz/feature/win-window-restore (diff)
parentfix(macOS): Fix launch Franz on start override (diff)
downloadferdium-app-57539f8d456681b5123d8c7e9fbdad56504b790d.tar.gz
ferdium-app-57539f8d456681b5123d8c7e9fbdad56504b790d.tar.zst
ferdium-app-57539f8d456681b5123d8c7e9fbdad56504b790d.zip
Merge pull request #207 from meetfranz/feature/fix-autolaunch
fix(macOS): Fix launch Franz on start override
Diffstat (limited to 'src')
-rw-r--r--src/stores/AppStore.js67
1 files changed, 24 insertions, 43 deletions
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js
index f608a689e..d8ef66a92 100644
--- a/src/stores/AppStore.js
+++ b/src/stores/AppStore.js
@@ -2,19 +2,23 @@ import { remote, ipcRenderer, shell } from 'electron';
2import { action, observable } from 'mobx'; 2import { action, observable } from 'mobx';
3import moment from 'moment'; 3import moment from 'moment';
4import key from 'keymaster'; 4import key from 'keymaster';
5import path from 'path'; 5// import path from 'path';
6import idleTimer from '@paulcbetts/system-idle-time'; 6import idleTimer from '@paulcbetts/system-idle-time';
7import AutoLaunch from 'auto-launch';
7 8
8import Store from './lib/Store'; 9import Store from './lib/Store';
9import Request from './lib/Request'; 10import Request from './lib/Request';
10import { CHECK_INTERVAL } from '../config'; 11import { CHECK_INTERVAL } from '../config';
11import { isMac, isLinux } from '../environment'; 12import { isMac } from '../environment';
12import locales from '../i18n/translations'; 13import locales from '../i18n/translations';
13import { gaEvent } from '../lib/analytics'; 14import { gaEvent } from '../lib/analytics';
14import Miner from '../lib/Miner'; 15import Miner from '../lib/Miner';
15 16
16const { app, powerMonitor } = remote; 17const { app, powerMonitor } = remote;
17const defaultLocale = 'en-US'; 18const defaultLocale = 'en-US';
19const autoLauncher = new AutoLaunch({
20 name: 'Franz',
21});
18 22
19export default class AppStore extends Store { 23export default class AppStore extends Store {
20 updateStatusTypes = { 24 updateStatusTypes = {
@@ -41,7 +45,7 @@ export default class AppStore extends Store {
41 miner = null; 45 miner = null;
42 @observable minerHashrate = 0.0; 46 @observable minerHashrate = 0.0;
43 47
44 constructor(...args: any) { 48 constructor(...args) {
45 super(...args); 49 super(...args);
46 50
47 // Register action handlers 51 // Register action handlers
@@ -157,28 +161,17 @@ export default class AppStore extends Store {
157 ipcRenderer.send('updateAppIndicator', { indicator }); 161 ipcRenderer.send('updateAppIndicator', { indicator });
158 } 162 }
159 163
160 @action _launchOnStartup({ enable, openInBackground }) { 164 @action _launchOnStartup({ enable }) {
161 this.autoLaunchOnStart = enable; 165 this.autoLaunchOnStart = enable;
162 166
163 let settings = { 167 try {
164 openAtLogin: enable, 168 if (enable) {
165 }; 169 autoLauncher.enable();
166 170 } else {
167 // For Windows 171 autoLauncher.disable();
168 if (process.platform === 'win32') {
169 settings = Object.assign({
170 openAsHidden: openInBackground,
171 path: app.getPath('exe'),
172 args: [
173 '--processStart', `"${path.basename(app.getPath('exe'))}"`,
174 ],
175 }, settings);
176
177 if (openInBackground) {
178 settings.args.push(
179 '--process-start-args', '"--hidden"',
180 );
181 } 172 }
173 } catch (err) {
174 console.warn(err);
182 } 175 }
183 176
184 gaEvent('App', enable ? 'enable autostart' : 'disable autostart'); 177 gaEvent('App', enable ? 'enable autostart' : 'disable autostart');
@@ -287,31 +280,19 @@ export default class AppStore extends Store {
287 } 280 }
288 281
289 async _autoStart() { 282 async _autoStart() {
290 if (!isLinux) { 283 this.autoLaunchOnStart = await this._checkAutoStart();
291 this._checkAutoStart();
292
293 // we need to wait until the settings request is resolved
294 await this.stores.settings.allSettingsRequest;
295 284
296 // We don't set autostart on first launch for macOS as disabling 285 // we need to wait until the settings request is resolved
297 // the option is currently broken 286 await this.stores.settings.allSettingsRequest;
298 // https://github.com/meetfranz/franz/issues/17
299 // https://github.com/electron/electron/issues/10880
300 if (process.platform === 'darwin') return;
301 287
302 if (!this.stores.settings.all.appStarts) { 288 if (!this.stores.settings.all.appStarts) {
303 this.actions.app.launchOnStartup({ 289 this.actions.app.launchOnStartup({
304 enable: true, 290 enable: true,
305 }); 291 });
306 }
307 } 292 }
308 } 293 }
309 294
310 _checkAutoStart() { 295 async _checkAutoStart() {
311 const loginItem = app.getLoginItemSettings({ 296 return autoLauncher.isEnabled() || false;
312 path: app.getPath('exe'),
313 });
314
315 this.autoLaunchOnStart = loginItem.openAtLogin;
316 } 297 }
317} 298}