Cordova Slack Digest

Mon, 04 Oct 2021 08:21:11 GMT

User count: 4638

Join the conversation at slack.cordova.io

Channel #general (99 messages)


Sun, 03 Oct 2021 19:44:04 GMT

@info460 says

Hi, please excuse a question.l of Cordova and JS greenhorn After my cordova apps seems to be quite slow Iam now scouting options to implement SPA into Cordova. I dont really like Ionic together with React,Vue,Angular as it seems to be overkill for what I want to do. I found Svelte (Svelte SPA router) Anyone know if possible to implement Svelte router into Cordova?

Sun, 03 Oct 2021 19:46:17 GMT

@norman137 says

I can't speak for Svelte, but the key thing is if it supports hash-based routing.

Sun, 03 Oct 2021 19:47:40 GMT

@norman137 says

Nearly all traditional web frameworks will work pretty good in cordova, but ont caveat is cordova isn't powered by a web server. In a traditional SPA, there is some amount of desire to have “clean” looking urls, etc <https://example.com/fancy-url> instead of <https://example.com/app#/some-url>

Sun, 03 Oct 2021 19:47:48 GMT

@info460 says

Svelte router seems to be hash based

Sun, 03 Oct 2021 19:48:20 GMT

@norman137 says

But that only works with apps powered by a web server that knows how to redirect the fancy-url to your main index.html.

With Cordova you don't have that web server, nor can users see the URL anyway.

Sun, 03 Oct 2021 19:48:47 GMT

@norman137 says

If it supports hash-based routing, then it should work just fine.

Sun, 03 Oct 2021 19:59:45 GMT

@info460 says

thanks , I will try to implement it

Sun, 03 Oct 2021 21:10:21 GMT

@info460 says

one question.more please, I should git clone svelte spa router inside my project or inside www?

Sun, 03 Oct 2021 21:12:26 GMT

@norman137 says

In my apps, I have a &lt;cordova-project&gt;/src folder, which contains all the sources for the web app. I use webpack to build a compiled app file into the &lt;cordova-project&gt;/www folder, which the index.html file references.

Sun, 03 Oct 2021 21:15:43 GMT

@info460 says

as I never used webpack I put svelte into www?

Sun, 03 Oct 2021 21:29:57 GMT

@erikyuzwa says

you just need the output of whatever svelte generates into www

Sun, 03 Oct 2021 21:50:57 GMT

@info460 says

this looks like out of my reach, thanks for help

Sun, 03 Oct 2021 22:16:33 GMT

@norman137 says

Basically the www folder is for your final files to be packed and distributed with your app. I'm not familiar with svelte but any runtime files required to be ran with your app should be included in your www folder.

Sun, 03 Oct 2021 23:45:15 GMT

@info460 says

I am coming from.web development word and still surprises me how complex tooling needed for android development inside Cordova.

Sun, 03 Oct 2021 23:58:47 GMT

@norman137 says

To be fair, you can write a cordova app purely in HTML/JS without any frameworks or build tools. Cordova doesn‘t depend on webpack or any other framework... it’s just simply a packaging tool at the end of the day... with the exception to the bridging API to provide the JS access to native APIs.

But like any web application, whether it be in a cordova container or hosted in a traditional web server -- you have to ask yourself if using web frameworks will give you the scalability/maintainability for your app. For larger complex apps, the answer is probably yes.

Mon, 04 Oct 2021 00:03:21 GMT

@norman137 says

For smaller projects, the added complexity of introducing frameworks may not make much sense. Like Angular, It is a fully fledged out application framework that is quite opinionated and has many assumptions, but provides you with a lot of tooling out of the box. It‘s a complicated framework intended for building quite large / robust applications... but like you said earlier, it’s seems overkill for your particular project.

Mon, 04 Oct 2021 00:16:01 GMT

@pawelkolodziej81 says

Hello everyone. I'm work on adding native support in Cordova Android for &lt;input type="file" capture="user"&gt; . The issue has been reported at least here: https://github.com/apache/cordova-android/issues/916 https://github.com/apache/cordova-android/issues/816

I need some help with writing the code.

Mon, 04 Oct 2021 00:22:44 GMT

@pawelkolodziej81 says

