2016-10-14 08:18:53 +08:00
|
|
|
import {exec} from 'child_process';
|
|
|
|
import fs from 'fs';
|
|
|
|
import path from 'path';
|
2016-11-13 02:32:16 +08:00
|
|
|
import {WorkspaceStore, ComponentRegistry} from 'nylas-exports';
|
2016-11-15 04:08:42 +08:00
|
|
|
import CalendarWrapper from './calendar-wrapper';
|
2016-11-16 08:16:42 +08:00
|
|
|
import QuickEventButton from './quick-event-button';
|
2016-10-14 08:18:53 +08:00
|
|
|
|
2016-11-13 02:32:16 +08:00
|
|
|
|
2016-10-14 08:18:53 +08:00
|
|
|
function resolveHelperPath(callback) {
|
|
|
|
const resourcesPath = NylasEnv.getLoadSettings().resourcePath;
|
|
|
|
let pathToCalendarApp = path.join(resourcesPath, '..', 'Nylas Calendar.app');
|
|
|
|
|
|
|
|
fs.exists(pathToCalendarApp, (exists) => {
|
|
|
|
if (exists) {
|
|
|
|
callback(pathToCalendarApp);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
pathToCalendarApp = path.join(resourcesPath, 'build', 'resources', 'mac', 'Nylas Calendar.app');
|
|
|
|
fs.exists(pathToCalendarApp, (fallbackExists) => {
|
|
|
|
if (fallbackExists) {
|
|
|
|
callback(pathToCalendarApp);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
callback(null);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
export function activate() {
|
|
|
|
WorkspaceStore.defineSheet('Main', {root: true}, {list: ['Center']});
|
|
|
|
|
|
|
|
if (process.platform === 'darwin') {
|
|
|
|
resolveHelperPath((helperPath) => {
|
|
|
|
if (!helperPath) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
exec(`chmod +x "${helperPath}/Contents/MacOS/Nylas Calendar"`, () => {
|
2016-10-18 08:59:33 +08:00
|
|
|
exec(`open "${helperPath}"`);
|
2016-10-14 08:18:53 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
if (!NylasEnv.config.get('addedToDockCalendar')) {
|
|
|
|
exec(`defaults write com.apple.dock persistent-apps -array-add "<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>${helperPath}/</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>"`, () => {
|
|
|
|
NylasEnv.config.set('addedToDockCalendar', true);
|
|
|
|
exec(`killall Dock`);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
NylasEnv.onBeforeUnload(() => {
|
|
|
|
exec('killall "Nylas Calendar"');
|
|
|
|
return true;
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
ComponentRegistry.register(CalendarWrapper, {
|
|
|
|
location: WorkspaceStore.Location.Center,
|
|
|
|
});
|
2016-11-16 08:16:42 +08:00
|
|
|
ComponentRegistry.register(QuickEventButton, {
|
|
|
|
location: WorkspaceStore.Location.Center.Toolbar,
|
|
|
|
});
|
2016-10-14 08:18:53 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
export function deactivate() {
|
|
|
|
ComponentRegistry.unregister(CalendarWrapper);
|
2016-11-16 08:16:42 +08:00
|
|
|
ComponentRegistry.unregister(QuickEventButton);
|
2016-10-14 08:18:53 +08:00
|
|
|
}
|