insomnia/app/main.development.js

98 lines
2.9 KiB
JavaScript
Raw Normal View History

import needsRestart from 'electron-squirrel-startup';
2016-12-01 18:48:49 +00:00
import electron from 'electron';
import {isDevelopment, isMac} from './common/constants';
import * as errorHandling from './main/error-handling';
import * as updates from './main/updates';
Merge develop for 5.1.0 (#246) * Add Slack badge to README * Add Twitter badge * Appveyor badge * Fix badges again on README * Fix Twitter badge link * Simplify README.md * Migrate Travis secure items to Travis project settings (#198) * Remove docker linux build (using Travis now) (#199) * Fix travis build * Update Issue and PR templates (#200) * Add template for future pull requests * Format issue template like pull request template * Will not clear selected file if dialog is dismissed (#202) * #183, Body type "Text -> Other" reverts to previous body type (#193) * ISSUE#183 * Adding condition to check mime-type to other * Removing older changes for fixing issue. * Save full response to a file (#207) * Save full response to a file * Add a new button on the response preview pane * Save full response to file when button clicked * Update after PR comments * It's a Response, not a Request * Remove file extension requirement * Implement lazy tag rendering and some fixes (#211) * expanding to 3 decimals (#213) * Update PULL_REQUEST_TEMPLATE.md (#214) * Show build info in console (#216) * Add waiting message in dev mode while webpack compile happens * Switch license from GPL to AGPL (#221) * Default remote URLs to production * Don't use Curl's cookie handling (#220) * Some improvements to the response tag * Add tests for XPath response queries * Refactor conditional element syntax * Add option to toggle Menu Bar showing for Windows/Linux (#225) * Add option to toggle MenuBar showing on Windows/Linux * Extract Toggling Menu Bar functionality to App Container. Default show Menu Bar. Remove tip from Response Pane. * Finalize {% response ... %} Tag (#224) * Some improvements to the response tag * Add tests for XPath response queries * Refactor conditional element syntax * Update nunjucks-tags.js * Better Nunjucks Tag Editor (#234) * Helper to tokenize Nunjucks tag * More granular types * Add tag definitions * Improve editor to be more WYSIWYG * Fixed tests * Added raw response tag * A few improvements to tag editor enum * fix NTLM typo (#244) * Tweaks and fixes for next release (#245)
2017-05-24 16:25:22 +00:00
import * as windowUtils from './main/window-utils';
2017-07-20 19:29:16 +00:00
import installExtension, {REACT_DEVELOPER_TOOLS, REDUX_DEVTOOLS} from 'electron-devtools-installer';
2016-12-01 18:48:49 +00:00
// Handle potential auto-update
if (needsRestart) {
process.exit(0);
}
2016-12-01 18:48:49 +00:00
// Initialize some things
errorHandling.init();
updates.init();
Merge develop for 5.1.0 (#246) * Add Slack badge to README * Add Twitter badge * Appveyor badge * Fix badges again on README * Fix Twitter badge link * Simplify README.md * Migrate Travis secure items to Travis project settings (#198) * Remove docker linux build (using Travis now) (#199) * Fix travis build * Update Issue and PR templates (#200) * Add template for future pull requests * Format issue template like pull request template * Will not clear selected file if dialog is dismissed (#202) * #183, Body type "Text -> Other" reverts to previous body type (#193) * ISSUE#183 * Adding condition to check mime-type to other * Removing older changes for fixing issue. * Save full response to a file (#207) * Save full response to a file * Add a new button on the response preview pane * Save full response to file when button clicked * Update after PR comments * It's a Response, not a Request * Remove file extension requirement * Implement lazy tag rendering and some fixes (#211) * expanding to 3 decimals (#213) * Update PULL_REQUEST_TEMPLATE.md (#214) * Show build info in console (#216) * Add waiting message in dev mode while webpack compile happens * Switch license from GPL to AGPL (#221) * Default remote URLs to production * Don't use Curl's cookie handling (#220) * Some improvements to the response tag * Add tests for XPath response queries * Refactor conditional element syntax * Add option to toggle Menu Bar showing for Windows/Linux (#225) * Add option to toggle MenuBar showing on Windows/Linux * Extract Toggling Menu Bar functionality to App Container. Default show Menu Bar. Remove tip from Response Pane. * Finalize {% response ... %} Tag (#224) * Some improvements to the response tag * Add tests for XPath response queries * Refactor conditional element syntax * Update nunjucks-tags.js * Better Nunjucks Tag Editor (#234) * Helper to tokenize Nunjucks tag * More granular types * Add tag definitions * Improve editor to be more WYSIWYG * Fixed tests * Added raw response tag * A few improvements to tag editor enum * fix NTLM typo (#244) * Tweaks and fixes for next release (#245)
2017-05-24 16:25:22 +00:00
windowUtils.init();
2016-12-01 18:48:49 +00:00
function addUrlToOpen (e, url) {
e.preventDefault();
args.push(url);
2016-12-01 18:48:49 +00:00
}
2017-08-01 22:03:12 +00:00
const {app, ipcMain, session} = electron;
2016-12-01 18:48:49 +00:00
const args = process.argv.slice(1);
2016-12-01 18:48:49 +00:00
// Set as default protocol
app.setAsDefaultProtocolClient(`insomnia${isDevelopment() ? 'dev' : ''}`);
2016-12-01 18:48:49 +00:00
app.on('open-url', addUrlToOpen);
2016-12-01 18:48:49 +00:00
// Enable this for CSS grid layout :)
app.commandLine.appendSwitch('enable-experimental-web-platform-features');
// Quit when all windows are closed (except on Mac).
app.on('window-all-closed', () => {
if (!isMac()) {
2016-12-01 18:48:49 +00:00
app.quit();
}
});
// Mac-only, when the user clicks the doc icon
app.on('activate', (e, hasVisibleWindows) => {
// Create a new window when clicking the doc icon if there isn't one open
if (!hasVisibleWindows) {
try {
Merge develop for 5.1.0 (#246) * Add Slack badge to README * Add Twitter badge * Appveyor badge * Fix badges again on README * Fix Twitter badge link * Simplify README.md * Migrate Travis secure items to Travis project settings (#198) * Remove docker linux build (using Travis now) (#199) * Fix travis build * Update Issue and PR templates (#200) * Add template for future pull requests * Format issue template like pull request template * Will not clear selected file if dialog is dismissed (#202) * #183, Body type "Text -> Other" reverts to previous body type (#193) * ISSUE#183 * Adding condition to check mime-type to other * Removing older changes for fixing issue. * Save full response to a file (#207) * Save full response to a file * Add a new button on the response preview pane * Save full response to file when button clicked * Update after PR comments * It's a Response, not a Request * Remove file extension requirement * Implement lazy tag rendering and some fixes (#211) * expanding to 3 decimals (#213) * Update PULL_REQUEST_TEMPLATE.md (#214) * Show build info in console (#216) * Add waiting message in dev mode while webpack compile happens * Switch license from GPL to AGPL (#221) * Default remote URLs to production * Don't use Curl's cookie handling (#220) * Some improvements to the response tag * Add tests for XPath response queries * Refactor conditional element syntax * Add option to toggle Menu Bar showing for Windows/Linux (#225) * Add option to toggle MenuBar showing on Windows/Linux * Extract Toggling Menu Bar functionality to App Container. Default show Menu Bar. Remove tip from Response Pane. * Finalize {% response ... %} Tag (#224) * Some improvements to the response tag * Add tests for XPath response queries * Refactor conditional element syntax * Update nunjucks-tags.js * Better Nunjucks Tag Editor (#234) * Helper to tokenize Nunjucks tag * More granular types * Add tag definitions * Improve editor to be more WYSIWYG * Fixed tests * Added raw response tag * A few improvements to tag editor enum * fix NTLM typo (#244) * Tweaks and fixes for next release (#245)
2017-05-24 16:25:22 +00:00
windowUtils.createWindow();
2016-12-01 18:48:49 +00:00
} catch (e) {
// This might happen if 'ready' hasn't fired yet. So we're just going
// to silence these errors.
console.log('-- App not ready to "activate" yet --');
}
}
});
// When the app is first launched
2017-07-20 19:29:16 +00:00
app.on('ready', async () => {
// Install developer extensions if we're in dev mode
if (isDevelopment() || process.env.INSOMNIA_FORCE_DEBUG) {
try {
console.log('Installed Extension: ' + await installExtension(REACT_DEVELOPER_TOOLS));
console.log('Installed Extension: ' + await installExtension(REDUX_DEVTOOLS));
} catch (err) {
console.warn('Failed to install devtools extension', err);
}
}
app.removeListener('open-url', addUrlToOpen);
Merge develop for 5.1.0 (#246) * Add Slack badge to README * Add Twitter badge * Appveyor badge * Fix badges again on README * Fix Twitter badge link * Simplify README.md * Migrate Travis secure items to Travis project settings (#198) * Remove docker linux build (using Travis now) (#199) * Fix travis build * Update Issue and PR templates (#200) * Add template for future pull requests * Format issue template like pull request template * Will not clear selected file if dialog is dismissed (#202) * #183, Body type "Text -> Other" reverts to previous body type (#193) * ISSUE#183 * Adding condition to check mime-type to other * Removing older changes for fixing issue. * Save full response to a file (#207) * Save full response to a file * Add a new button on the response preview pane * Save full response to file when button clicked * Update after PR comments * It's a Response, not a Request * Remove file extension requirement * Implement lazy tag rendering and some fixes (#211) * expanding to 3 decimals (#213) * Update PULL_REQUEST_TEMPLATE.md (#214) * Show build info in console (#216) * Add waiting message in dev mode while webpack compile happens * Switch license from GPL to AGPL (#221) * Default remote URLs to production * Don't use Curl's cookie handling (#220) * Some improvements to the response tag * Add tests for XPath response queries * Refactor conditional element syntax * Add option to toggle Menu Bar showing for Windows/Linux (#225) * Add option to toggle MenuBar showing on Windows/Linux * Extract Toggling Menu Bar functionality to App Container. Default show Menu Bar. Remove tip from Response Pane. * Finalize {% response ... %} Tag (#224) * Some improvements to the response tag * Add tests for XPath response queries * Refactor conditional element syntax * Update nunjucks-tags.js * Better Nunjucks Tag Editor (#234) * Helper to tokenize Nunjucks tag * More granular types * Add tag definitions * Improve editor to be more WYSIWYG * Fixed tests * Added raw response tag * A few improvements to tag editor enum * fix NTLM typo (#244) * Tweaks and fixes for next release (#245)
2017-05-24 16:25:22 +00:00
const window = windowUtils.createWindow();
2016-12-01 18:48:49 +00:00
// Handle URLs sent via command line args
ipcMain.once('app-ready', () => {
args.length && window.send('run-command', args[0]);
2016-12-01 18:48:49 +00:00
});
// Called when second instance launched with args (Windows)
app.makeSingleInstance(args => {
args.length && window.send('run-command', args[0]);
2016-12-01 18:48:49 +00:00
});
2016-12-01 20:22:43 +00:00
// Handle URLs when app already open
app.addListener('open-url', (e, url) => {
window.send('run-command', url);
// Apparently a timeout is needed because Chrome steals back focus immediately
// after opening the URL.
setTimeout(() => {
window.focus();
}, 100);
2016-12-01 18:48:49 +00:00
});
2017-08-01 22:03:12 +00:00
// Don't send origin header from Insomnia app because we're not technically using CORS
session.defaultSession.webRequest.onBeforeSendHeaders((details, callback) => {
delete details.requestHeaders['Origin'];
callback({ cancel: false, requestHeaders: details.requestHeaders });
});
});