Currently I have stucked with returning result from permission request. Can some guide me how to do it properly? Here is my code (fragment):

        if (!c.hasPermission(Manifest.permission.CAMERA)) {
          c.requestPermission(new CordovaPlugin() {
            public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
            {
              if (requestCode == CAMERA_PERMISSION_CODE) {

                // Checking whether user granted the permission or not.
                if (grantResults.length &gt; 0 &amp;&amp; grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                  // Showing the toast message
                  Toast.makeText(c.getActivity(), "Camera Permission Granted", Toast.LENGTH_SHORT).show();
                  openFileChooseActivity(filePathsCallback);
                }
                else {
                  Toast.makeText(c.getActivity(), "Camera Permission Denied", Toast.LENGTH_SHORT).show();
                }
              }
            }
          }, CAMERA_PERMISSION_CODE, Manifest.permission.CAMERA);
        } else {
          openFileChooseActivity(filePathsCallback);
        }```
Currently `onRequestPermissionsResult` is not called.

Mon, 04 Oct 2021 00:24:21 GMT

@norman137 says

It‘s a difficult problem to solve, you basically need to implement the camera plugin... into cordova-android which architecturally, it’s not really a good solution.

Mon, 04 Oct 2021 00:24:25 GMT

@pawelkolodziej81 says

For better context, I'm working to extend method onShowFileChooser in here: https://github.com/apache/cordova-android/blob/master/framework/src/org/apache/cordova/engine/SystemWebChromeClient.java

Mon, 04 Oct 2021 00:25:18 GMT

@norman137 says

The camera permisison is for accessing the camera APIs directly btw, which if you to show the camera, you would use Intents

Mon, 04 Oct 2021 00:25:28 GMT

@pawelkolodziej81 says

@norman137 I would like to avoid it and use intent to receive the photo.

Mon, 04 Oct 2021 00:27:15 GMT

@pawelkolodziej81 says

I have looked into camera plugin code. I looks quite complex bit seems to work directly with camera API.

Mon, 04 Oct 2021 00:27:46 GMT

@norman137 says

The camera plugin uses intents

Mon, 04 Oct 2021 00:28:14 GMT

@pawelkolodziej81 says

Ok, so I have wrong understanding.

Mon, 04 Oct 2021 00:28:52 GMT

@norman137 says

There is a caveat with the camera permission though, where if the camera permission is declared in the AndroidManifest, then you must have the Camera permission granted to use the intent for capturing images -- even though the camera permission ins't necessary for that action.

Mon, 04 Oct 2021 00:29:12 GMT

@pawelkolodziej81 says

Some maybe the solution would be to add optional support in onShowFileChooser when camera plugin is present?

Mon, 04 Oct 2021 00:29:30 GMT

@norman137 says

That's one thing the camera plugin handles which is why you see camera permission management in the plugin

Mon, 04 Oct 2021 00:30:13 GMT

@norman137 says

I personally think that might be a good way in handling it. Perhaps onShowFileChooser could be exposed to plugin calls for plugins to handle it.

Mon, 04 Oct 2021 00:32:30 GMT

@pawelkolodziej81 says

But exposing this method to plugins would not be simple... I suppose.

Mon, 04 Oct 2021 00:33:29 GMT

@norman137 says

Yah I'm thinking...

Thinking about:

  • what if multiple plugins provides an onShowFileChooser implementation... how does the framework decide which plugin to use, etc..

Mon, 04 Oct 2021 00:35:08 GMT

@norman137 says

I'm not all that familiar with onShowFileChooser -- does the method get enough information to make a distinction of user intent?

Like do we know if the capture attribute is present in &lt;input type="file" capture="camera" /&gt; for example?

Mon, 04 Oct 2021 00:36:17 GMT

@pawelkolodziej81 says

I think it could be extracted.

Mon, 04 Oct 2021 00:37:13 GMT

@pawelkolodziej81 says

fileChooserParams.isCaptureEnabled()

Mon, 04 Oct 2021 00:37:52 GMT

@pawelkolodziej81 says

Seems that this implementation is not html compilant.

Mon, 04 Oct 2021 00:38:30 GMT

@pawelkolodziej81 says

for html user and enviroment values are allowed.

Mon, 04 Oct 2021 00:38:58 GMT

@pawelkolodziej81 says

But anyway its better than nothing.

Mon, 04 Oct 2021 00:39:37 GMT

@pawelkolodziej81 says

I havent tested what do we get when value of the attribute is not a boolean.

Mon, 04 Oct 2021 00:41:24 GMT

@norman137 says

Ok... so in theory we could have a method signature such as boolean onShowFileChooser(FileChooserParams) where we return true if it's handled, false otherwise. The default implementation in CordovaPlugin could be simply return false.

Then we can iterate over the cordova plugins (which i'm not sure if this is possible from SystemWebChromeClient, we might need to delegate...). The first cordova plugin that returns true allows us to kick out of the loop and exit.

If no cordova plugins returns true, then we can fallback to the original behaviour.

Not 100% sure if this flow will work, but think it might be a start...

Mon, 04 Oct 2021 00:42:46 GMT

@norman137 says

https://developer.android.com/reference/android/webkit/WebChromeClient#onShowFileChooser(android.webkit.WebView,%20android.webkit.ValueCallback%3Candroid.net.Uri[]%3E,%20android.webkit.WebChromeClient.FileChooserParams)

Mon, 04 Oct 2021 00:43:13 GMT

@norman137 says

On the other hand, if cordova returns false, it will use the “default” handling...

Mon, 04 Oct 2021 00:43:27 GMT

@norman137 says

I wonder if that will “fix” your issue itself

Mon, 04 Oct 2021 00:44:07 GMT

@norman137 says

I'd be tempted to comment that entire method out and just return false to see what it does 😄

Mon, 04 Oct 2021 00:45:39 GMT

@norman137 says

maybe the default handling includes handling the camera / capture

Mon, 04 Oct 2021 00:45:49 GMT

@pawelkolodziej81 says

Do you susspect it could be properly handled with default implementation?

Mon, 04 Oct 2021 00:46:17 GMT

@norman137 says

Honestly don‘t know. Again not familiar with this, but I’d be curious to know for sure.

Mon, 04 Oct 2021 00:46:42 GMT

@norman137 says

Most of this codebase is written 7 years ago.

Mon, 04 Oct 2021 00:47:32 GMT

@pawelkolodziej81 says

Not sure if thats the case, but i think I have seen “wont fix” flag for this issue in chrominium project.

Mon, 04 Oct 2021 00:48:14 GMT

@pawelkolodziej81 says

Quite long time...

Mon, 04 Oct 2021 00:49:00 GMT

@pawelkolodziej81 says

So... what now?

Mon, 04 Oct 2021 00:51:19 GMT

@norman137 says

Well, the assumptions 7 years might be inaccurate today -- which is why I think it's worth a try. You can modify the sources directly in a project via &lt;cordova-project/platforms/android/app/src/... for a quick test.

Mon, 04 Oct 2021 00:51:48 GMT

@pawelkolodziej81 says

And I'm wondering will boolean onShowFileChooser(FileChooserParams) signature is right when inner action seems to be asychronous (intent result callback).

Mon, 04 Oct 2021 00:52:02 GMT

@norman137 says

But I‘d be surprised if it does what we want -- especially if you think you’ve a won't fix ticket in chromium

Mon, 04 Oct 2021 00:52:36 GMT

@norman137 says

> And I‘m wondering will boolean onShowFileChooser(FileChooserParams) signature is right when inner action seems to be asychronous (intent result callback). I’ve been thinking about this too

Mon, 04 Oct 2021 00:54:36 GMT

@norman137 says

I think it would be up to the plugin to look at the file chooser params to try to determine if it can satisfy the needs. I think it can do this synchronously.

Mon, 04 Oct 2021 00:55:06 GMT

@norman137 says

In the camera plugin's case, it would check for isCaptureEnabled() == true I suppose

Mon, 04 Oct 2021 00:56:20 GMT

@pawelkolodziej81 says

Well I‘have commented out onShowFileChooser and there’s no handling at all.

Mon, 04 Oct 2021 00:56:34 GMT

@pawelkolodziej81 says

Nothing happens when clicking the input.

Mon, 04 Oct 2021 00:56:53 GMT

@norman137 says

So I was overly optimistic of the default handling

Mon, 04 Oct 2021 00:56:56 GMT

@norman137 says

😆

Mon, 04 Oct 2021 00:58:35 GMT

@pawelkolodziej81 says

But where do you place actual result handling?

Mon, 04 Oct 2021 00:59:10 GMT

@pawelkolodziej81 says

Lets suppose that only camera plugin have implemented the callback.

Mon, 04 Oct 2021 00:59:40 GMT

@norman137 says

                @Override
                public void onActivityResult(int requestCode, int resultCode, Intent intent) {
                    Uri[] result = null;
                    if (resultCode ==  Activity.RESULT_OK &amp;&amp; intent != null) {
                        if (intent.getClipData() != null) {
                            // handle multiple-selected files
                            final int numSelectedFiles = intent.getClipData().getItemCount();
                            result = new Uri[numSelectedFiles];
                            for (int i = 0; i &lt; numSelectedFiles; i++) {
                                result[i] = intent.getClipData().getItemAt(i).getUri();
                                LOG.d(LOG_TAG, "Receive file chooser URL: " + result[i]);
                            }
                        }
                        else if (intent.getData() != null) {
                            // handle single-selected file
                            result = WebChromeClient.FileChooserParams.parseResult(resultCode, intent);
                            LOG.d(LOG_TAG, "Receive file chooser URL: " + result);
                        }
                    }
                    filePathsCallback.onReceiveValue(result);
                }
            }, intent, FILECHOOSER_RESULTCODE);```

