-
Notifications
You must be signed in to change notification settings - Fork 40
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add ability for windows to save custom state as part of the persisted window layout #197
Conversation
… window layout and be provided that state back on load of the layout. If the underlying native js window has getState/setState defined they will be invoked.
Codecov Report
@@ Coverage Diff @@
## master #197 +/- ##
==========================================
+ Coverage 93.45% 93.49% +0.03%
==========================================
Files 15 15
Lines 1405 1444 +39
Branches 237 244 +7
==========================================
+ Hits 1313 1350 +37
- Misses 92 94 +2
|
src/Electron/electron.ts
Outdated
|
||
public setState(state: any): Promise<void> { | ||
if (this.innerWindow && this.innerWindow.webContents) { | ||
return this.innerWindow.webContents.executeJavaScript(`if (setState) setState(JSON.parse(\`${JSON.stringify(state)}\`))`); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We sure there is no better expression of the intent here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@psmulovics What do you mean by intent?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's certainly not pretty but there is no access to the underlying native window (cross process) and doing it via ipc would require having two way send but if the other side doesn't have any code in place to handle it the caller would be waiting for a reply that isn't coming.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if (setState)
would throw an error if setState
isn't defined; should this be if (typeof setState !== "undefined")
or if (window.setState)
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@1j01 I assumed since it was in the global that window.setState is equivalent to setState. Testing it is a bit muddied since it goes through executeJavaScript which can be masking this from me. I'll update it if not for a fix but definitely for clarity.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@1j01 @psmulovics Updated to add explicit use of methods on window global and formatting with braces where appropriate.
State will be provided back to the window upon layout load. If the underlying native js window has getState/setState defined they will be invoked.