* Move all app.on('ready') calls in one place
* Move the spellchecking logic in electron-helpers
Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com>
* Use forwardRef for the Pane components
* Update packages/insomnia-app/app/ui/containers/app.tsx
Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com>
* Disable spellchecking and prevent fething translations from Chromium's CDN
* Update packages/insomnia-app/app/main/window-utils.ts
Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com>
* don't unnecessarily disable spellcheck
since, after all, it doesn't download in Mac and upcoming versions of Windows. it's not like we have a thing against spellchecking - the ticket is to disable a dictionary download.
Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com>
* Allow autocomplete to be registered
* On shortcut update refresh pane to enable shortcuts to register correctly
* Improve types and add explanation about keyname order
* bind code-editor to hotkeyregistry via redux so that it updates keymaps on change
* remove force refresh via key and convert to named export
* send hotkeyregistry in environment autocomplete options
* use autocomplete delay from settings
* Use Pick<T>
Co-authored-by: Timothy Lim <tim.lim@intercom.io>
Co-authored-by: gatzjames <jamesgatzos@gmail.com>
Co-authored-by: Opender Singh <opender.singh@konghq.com>
* Refactor to keep in state info about large & huge response
This commit adds 2 properties in the ResponseViewer state:
* largeResponse which will be true when a response body weight more that LARGE_RESPONSE_MB
* hugeResponse which will be true when a response body weight more that HUGE_RESPONSE_MB
* Prevent select-all during response focus hotkey handler on large response
* Add a CopyButton in raw & source response viewer
* Revert "Add a CopyButton in raw & source response viewer"
This reverts commit e094be21
* Add a Copy raw response action in Preview dropdown
This action allows the user to copy the raw response directly in the clipboard.
It is a useful shortcut to copy huge response where select-all might freeze the application.
* fix import
* Fix build
* remove empty line
Co-authored-by: Opender Singh <opender.singh@konghq.com>
Co-authored-by: James Gatz <jamesgatzos@gmail.com>
* adds (now available) electron types
* MenuItemConstructorOptions.selector module augmentation
* updates note on allowRendererProcessReuse with more up-to-date info
* separates and formats comments that were intended to be separate
if you check out the commit where these were created, for some reason the comment for the `loadURL` line was put under the line of interest, and over time the space between the comment blocks was removed - making it look like the last line of the comment is related to the same thing (it, apparently, is not).
* use createRef for ResponseWebView
* Display the settings modal for remote spaces and update the copy for deleting a remote space
* Improve confirmation dialog copy
* Replace baseSpace check with spaceHasSettings
* Use the strings constant for the space word copy
* Use the strings constant for the space word copy in the modal
* Display a checkmark for the selected sort option in the SpaceSortDropdown
* Update packages/insomnia-app/app/ui/components/dropdowns/space-sort-dropdown.tsx
Co-authored-by: Opender Singh <opender94@gmail.com>
* Move the placement hacks for the dropdown icon and tooltip into a separate file
* Fix lint errors
Co-authored-by: Opender Singh <opender94@gmail.com>
* initial implementation
* take vcs as a parameter (so it's easier to mock and test)
* update console log and exit early if not logged in
* add unit tests for migration
* add async filter and replace vcs find by root document
* lint fix
* fix memory driver and add test for hasProjectForRootDocument
* setup check on interval
* move migration logic and interval from main process to render process, because session state and a VCS instance dont work in the main process yet
* update test
* replace constructor with static class creator
* replace interval with login logout hook
* remove effect helpers
* empty commit to trigger CI
* use selector and improve types
* Loading remote projects now requires a team id; it is no longer optional
* activate with workspace or workspace id
* extract helper
* normalize graphql return type for a remote project to include the team
* pull into the space as defined by the project team id, not by the active space. If the space doesn't exist, create it
* use helper
* make testing easier by putting the active space name as the first breadcrumb
* fix tests
* add the active space into the title
* refactor and add tests
* remove todo
* Add sort order for space items
* Add ability to sort dashboard cards
* Fix TS errors
* Fix lint errors
* Add sort options for modified time
* Move workspace-card to a new file and use redux global state for persistence
* Remove ordering from the space model
* Use currying for the workspace mapping function and clean up types
* Expand testcase for activespace initialization
* Fix lint errors
* Remove date defaults and check if modifedLocally is defined
* Fixup: Use global selector for space order
* Fixup: Decouple space order initialization from active space
* Fixup: Use named exports in SpaceSortDropdown and rename handler in WrapperHome
* Implement color scheme badge artifact workaround.
Color scheme badges have a small gap artifact caused by an interplay
between anti-aliasing and alpha blending. Here, we use pseudo-classes to
ensure one opaque pixel of intersection between the shadow border and
the color badge.
* Improved workaround for color badge bug.
This improved workaround has fewer limitations and reduces visual
artifacts during transitions.
* Don't fade ring when hovering in OS theme mode.
This tiny change makes the transition look a lot better.
* Upgrade Electron from 9.3.5 to 11.2.3.
* bump version
* update preid to alpha
* version packages lib@2.3.1-alpha.0
* Downgrade electron-builder to 22.11.3.
We tried to upgrade electron-builder to 22.11.7, but this fails
because electron-builder 22.11.4 introduces imports into fs/promises.
This module is only available in Node 14+, so we have to stick to
22.11.3 until we update to Electron 12.
* Revert npm script changes from alpha release.
Co-authored-by: Opender Singh <opender.singh@konghq.com>
* INS-674 - First pass at making the send button more visible
* [wip] adds rect for send button
* Update colors in the SVG to match send button
* Update the gRPC send button to also use theme colors
* Adding left margin to send button
Co-authored-by: Eric Reynolds <eric.reynolds@konghq.com>
Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com>
Co-authored-by: Opender Singh <opender.singh@konghq.com>
* adds redux-devtools back
I had to delete anything under `~/.config/insomnia-app/extensions/lmhkpmbekcpmknklioeibfkpmmfibljd*` to get this to work. Apparently there's some old state left around from the prior version or something when it was broken that prevents a migration?
* improves logging (partly to compensate for bug in upstream)
see: https://github.com/MarshallOfSound/electron-devtools-installer/issues/180
* INS-674 - First pass at making the send button more visible
* [wip] adds rect for send button
* Update colors in the SVG to match send button
* Update the gRPC send button to also use theme colors
* Adding left margin to send button
Co-authored-by: Eric Reynolds <eric.reynolds@konghq.com>
Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com>
Co-authored-by: Opender Singh <opender.singh@konghq.com>
* fix: insomnia open dialog for proto directory can't select directories
* uses a named export for selectFileOrFolder
(also, removes original js file from rebase)
* clears error by leveraging exhaustiveness check
* fixes bug: the `name` field is actually for a file filter
see the referenced pull request.
As for the `extensions: ['*']`, there's no reason I can see to include a filter and then tell the filter to then accept everything.
* update selectFileOrFolder mocks
* use switch (for exhaustiveness checking) and type selectedFormat
* removes unnecessary filters from _save_ dialog
from the docs:
> The filters specifies an array of file types that can be displayed
As suspected, this is not needed. A user is free to save it wherever they want.
* adds extension to saved file
not sure why this was missing before, but it appears to have been a bug
* formatting updates
best to "ignore whitespace" for this commit. I did this with the hope of using the `ThunkAction` type from `redux-thunk`, but once I got them all looking good and started adding the type I quickly learned there's quite a bit more work to do in this area before we can have such a thing. I therefore opted to just call it a day at that and take the (no-op) formatting changes and typings.
* removes remaining name filters from save dialogs
same reason as the 2nd to prior commit - they cause the bug
Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com>
Co-authored-by: Opender Singh <opender.singh@konghq.com>
* readability improvements and reduced indirection
* adds type for handleShowModifyCookieModal
* correctly types wrapperProps property, thereby fixing bug.
if you add `console.log({ previewHidden, propsOne: this.props.wrapperProps.activeWorkspaceMeta });` to the third line of `_renderPreview()` you'll see that `activeWorkspaceMeta` is indeed, sometimes, `undefined.
Also, there's no reason to use `await` on `this.setState`. I didn't find any more of these in the codebase, I just found this one.
* adds type for swaggerUiSpec
* undoes lifting props to state
almost always, this is done for performance reasons, but I removed it the app is working pretty quick-and-snappy for me without needing to introduced duplicated application state and keep track of it.
I went ahead and measured it before and after this commit (using performance.now):
before = [
1.93500000750646,
1.149999996414408,
0.9499999869149178,
0.9950000094249845,
0.8650000090710819,
1.560000004246831,
1.5699999930802733,
0.8450000023003668,
1.4550000196322799,
1.3299999991431832,
1.3050000125076622,
1.4099999971222132,
1.3099999923724681,
1.3100000214762986,
1.1999999987892807,
1.0099999781232327,
0.830000004498288,
1.2449999921955168,
1.2500000011641532,
1.4349999837577343,
]
after = [
2.9400000057648867,
2.449999999953434,
2.33499999740161,
2.2849999950267375,
1.7700000025797635,
1.8149999959859997,
2.1249999990686774,
1.9150000007357448,
2.074999996693805,
1.9899999897461385,
2.0200000144541264,
2.869999996619299,
2.1450000058393925,
2.33499999740161,
2.130000008037314,
2.119999990100041,
2.144999976735562,
2.130000008037314,
2.380000009201467,
2.8999999922234565,
]
> R.mean(before)
> 1.2480000004870817
> R.mean(after)
> 2.243749999080319
> R.median(before)
> 1.2775000068359077
> R.median(after)
> 2.137499992386438
So basically, considering a 16ms render rate (i.e. 60hz), 1ms saved by lifting props to state makes no difference in application performance.
This is committed separately so that if there's any reason we want to keep the prior implementation, we can just still do so.
* removes (unused and unwanted) husky scripts
might as well, it's only taking up space for nothing in our node_modules
* adds `lerna run clean` to main clean script
we didn't have `clean` scripts in the packages before, but now that we do, it makes sense to.... hahah... _use them_.
Note that it's important that we run the package scripts first, because otherwise after the rimraf (which is now at the end) there's no `lerna` left to call.
* adds missing clean script to insomnia-components
although it looks like there are other changes at first glance, there shouldn't be any behavioral differences now except the fact that build will always generate SVGs (which, was an oversight/bug that it wasn't before). We need this to occur so that when we clean it removes the things that were built, and when we build it replaces those same things.
* adds a postclean script to insomnia-app like every other package
I'll be honest, I'm not entirely sure what the reason is for having `postclean` scripts in every package with (mostly) `rimraf dist` (i.e. instead of just including that in the main clean script at the end), but that's clearly the convention - so for now I'm just following it
* removes references to old build artifact location
well, except for the .gitignore. I guess I could remove it from the .gitignore, commit it, commit deleting it, which would clear it from everyone's projects... but I'll just leave it there for a bit in the .gitignore. hopefully people either start fresh or run `clean` from the root every once in a while, which will clean this up.
After a few weeks or months we can remove these two references (in the package.json.clean and .gitignore) altogether if we feel like it.
* removes unused reference in config to build artifact
I searched high and low for every place I could find that consumes this file and none of them seem to use this field anyway. And even if they did, it's wrong. In fact, it's been wrong for a while I'd guess because (relative to the root, if that's what it was intended to mean).
As far as I can tell this was added c6a7c4d682 (diff-6918d2464ad7fb0f3e985d8587ce0c4218eeba6c6dea60c58642251f4db99ecb)
So I even checked out that commit and looked at all usages of that file at that time and it was, there too, unused (so far as I can tell). Appears to be a case of wishful thinking that it'd be useful for something, not sure.
* fix ts-expect-error
* removes useless await
see https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/await-thenable.md
We're not quite ready to have this rule on everywhere, but in this case I can see that it's correct to follow.
* add comment about magic number
and moves the assignment to the one place it's used
I opted not to make a ticket because we are recently running out of tickets and this seems to be a relatively small thing @reynolek please confirm this is the correct course of action.
* initialize ref to reflect reality (and include actual type)
* fixes root cause of error, inlines one-liners
the error with the type of `_handleInputColorChange` was due to `onChange` being the wrong prop to use (where `onChange` is the one we want).
* use onChange instead of onInput to access correct types
ultimately, since react's behavior diverged from the DOM behavior to match onInput, this should have no effect on any functionality since react assigns this event to `onChange` anyway. see https://github.com/facebook/react/blob/master/fixtures/attribute-behavior/src/attributes.js#L2089
* clears remaining ts-expect-errors in file
* updates fallback call per review feedback
* no default export (prepping for hooks)
* makes logic match other implementation
note that above in `componentDidUpdate` it uses `<= 0`, whereas here it uses `> 0` but then only checks for false.
Also, logically, there's no way to ever get `aria-hidden="true"` since it returns early so that entire attribute can just be removed.
* removes fake private class member syntax
this is moving to hooks anyway, but in the meantime...
* undoes calling identical code twice in a row...
* condenses class methods to prepare for hooks
* hooks refactor
fairly faithful to the original, this attempts to just refactor to hooks. this exposes, again, the fact that we're setting state within useEffect.
* removes 200 ms offset for response time
so that, now, you know, the time reported is the actual time.
* adds logging for response timer lage
* removes timer logging and `responseTime` prop after PR discussion
it's definitely fruitful, but the fix for the callstack exceeded is what needs to be the focus.
* removes shadowed variable per PR feedback
* reinstates and documents 200ms compensation
* add delay endpoint to example server
* Update packages/insomnia-app/app/ui/components/response-timer.tsx
Co-authored-by: Opender Singh <opender.singh@konghq.com>
* use jest-preset for all but app
* separate properties that are the same as the preset
for some reason, it doesn't work. you get:
```
Preset ../../jest-preset.js not found.
```
This needs to be investigated.
* removes unused/unneeded npm script in `app`, `test:jest`
* sanitize all electron.shell.openExternal calls
* adds lint rule to disallow future usage of `openExternal`
* updates to use URL constructor per review feedback
* Prompt existing users about analytics
* Fix the tests
* Set hasPromptedAnalytics to true when going through the onboarding flow
* Add comments
* Show the analytics prompt after migrating if needed as well
* test: add a few more tests for analytics activity
Co-authored-by: Opender Singh <opender.singh@konghq.com>
* fix(tracking data) - Honor data sharing
* Utilizes the Data Sharing preference to determine what data is
sent to the notification endpoint
* fix(tracking data) - Move 2 variables that fall under Service Data
* Stop sending aggregated metrics to the notification endpoint
* Disable sending of segment events when analytics are disabled
Co-authored-by: Eric Reynolds <eric.reynolds@konghq.com>
Co-authored-by: David Marby <david@dmarby.se>