Mon, 04 Oct 2021 00:59:50 GMT

@norman137 says

the plugin would have to do something similar to this

Mon, 04 Oct 2021 01:00:04 GMT

@norman137 says

Like it would create the intent

Mon, 04 Oct 2021 01:00:43 GMT

@norman137 says

But I‘m not sure how we can go from the cordova’s chrome client to the plugins

Mon, 04 Oct 2021 01:01:02 GMT

@norman137 says

And the plugin would need to have access to FILECHOOSER_RESULTCODE which is odd since that's private

Mon, 04 Oct 2021 01:03:27 GMT

@pawelkolodziej81 says

And there is another scenario that probably should be handled -default choose shoud show choice between camera and file system...

Mon, 04 Oct 2021 01:04:05 GMT

@pawelkolodziej81 says

When capture true camera only (no choice).

Mon, 04 Oct 2021 01:04:29 GMT

@norman137 says

in chrome browser, can you navigate between camera and file system?

Mon, 04 Oct 2021 01:04:48 GMT

@norman137 says

Like when capture attribute is used

Mon, 04 Oct 2021 01:05:25 GMT

@pawelkolodziej81 says

Just a moment I'll check the web specs.

Mon, 04 Oct 2021 01:05:35 GMT

@norman137 says

https://w3c.github.io/html-media-capture/#the-capture-attribute

