Responses inline…

From: Roman Isitua <romanisi...@gmail.com>
Reply-To: "users@royale.apache.org" <users@royale.apache.org>
Date: Saturday, March 19, 2022 at 9:07 PM
To: "users@royale.apache.org" <users@royale.apache.org>
Subject: Re: Royale support for progressive web apps (pwa)

Actually the goal is to be able to leverage the new browser api's.

AJH:  OK, but in what way?  That’s why I’m asking about the 3 levels of 
integration. One way to think of it is as a spectrum where on the “none” end, 
the goal is to re-use as much example code from MDN and other JS sources as 
possible.  Then their recipes for how to install and setup and their “Getting 
Started” examples have a better chance of working, but yoo don’t get to use 
MXML or type-checking.  At the “full” end, you’ll probably end up writing a 
“Getting Started” for Royale that leverages MXML.  Which should reduce the 
steps and amount of typing to get the example up and running.
Is there online Documentation about the three levels of integration that you 
just listed ?

AJH:  There is a need for documentation in many areas, including this

Or at least if you can point to some simple examples in the royale sdk that use 
the three ways of integration that will be helpful. I can study the source code 
and learn how it is done.

AJH: .  Most of the SWCs for 3rd party libraries in frameworks/libs, like 
CreateJS, JQuery, Material, are full integration SWCs because the goal was to 
use MXML as much as possible.  ACE might be the middle.  There won’t be 
frameworks/libs SWCs for “none” integration as then you would code directly 
against the typedefs SWCs and not use MXML at all.


Last question, (since you mentioned air.) Does royale support deploying to 
adobe air for mobile devices ? If yes. How can I leverage air mobile sdk 
functionality in a royale app.

AJH: Theoretcially, Royale can output running SWF code, and we have one 
automated test that proves that some basic functionality works, but I don’t 
think most components currently work as well on SWF.  AIR supposedly has a JS 
engine, but I haven’t tried it.  And then there are desktop runtimes for JS 
that are similar to AIR like Electron and I think some Cordova-related options 
,and I think someone recently got Royale working in Electron.
HTH,
-Alex

On Sun, 20 Mar 2022, 00:23 Alex Harui, 
<aha...@adobe.com<mailto:aha...@adobe.com>> wrote:

(If you read my thoughts in the “Implementing JS Renderer” thread, you can skip 
the next 6 paragraphs)



AFAIK, there is no current "Royale way" of creating PWAs.   However, the whole 
point of Royale is to improve developer productivity for common patterns.  New 
patterns become popular every day and it is "just" a matter of identifying what 
parts of those patterns can be made easier via declarative syntax (MXML) or 
strong typing (AS) and updating Royale accordingly.



And while the Basic and especially MXRoyale and SparkRoyale libraries are 
intended to emulate Flex patterns.  There is no requirement for all SWCs to 
emulate Flex patterns.  New patterns might require more compiler changes, but 
are possible.



Also, IMO, there are 3 "levels" of Royale integration for external libraries:  
Full, partial, and none.  Full integration generally involves wrapping external 
in AS classes.  Most of the current SWCs do that.  An AS Class is instantiated 
and its APIs do things to some JS library.  That generally provides the most 
developer productivity because the library supports MXML (no constructor 
parameters, more get/set APIs instead of functions/methods) and AS (strong 
typing).  However, that means more code runs since you are essentially wrapping 
a library in a library.



Partial integration involves creating a few AS classes to talk to the JS 
library.  I think the ACE SWC does is an example of partial integration.



And "none" means that you are writing code that pretty much calls the typedefs 
directly.



As you can hopefully see, there is a tradeoff between how much work you put 
into wrapping up external libraries and how easy it is to then write code 
against it.  If you only need to do something once, then it might be easier to 
just hack something to talk to the typedefs.


Specific to PWAs, I am definitely not an expert on PWAs, but IMO, the link 
posted was for an example of some of the related PWA APIs but didn’t really 
produce anything Progressive.  Reading the MDN articles on PWAs was a bit more 
informative, especially about the two places where the word “Progressive” 
showed up, which was 1) providing progressively more functionality based on 
device capability, and 2) progressively loading the application.

