From 9606978bd7f1e5e43e63352fdac6b51ae485fb96 Mon Sep 17 00:00:00 2001 From: Pablo Ruiz Date: Wed, 29 Sep 2021 22:26:12 +0200 Subject: [PATCH] Add custom icon & multiple apps support to Docker API --- README.md | 11 +++++++++++ controllers/apps.js | 42 ++++++++++++++++++++++++++++++++---------- 2 files changed, 43 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index dadb428..689dbbf 100644 --- a/README.md +++ b/README.md @@ -174,6 +174,17 @@ labels: - flame.name=My container - flame.url=https://example.com - flame.icon=icon-name # Optional, default is "docker" +# - flame.icon=custom to make changes in app. ie: custom icon upload +``` + +You can set up different apps in the same label adding `;` between each one. + +```yml +labels: + - flame.type=application + - flame.name=First App;Second App + - flame.url=https://example1.com;https://example2.com + - flame.icon=icon-name1;icon-name2 ``` And you must have activated the Docker sync option in the settings panel. diff --git a/controllers/apps.js b/controllers/apps.js index b5c66be..ace8f23 100644 --- a/controllers/apps.js +++ b/controllers/apps.js @@ -92,11 +92,17 @@ exports.getApps = asyncWrapper(async (req, res, next) => { 'flame.url' in labels && /^app/.test(labels['flame.type']) ) { - dockerApps.push({ - name: labels['flame.name'], - url: labels['flame.url'], - icon: labels['flame.icon'] || 'docker' - }); + + for (let i=0; i < labels['flame.name'].split(';').length; i++) { + const names = labels['flame.name'].split(';'); + const urls = labels['flame.url'].split(';'); + const icons = labels['flame.icon'].split(';'); + dockerApps.push({ + name: names[i] || names[0], + url: urls[i] || urls[0], + icon: icons[i] || 'docker' + }); + } } } @@ -107,13 +113,29 @@ exports.getApps = asyncWrapper(async (req, res, next) => { } for (const item of dockerApps) { - if (apps.some(app => app.name === item.name)) { - const app = apps.filter(e => e.name === item.name)[0]; - await app.update({ ...item, isPinned: true }); + if (apps.some((app) => app.name === item.name)) { + const app = apps.filter((e) => e.name === item.name)[0]; + + if(item.icon === 'custom') { + await app.update({ + name: item.name, + url: item.url, + isPinned: true, + }); + } else { + await app.update({ + name: item.name, + url: item.url, + icon: item.icon, + isPinned: true, + }); + } } else { await App.create({ - ...item, - isPinned: true + name: item.name, + url: item.url, + icon: item.icon === 'custom' ? 'docker' : item.icon, + isPinned: true, }); } }