diff --git a/public/src/ATON.js b/public/src/ATON.js index d7b8f5be..96be73b6 100644 --- a/public/src/ATON.js +++ b/public/src/ATON.js @@ -880,18 +880,26 @@ ATON.addFlare = (P)=>{ ATON.registerFlare = ATON.addFlare; // Setup flares +ATON._setupFlareScripts = (fid)=>{ + let F = ATON.Flares[fid]; + + // TODO +}; + ATON._setupFlares = ()=>{ for (let p in ATON.Flares){ let P = ATON.Flares[p]; - // Experimental + // Experimental (TODO: move in _setupFlareScripts) if (P._deps.length > 0){ let cc = P._deps.length; for (let s in P._deps){ let jss = document.createElement("script"); jss.src = P._deps[s]; - document.documentElement.firstChild.appendChild(jss); + jss.async = false; + //document.documentElement.firstChild.appendChild(jss); + document.head.appendChild(jss); jss.onload = ()=>{ cc--; diff --git a/services/API/openapi.json b/services/API/openapi.json index 7a863267..7bbd6643 100644 --- a/services/API/openapi.json +++ b/services/API/openapi.json @@ -349,7 +349,7 @@ "/api/v2/flares/":{ "get":{ "tags":["Flares"], - "summary": "Get list of flares on this instance", + "summary": "Get list of flares installed on this instance", "description": "....", "responses":{ @@ -360,6 +360,22 @@ } } } + }, + + "/api/v2/flares/{fid}":{ + "get":{ + "tags":["Flares"], + "summary": "Get flare details", + "description": "....", + + "responses":{ + "200":{ + "description": "Successful operation, returns flare information", + "content":{ + } + } + } + } } }, diff --git a/services/API/v2.js b/services/API/v2.js index 6dde3ba6..23be24cd 100644 --- a/services/API/v2.js +++ b/services/API/v2.js @@ -343,6 +343,7 @@ API.init = (app)=>{ /*=============================== FLARES ===============================*/ + // Get list of flares currently hosted app.get(API.BASE + "flares", (req,res)=>{ if ( !Core.Auth.isUserAdmin(req) ){ res.status(401).send([]); @@ -352,6 +353,24 @@ API.init = (app)=>{ res.send( Core.flares ); }); + // Get a flare client info + app.get(API.BASE + "flares/:fid", (req,res)=>{ + let f = req.params.fid; + + let F = Core.flares[f]; + if (!F){ + res.send(false); + return; + } + + let O = {}; + + if (F.name) O.name = F.name; + if (F.client && F.client.files) O.files = F.client.files; + + res.send( O ); + }); + /*=============================== INSTANCE ===============================*/ diff --git a/services/ATON.service.main.js b/services/ATON.service.main.js index 43234eae..059c260d 100644 --- a/services/ATON.service.main.js +++ b/services/ATON.service.main.js @@ -182,9 +182,9 @@ app.use('/dav', createProxyMiddleware({ //================================== Core.setupFlares(app); -for (let f in Core.flares){ - let flarename = Core.flares[f]; - app.use('/flares/'+flarename, express.static(Core.DIR_FLARES+flarename+"/public/")); +for (let fid in Core.flares){ + //let fid = Core.flares[f]; + app.use('/flares/'+fid, express.static(Core.DIR_FLARES+fid+"/public/")); } // START diff --git a/services/Core.js b/services/Core.js index 82b01a7b..2866a30b 100644 --- a/services/Core.js +++ b/services/Core.js @@ -92,7 +92,7 @@ Core.logYellow = (str)=>{ // Flares -Core.flares = []; +Core.flares = {}; Core.setupFlares = (app)=>{ if (!fs.existsSync(Core.DIR_FLARES)) return; @@ -114,7 +114,7 @@ Core.setupFlares = (app)=>{ let fbasepath = Core.DIR_FLARES + flarename + "/"; - Core.flares.push( flarename ); + //Core.flares.push( flarename ); // Client (public) components if (P.client){ @@ -133,6 +133,7 @@ Core.setupFlares = (app)=>{ if (P.respatterns && P.respatterns.length>2) Core.mpattern += ","+P.respatterns; + Core.flares[flarename] = P; } console.log("\nFlares (plugins) found: ");