I could argue that Flex and Royale already provide a way of creating PWAs, but 
don’t use the new browser APIs.  AIR-based apps, for example, provide offline 
capabilities.  Proper use of view states provide a different way of managing 
what UI is presented to the users.  And modules provide a way to progressively 
load your app.  What is missing might be capability detection, although some of 
that may already be available by detecting OS or via some Cordova libraries.

But if the goal is to leverage these new browser APIs in Royale, then it comes 
down to picking the level of integration and creating any wrapping code if 
desired.  It would be interesting to see if Royale view states and MXML would 
make it much more efficient to create PWAs.  However, I don’t have the time to 
work on that these days.

My 2 cents,
-Alex

From: Roman Isitua <romanisi...@gmail.com<mailto:romanisi...@gmail.com>>
Reply-To: "users@royale.apache.org<mailto:users@royale.apache.org>" 
<users@royale.apache.org<mailto:users@royale.apache.org>>
Date: Monday, March 14, 2022 at 11:17 AM
To: "users@royale.apache.org<mailto:users@royale.apache.org>" 
<users@royale.apache.org<mailto:users@royale.apache.org>>
Subject: Re: Royale support for progressive web apps (pwa)

Yes. It should be in a similar section to where cordova is.

On Mon, 14 Mar 2022, 12:23 Andrew Wetmore, 
<cottag...@gmail.com<mailto:cottag...@gmail.com>> wrote:
Roman, when you get this sorted out, let's figure out where in the 
documentation we should explain how to use Royale to create progressive web 
apps. I presume it would go alongside explaining how to prepare a Royale app 
for use with Cordova to achieve a similar goal.

a

On Mon, Mar 14, 2022 at 8:16 AM Roman Isitua 
<romanisi...@gmail.com<mailto:romanisi...@gmail.com>> wrote:
One question.

 At which point in the code should the below actionscript code be added. Is it 
in the sp:Application (assuming I am using spectrum) area ? I.e In the fx 
script portion of the mxml ?

On Mon, 14 Mar 2022, 08:45 Roman Isitua, 
<romanisi...@gmail.com<mailto:romanisi...@gmail.com>> wrote:
Wow ! I will definitely try this and provide an update on the outcome.

On Mon, 14 Mar 2022, 08:42 Harbs, 
<harbs.li...@gmail.com<mailto:harbs.li...@gmail.com>> wrote:
Yes.

You can put that in a script tag in the html.

Here’s an ActionScript equivalent of that code:

if ("serviceWorker" in window.navigator) {
  window.addEventListener("load", function():void {
    window.navigator.serviceWorker
      .register("/serviceWorker.js")
      .then(function(res):void{trace("service worker registered")})
      .catch(function(err):void{trace("service worker not registered: "+ err)})
  })
}

If there’s no typedef support for serviceWorker you might need to use: 
window.navigator[“serviceWorker”]

On Mar 14, 2022, at 1:00 AM, Roman Isitua 
<romanisi...@gmail.com<mailto:romanisi...@gmail.com>> wrote:

From the tutorial the code to register the service worker is as follows:




if ("serviceWorker" in navigator) {

  window.addEventListener("load", function() {

    navigator.serviceWorker

      .register("/serviceWorker.js")

      .then(res => console.log("service worker registered"))

      .catch(err => console.log("service worker not registered", err))

  })

}
To implement the main entry point js file was modified.

So your saying it possible to do same in the index.html or actionscript  ?

If yes my next question is how ?

On Sun, 13 Mar 2022, 20:19 Harbs, 
<harbs.li...@gmail.com<mailto:harbs.li...@gmail.com>> wrote:
If you want it to work offline with Cache, you will need a service worker, but 
that is a _SEPARATE_ js file. You don’t need to modify the main JS file.

You do need to register the service worker, but that can be done either in the 
index html file, or in your ActionScript code.

On Mar 13, 2022, at 8:24 PM, Roman Isitua 
<romanisi...@gmail.com<mailto:romanisi...@gmail.com>> wrote:

From the below link

https://www.google.com/amp/s/www.freecodecamp.org/news/build-a-pwa-from-scratch-with-html-css-and-javascript/amp/<https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.google.com%2Famp%2Fs%2Fwww.freecodecamp.org%2Fnews%2Fbuild-a-pwa-from-scratch-with-html-css-and-javascript%2Famp%2F&data=04%7C01%7Caharui%40adobe.com%7C2de406a4f86e4d46fcae08da0a273352%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637833460731724903%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=EyrAD%2FSo4egYram%2FYCLj8TJ3sxcy4rOOBAogq6fScgs%3D&reserved=0>


The following steps are to be done to convert an app to pwa
1. Create a manifest.json file.

2. Modify the index.html file to reference the manifest.json.

3. Implement a ServiceWorker.js file. This will be in the same root folder as 
the generated main entry point js file.

4. Register the ServiceWorker.js file by modifying for the generated entry 
point js file.


If I am coding my web app using plain html, css and javascript it will not be a 
problem doing the above 4 tasks. But as I am using royale task three and four 
look challenging. I think the royale sdk and compiler might need to be tweaked 
to support those tasks.

On Sun, 13 Mar 2022, 19:04 Harbs, 
<harbs.li...@gmail.com<mailto:harbs.li...@gmail.com>> wrote:
No. Why would you need to modify the js file?

On Mar 13, 2022, at 7:47 PM, Roman Isitua 
<romanisi...@gmail.com<mailto:romanisi...@gmail.com>> wrote:

So I am free to modify the generated entry point js file as well ?

This does not really look like an ideal solution because each time I recompile 
the project the generated js file will be overwritten. An ideal solution will 
be to add support for it in royale sdk.



On Sun, 13 Mar 2022, 18:36 Harbs, 
<harbs.li...@gmail.com<mailto:harbs.li...@gmail.com>> wrote:
It shouldn’t be any different than a regular web app.

You can add whatever you want to the template index.html file.

On Mar 12, 2022, at 11:53 AM, Roman Isitua 
<romanisi...@gmail.com<mailto:romanisi...@gmail.com>> wrote:

I just stumbled on a tutorial on how to create a pwa app using plain html, 
javascript and css (i.e. no framework).

 I am now forced to ask the question. How can i do this in royale ?

Here is the link

https://www.google.com/amp/s/www.freecodecamp.org/news/build-a-pwa-from-scratch-with-html-css-and-javascript/amp/<https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.google.com%2Famp%2Fs%2Fwww.freecodecamp.org%2Fnews%2Fbuild-a-pwa-from-scratch-with-html-css-and-javascript%2Famp%2F&data=04%7C01%7Caharui%40adobe.com%7C2de406a4f86e4d46fcae08da0a273352%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637833460731724903%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=EyrAD%2FSo4egYram%2FYCLj8TJ3sxcy4rOOBAogq6fScgs%3D&reserved=0>


How can I register all the generated javascript files ?

Is modifying the main entry point js file in my royale project allowed ? From 
the tutorial this file will need to be modified to register the service worker.


Has someone created a pwa in royale before ?


Pwa's are rapidly being adopted it will be nice if I can package my responsive 
web application to be a pwa with little effort.


Regards,








--
Andrew Wetmore

Editor, Moose House 
Publications<https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmoosehousepress.com%2F&data=04%7C01%7Caharui%40adobe.com%7C2de406a4f86e4d46fcae08da0a273352%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637833460731724903%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=zqnC8KH0bE9UnMDTac4mnScppkx%2FxzPHt5D5CtR%2Bs60%3D&reserved=0>
Editor-Writer, The Apache Software 
Foundation<https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fapache.org%2F&data=04%7C01%7Caharui%40adobe.com%7C2de406a4f86e4d46fcae08da0a273352%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637833460731724903%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=AYCgoh52cVWv8ZP9BovsW0G8Y%2Fv6VcKtEFOGAkz9IFs%3D&reserved=0>




Reply via email to