Mon, 04 Oct 2021 01:06:39 GMT

@norman137 says

Basically if capture is present, it should use the capture control device (e.g. camera, microphone, etc)

Mon, 04 Oct 2021 01:07:07 GMT

@norman137 says

The accept attribute should be used to determine what kind of capture control to use

Mon, 04 Oct 2021 01:09:19 GMT

@norman137 says

> If the accept attribute‘s value is set to a MIME type that has no associated capture control type, the user agent MUST act as if there was no capture attribute. So in otherwords, if the accept attribute doesn’t make sense, then it should fallback to the same impl as capture not defined.

Mon, 04 Oct 2021 01:10:22 GMT

@pawelkolodziej81 says

But as i understand when accept is image/* camera choice should be present with file system choice.

Mon, 04 Oct 2021 01:10:51 GMT

@norman137 says

So if we can delegate this to CordovaPlugin, then the plugin should be able to look at the file chooser params to determine if capture is enabled and if the accept is something that it's compatible, then it can handle the file choosing logic.

Mon, 04 Oct 2021 01:11:04 GMT

@norman137 says

> But as i understand when accept is image/* camera choice should be present with file system choice. This might depend on the camera app present on the device.

Mon, 04 Oct 2021 01:11:40 GMT

@pawelkolodziej81 says

yes, when not present should not show.

Mon, 04 Oct 2021 01:13:01 GMT

@pawelkolodziej81 says

And thought I will resolve this issue in few days...

Mon, 04 Oct 2021 01:13:35 GMT

@norman137 says

Using the demo example on MDN on my phone

Mon, 04 Oct 2021 01:13:44 GMT

@norman137 says

I don't see a file system option

Mon, 04 Oct 2021 01:13:49 GMT

@norman137 says

it goes to the camera

Mon, 04 Oct 2021 01:13:57 GMT

@pawelkolodziej81 says

Android?

Mon, 04 Oct 2021 01:13:59 GMT

@norman137 says

Even though the camera app itself can browse the file system

Mon, 04 Oct 2021 01:14:00 GMT

@norman137 says

Yes

Mon, 04 Oct 2021 01:14:15 GMT

@pawelkolodziej81 says

OK.

Mon, 04 Oct 2021 01:14:55 GMT

@norman137 says

Mon, 04 Oct 2021 01:15:12 GMT

@pawelkolodziej81 says

So there is no case when first choice is between camera and fs...

Mon, 04 Oct 2021 01:15:43 GMT

@norman137 says

this is the view I see when I use the MDN capture example for photos

Mon, 04 Oct 2021 01:16:36 GMT

@norman137 says

Mon, 04 Oct 2021 01:17:01 GMT

@norman137 says

This is the camera app itself, you can see the additional circle to the left of the white circle -- which opens up the filesystem

Mon, 04 Oct 2021 01:17:24 GMT

@norman137 says

to browse the gallery, but the the capture option from the webview, that is hidden

Mon, 04 Oct 2021 01:17:59 GMT

@norman137 says

Interestingly enough, I see the webview equivalent screen if I open the camera from slack.

Mon, 04 Oct 2021 01:18:31 GMT

@norman137 says

Slack gives me two different options... to take a photo, or to browse the gallery

Mon, 04 Oct 2021 01:18:54 GMT

@norman137 says

Mon, 04 Oct 2021 01:19:25 GMT

@pawelkolodziej81 says

But for &lt;input type="file" /&gt; i get “Choose an action”, and choises:

  • Camera
  • Camcorder
  • Files

Mon, 04 Oct 2021 01:19:58 GMT

@norman137 says

hmm

Channel #cordova-android (10 messages)


Mon, 04 Oct 2021 02:35:12 GMT

@mathewp.94 says

Has anyone experienced their app-links breaking on Android 12? It seems that we need to update how they are declared https://developer.android.com/about/versions/12/web-intent-resolution#update-declarations

Mon, 04 Oct 2021 02:35:30 GMT

@mathewp.94 says

Not sure if this method of declaration is backward compatible ?

Mon, 04 Oct 2021 02:45:29 GMT

@norman137 says

Looks like you'll need to target API 31 / use API 31 tooling -- which Cordova does not support right now.

Mon, 04 Oct 2021 02:52:03 GMT

@mathewp.94 says

Right, so essentially applinks will be broken on Android 12 until Cordova supports that target?

Mon, 04 Oct 2021 03:02:14 GMT

@dpogue says

If you're targeting a lower SDK it should keep the existing behaviour

Mon, 04 Oct 2021 03:06:04 GMT

@mathewp.94 says

Awesome

Mon, 04 Oct 2021 03:06:26 GMT

@mathewp.94 says

Thanks for clarifying guys 🙂

Mon, 04 Oct 2021 03:53:14 GMT

@mathewp.94 says

I have done some testing on a Pixel I've updated to Android 12, it seems like applinks have stopped working.

Or rather, automatic registration of applinks has stopped working

Mon, 04 Oct 2021 03:54:36 GMT

@mathewp.94 says

In the system settings for the app you can manually approve the domains that the app wants to use

Mon, 04 Oct 2021 04:10:30 GMT

@dpogue says

ugh

Channel #cordova-electron (16 messages)


Mon, 04 Oct 2021 05:37:39 GMT

@miroslav.vojtus says

Hello all. Do you have please a suggestion how to properly implement main process to web/browser notifications with the newest cordova-electron plugin system? I've learned it is possible to perfrom cordova.exec but I do not know how to do an observer pattern where web/browser observes events from a cordova-electron native nodejs main process. I guess there is no such a support yet and I have to override cdv-electron-preload.js  with some ipc + cordova/channel. Am I on a right path?

Mon, 04 Oct 2021 05:39:19 GMT

@erisu says

@miroslav.vojtus does this PR help you? https://github.com/apache/cordova-plugin-device/pull/135

Mon, 04 Oct 2021 05:41:44 GMT

@erisu says

I haven’t merged this PR yet into the device plugin as I need to review the state of the plugin first, to determine what is the next release type. But, this was the PR that I created and used when testing the implementation for the Cordova Plugins Support in Electron.

Mon, 04 Oct 2021 05:42:44 GMT

@erisu says

I been working on a detailed blog post explaining how to build a plugin for Cordova Electron, but I have not finished it yet… but I believe seeing this PR as an example might help explain it to you…

Mon, 04 Oct 2021 06:00:31 GMT

@miroslav.vojtus says

If you mean it as a help to create basic plugin then I already have one 🙂 I have not found a solution to the main process -> browser communication. What you have is browse -> main process -> browser - sort of async query reply.

I need a channel of information from secondary application start to retrieve OAuth requests.

Mon, 04 Oct 2021 06:01:30 GMT

@miroslav.vojtus says

Eventually I could do it as idle promise query until a secondary start happens and re-creation of the idle query just after, but it would be a bit more cumbersome.

Mon, 04 Oct 2021 06:02:18 GMT

@miroslav.vojtus says

The preferable would be to be able to easily configure listeners. I assume that I need to use cordova/channel + ipc to resolve it by my own.

Mon, 04 Oct 2021 06:42:25 GMT

@erisu says

hmm, I will have to play around with it later to see.

Not that long ago Cordova-Electron was experimental and since 3.0, it finally released plugin support but I guess it just covered the main use cases that most plugins used. Theres is probably a lot of things missing or areas that could be improved. We might be able to achieve this without making changes to the core cordova-electron or the main process file…

I need to head out for a bit. I will see if I have time to take a look at it when I get back.

Mon, 04 Oct 2021 07:03:27 GMT

@miroslav.vojtus says

In mean time I did it with adaption of the preload script like:

    exec: (success, error, serviceName, action, args) =&gt; {
        return ipcRenderer.invoke('cdv-plugin-exec', serviceName, action, args)
            .then(
                success,
                error
            );
    },
    listen: (event, listener) =&gt; {
        ipcRenderer.on("prefix_" + event, listener);
    },
    hasService: (serviceName) =&gt; cordova &amp;&amp;
        cordova.services &amp;&amp;
        cordova.services[serviceName]
})```

Mon, 04 Oct 2021 07:04:21 GMT

@miroslav.vojtus says

This way browser could eventually listen only to application specific events which I emit via framework code and propagate to cordova layer via cordova/channel.

Mon, 04 Oct 2021 07:07:26 GMT

@erisu says

I also am thinking of some plugin init support as well.. where you could write anything in the plugin file as part of initialising.

Example in the main process we have this now:

    if (cordova &amp;&amp; cordova.services &amp;&amp; cordova.services[serviceName]) {
        const plugin = require(cordova.services[serviceName]);

        return plugin[action]
            ? plugin[action](args)
            : Promise.reject(new Error(`The action "${action}" for the requested plugin service "${serviceName}" does not exist.`));
    } else {
        return Promise.reject(new Error(`The requested plugin service "${serviceName}" does not exist have native support.`));
    }
});```
we pull out the require statement:

```const loadedPlugins = {};
if (cordova &amp;&amp; cordova.services &amp;&amp; cordova.services[serviceName]) {
  cordova.services.forEach(service =&gt; {
    loadedPlugins[serviceName] = require(cordova.services[serviceName]);
  })
}```
so it will require always on launch of the plugin and it runs whatever thats not in the export.. that would be equivalent to init..

and then back in the `ipcMain.handle` instead of require we just do:

```if (loadedPlugin[serviceName]) {
  const plugin = loadedPlugin[serviceName];
  return plugin[action]...
}```
this is just an idea change in this area..

Mon, 04 Oct 2021 07:07:43 GMT

@erisu says

cause right now there is no plugin init I guess that runs when the app launches…

Mon, 04 Oct 2021 07:07:50 GMT

@erisu says

I am thinking of everything that is missing.

Mon, 04 Oct 2021 07:17:40 GMT

@miroslav.vojtus says

This something I will do most probably as well. Thanks for hint. In order to adapt main process I need it to load during script initialization not after exec. I will need to change secondary run behavior and right now I am not sure that having some init() exec method will work 😕

Mon, 04 Oct 2021 07:20:30 GMT

@miroslav.vojtus says

We are going to use the cordova-electron^3 producitve in next few months. Thank you for feedback and your development progress. Please keep the electron platform. I consider it the most cost effective cross-platform solution for win, linux, mac while with cordova also hitting ios and androids.

Mon, 04 Oct 2021 07:37:33 GMT

@erisu says

Regards the init process, I think iOS and maybe Android has by default the plugin inits on first exec unless there is the onload flag appended in config.xml for that plugin… so I will need to think of this as well to be uniform with other platforms.