breaking: improve support for plugins code running in main, fixing quirks of 3.x, and making it more coherent with Cordova APIs#239
Open
fabiofabbri84 wants to merge 1 commit intoapache:masterfrom
Conversation
…cdv-plugin-exec The main goal was to allow passing to the error callback an unaltered copy of the argument, as with the previous implementation you have to throw an exception or return a rejected promise, and this is forwarded to the ipcRenderer.invoke as a string encapsulated in an Error object. See electron/electron#24427 Moreover, with the previous implementation, args for the action were encapsulated twice in an Array ( see apache#214 ). To make it more coherent with Cordova standards, and to allow backward support easily with a simple check, the first and the second arguments are success and error functions, and the third argument is the args array. So if the first argument is a function, we are using this cordova-electron~4 proposal, otherwise we are using cordova-electron~3, and it is the "arguments" array. Finally, _cdvElectronIPC.exec checks if success and error parameters are actually functions before calling them, in order to avoid annoying error log messages if they were not defined.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation and Context
Description
On the main side:
On the renderer side:
Testing
I made demo plugin, based on plugman example, that supports this proposal, cordova-electron 3.1, and my proposal for cordova-electron 3.2. You can find it here: https://github.com/cimatti/cordova-electron-v4proposal-demo-plugin
You can create a demo project using this plugin with these commands:
On the electron app console, you can call the following JavaScript commands to test the problems with the current implementation:
Now you can use these commands to replace cordova-electron 3.1 with my 4.0 proposal:
Calling again the JavaScript console functions above, you can see that everything is running as expected
Now you can also test this demo plugin with my cordova-electron 3.2 proposal (see #238 ) to check how is possible to make a plugin compatible with cordova-electon 3.1 and my proposals for cordova-electron 3.2 and 4.0
Checklist
(platform)if this change only applies to one platform (e.g.(android))