community: store versionsUrl in the database

This commit is contained in:
Girish Ramakrishnan
2026-02-05 17:29:00 +01:00
parent 91b8f1a457
commit d6eb6d3e3e
13 changed files with 249 additions and 118 deletions
+16 -4
View File
@@ -172,9 +172,8 @@ function create() {
return {
name: 'AppsModel',
getTask,
async install(manifest, config) {
async install(appData, config) {
const data = {
appStoreId: manifest.id + '@' + manifest.version,
subdomain: config.subdomain,
domain: config.domain,
secondaryDomains: config.secondaryDomains,
@@ -188,6 +187,13 @@ function create() {
backupId: config.backupId // when restoring from archive
};
// Support both appstore apps (manifest) and community apps (versionsUrl)
if (appData.versionsUrl) {
data.versionsUrl = appData.versionsUrl;
} else if (appData.manifest) {
data.appStoreId = appData.appStoreId;
}
let result;
try {
result = await fetcher.post(`${API_ORIGIN}/api/v1/apps`, data, { access_token: accessToken });
@@ -329,12 +335,18 @@ function create() {
if (result.status !== 200) return [result];
return [null, result.body.update];
},
async update(id, manifest, skipBackup = false) {
async update(id, appData, skipBackup = false) {
const data = {
appStoreId: `${manifest.id}@${manifest.version}`,
skipBackup: !!skipBackup,
};
// Support both appstore apps (manifest) and community apps (versionsUrl)
if (appData.versionsUrl) {
data.versionsUrl = appData.versionsUrl;
} else if (appData.manifest) {
data.appStoreId = appData.appStoreId;
}
let result;
try {
result = await fetcher.post(`${API_ORIGIN}/api/v1/apps/${id}/update`, data, { access_token: accessToken });
+14 -15
View File
@@ -3,23 +3,22 @@ import { fetcher } from '@cloudron/pankow';
import { API_ORIGIN } from '../constants.js';
function create() {
const accessToken = localStorage.token;
const accessToken = localStorage.token;
return {
async getApp(url, version) {
let result;
try {
result = await fetcher.get(`${API_ORIGIN}/api/v1/community/app`, { access_token: accessToken, url, version });
} catch (e) {
return [e];
}
if (result.status !== 200) return [result];
return [null, result.body];
}
};
return {
async getApp(url, version) {
let result;
try {
result = await fetcher.get(`${API_ORIGIN}/api/v1/community/app`, { access_token: accessToken, url, version });
} catch (e) {
return [e];
}
if (result.status !== 200) return [result];
return [null, result.body];
}
};
}
export default {
create,
create,
};