diff --git a/dashboard/public/translation/en.json b/dashboard/public/translation/en.json
index 53563cdcb..924925370 100644
--- a/dashboard/public/translation/en.json
+++ b/dashboard/public/translation/en.json
@@ -1315,7 +1315,8 @@
"packageVersion": "Package",
"lastUpdated": "Last updated",
"customAppUpdateInfo": "Auto-update is not available for custom apps.",
- "installedAt": "Installed"
+ "installedAt": "Installed",
+ "packager": "Packager"
},
"auto": {
"description": "App updates are applied periodically based on the update schedule",
diff --git a/dashboard/public/translation/nl.json b/dashboard/public/translation/nl.json
index 44ed4b31c..0e8c95299 100644
--- a/dashboard/public/translation/nl.json
+++ b/dashboard/public/translation/nl.json
@@ -105,6 +105,9 @@
"appNotFoundDialog": {
"title": "App niet gevonden",
"description": "De app {{ appId }} met versie {{ version }} bestaat niet."
+ },
+ "action": {
+ "addCustomApp": "Aangepaste app toevoegen"
}
},
"users": {
@@ -1684,5 +1687,8 @@
},
"server": {
"title": "Server"
+ },
+ "communityapp": {
+ "installwarning": "Community-apps worden niet door Cloudron beoordeeld. Installeer alleen apps van betrouwbare ontwikkelaars. Code van derden kan uw systeem in gevaar brengen."
}
}
diff --git a/dashboard/src/components/app/Info.vue b/dashboard/src/components/app/Info.vue
index ed7474c82..2fdbf0af3 100644
--- a/dashboard/src/components/app/Info.vue
+++ b/dashboard/src/components/app/Info.vue
@@ -84,6 +84,13 @@ onMounted(() => {
{{ app.manifest.dockerImage }}
+
+
{{ $t('app.updates.info.packager') }}
+
+
+
{{ $t('app.updates.info.appId') }}
diff --git a/src/community.js b/src/community.js
index 06c502600..a748695a1 100644
--- a/src/community.js
+++ b/src/community.js
@@ -27,7 +27,7 @@ async function getAppVersion(url, version) {
if (response.status !== 200) throw new BoxError(BoxError.EXTERNAL_ERROR, `Fetch failed: ${response.status}`);
// if the content-type is incorrect, we will get a buffer
- const versionsRoot = Buffer.isBuffer(response.body) ? safe.JSON.parse(response.body) : response.body;
+ const versionsRoot = Buffer.isBuffer(response.body) ? safe.JSON.parse(response.body.toString('utf8')) : response.body;
const versionsError = manifestFormat.parseVersions(versionsRoot);
if (versionsError) throw new BoxError(BoxError.EXTERNAL_ERROR, `Invalid CloudronVersions.json: ${versionsError.message}`);
@@ -62,7 +62,7 @@ async function downloadManifest(versionsUrl) {
if (response.status !== 200) throw new BoxError(BoxError.EXTERNAL_ERROR, `Fetch failed: ${response.status}`);
// if the content-type is incorrect, we will get a buffer
- const versionsRoot = Buffer.isBuffer(response.body) ? safe.JSON.parse(response.body) : response.body;
+ const versionsRoot = Buffer.isBuffer(response.body) ? safe.JSON.parse(response.body.toString('utf8')) : response.body;
const versionsError = manifestFormat.parseVersions(versionsRoot);
if (versionsError) throw new BoxError(BoxError.EXTERNAL_ERROR, `Invalid CloudronVersions.json: ${versionsError.message}`);
@@ -86,7 +86,7 @@ async function getAppUpdate(app, options) {
if (response.status !== 200) throw new BoxError(BoxError.EXTERNAL_ERROR, `Fetch failed: ${response.status}`);
// if the content-type is incorrect, we will get a buffer
- const versionsRoot = Buffer.isBuffer(response.body) ? safe.JSON.parse(response.body) : response.body;
+ const versionsRoot = Buffer.isBuffer(response.body) ? safe.JSON.parse(response.body.toString('utf8')) : response.body;
const versionsError = manifestFormat.parseVersions(versionsRoot);
if (versionsError) throw new BoxError(BoxError.EXTERNAL_ERROR, `Invalid CloudronVersions.json: ${versionsError.message}`);