Skip to content

Commit b50a30e

Browse files
committed
feat: Simplify update endpoint and remove app manager version handling in the frontend
1 parent caf9ef4 commit b50a30e

File tree

3 files changed

+40
-32
lines changed

3 files changed

+40
-32
lines changed

apps/api/src/app.controller.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -102,20 +102,19 @@ export class AppController extends AbstractController {
102102
* ```
103103
*/
104104
@ApiQuery({ name: 'current', required: false })
105-
@Get('/get-update/:project(sesame-orchestrator|sesame-daemon|sesame-app-manager)')
105+
@Get('/get-update/:project(sesame-orchestrator|sesame-daemon)')
106106
public async update(
107107
@Res() res: Response,
108108
@Param('project') project?: ProjectsList,
109109
@Query('current') current?: string,
110110
): Promise<Response> {
111111
const pkgInfo = this.appService.getInfo();
112112
const currentVersion = current || pkgInfo.version;
113-
const [lastMajor, lastMinor, lastPatch] = currentVersion.split('.').map(Number);
113+
const [currentMajor, currentMinor, currentPatch] = currentVersion.split('.').map(Number);
114114

115-
// Validation du format de version si le projet est différent ou si une version est fournie
116-
if (project !== pkgInfo.name || current) {
117-
if (!/[0-9]+\.[0-9]+\.[0-9]+/.test(current)) {
118-
throw new BadRequestException('Invalid version for current parameter');
115+
if (project !== pkgInfo.name) {
116+
if (!/[0-9]+\.[0-9]+\.[0-9]+/.test(currentVersion)) {
117+
throw new BadRequestException('Invalid version for current parameter or project info');
119118
}
120119
}
121120

@@ -125,8 +124,8 @@ export class AppController extends AbstractController {
125124

126125
if (data) {
127126
lastVersion = data.tag_name.replace(/^v/, '');
128-
const [currentMajor, currentMinor, currentPatch] = lastVersion.split('.').map(Number);
129-
updateAvailable = currentMajor > lastMajor || currentMinor > lastMinor || currentPatch > lastPatch;
127+
const [lastMajor, lastMinor, lastPatch] = lastVersion.split('.').map(Number);
128+
updateAvailable = lastMajor > currentMajor || (lastMajor === currentMajor && lastMinor > currentMinor) || (lastMajor === currentMajor && lastMinor === currentMinor && lastPatch > currentPatch);
130129
}
131130

132131
return res.json({

apps/api/src/app.service.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { BadRequestException, Injectable, Logger, OnApplicationBootstrap } from
22
import { PackageJson } from 'types-package-json';
33
import { ModuleRef } from '@nestjs/core';
44
import { readFileSync } from 'fs';
5+
import { join } from 'path';
56
import { AbstractService } from '~/_common/abstracts/abstract.service';
67
import { pick } from 'radash';
78
import { HttpService } from '@nestjs/axios';
@@ -138,7 +139,7 @@ export class AppService extends AbstractService implements OnApplicationBootstra
138139
private readonly config: ConfigService<any>,
139140
) {
140141
super({ moduleRef });
141-
this.package = JSON.parse(readFileSync('package.json', 'utf-8'));
142+
this.package = JSON.parse(readFileSync(join(__dirname, '../../../package.json'), 'utf-8'));
142143
}
143144

144145
/**
@@ -241,11 +242,19 @@ export class AppService extends AbstractService implements OnApplicationBootstra
241242
* Cette méthode ne fait pas d'appel à l'API GitHub, elle consulte uniquement
242243
* le cache. Les données sont mises en cache par fetchGithubRelease().
243244
*/
244-
public getProjectUpdate(project: ProjectsList): GithubUpdate {
245+
public async getProjectUpdate(project: ProjectsList): Promise<GithubUpdate | null> {
245246
if (!Object.values(ProjectsList).includes(project)) {
246247
throw new BadRequestException(`Invalid project: ${project}`);
247248
}
248249

250+
if (process.env.NODE_ENV === 'development') {
251+
this.logger.warn('GitHub release fetch in development mode.');
252+
for (const project of Object.values(ProjectsList)) {
253+
this.logger.verbose(`Checking for updates for project: ${project}`);
254+
await this.fetchGithubRelease(project);
255+
}
256+
}
257+
249258
if (this.storage.has(project)) {
250259
this.logger.debug(`Fetching ${project} tags from cache`);
251260

apps/web/src/layouts/default.vue

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ q-layout(view="hHh LpR lff" style="margin-top: -1px;")
3535
q-btn(flat round icon="mdi-close" v-close-popup)
3636
q-footer(:class="$q.dark.isActive ? 'bg-dark' : 'bg-white'" bordered)
3737
q-bar(:class="$q.dark.isActive ? 'bg-dark' : 'bg-white text-black'")
38-
span
39-
small AppManager&nbsp;
40-
small(v-text="'v' + (appManagerVersion?.currentVersion || '0.0.0')")
41-
small.bold &nbsp;/&nbsp;
38+
//- span
39+
//- small AppManager&nbsp;
40+
//- small(v-text="'v' + (appManagerVersion?.currentVersion || '0.0.0')")
41+
//- small.bold &nbsp;/&nbsp;
4242
span
4343
small Orchestrator&nbsp;
4444
small(v-text="'v' + (orchestratorVersion?.currentVersion || '0.0.0')")
@@ -47,15 +47,15 @@ q-layout(view="hHh LpR lff" style="margin-top: -1px;")
4747
small Daemon&nbsp;
4848
small(v-text="'v' + (daemonVersion?.currentVersion || '0.0.0')")
4949
div.q-pr-xs
50-
q-btn.q-px-xs(
51-
v-show="appManagerVersion?.updateAvailable"
52-
flat stretch icon="mdi-alert-box" color="amber-9"
53-
href="https://github.com/Libertech-FR/sesame-app-manager/releases" target="_blank"
54-
) App Manager
55-
q-tooltip.text-body2.bg-amber-9
56-
| MAJ disponible (
57-
span(v-text="appManagerVersion?.lastVersion || '0.0.0'")
58-
| )
50+
//- q-btn.q-px-xs(
51+
//- v-show="appManagerVersion?.updateAvailable"
52+
//- flat stretch icon="mdi-alert-box" color="amber-9"
53+
//- href="https://github.com/Libertech-FR/sesame-app-manager/releases" target="_blank"
54+
//- ) App Manager
55+
//- q-tooltip.text-body2.bg-amber-9
56+
//- | MAJ disponible (
57+
//- span(v-text="appManagerVersion?.lastVersion || '0.0.0'")
58+
//- | )
5959
q-btn.q-px-xs(
6060
v-show="orchestratorVersion?.updateAvailable"
6161
flat stretch icon="mdi-alert-box" color="amber-9"
@@ -91,26 +91,26 @@ const auth = useAuth()
9191
const config = useAppConfig()
9292
9393
let orchestratorVersion = ref<object | null>(null)
94-
let appManagerVersion = ref<object | null>(null)
94+
// let appManagerVersion = ref<object | null>(null)
9595
let daemonVersion = ref<object | null>(null)
9696
9797
onMounted(async () => {
9898
if (process.env.NODE_ENV === 'development') {
9999
orchestratorVersion.value = { currentVersion: '0.0.0-dev', lastVersion: '0.0.0-dev', updateAvailable: false }
100-
appManagerVersion.value = { currentVersion: '0.0.0-dev', lastVersion: '0.0.0-dev', updateAvailable: false }
100+
// appManagerVersion.value = { currentVersion: '0.0.0-dev', lastVersion: '0.0.0-dev', updateAvailable: false }
101101
daemonVersion.value = { currentVersion: '0.0.0-dev', lastVersion: '0.0.0-dev', updateAvailable: false }
102102
return
103103
}
104104
105105
const { data: orchestratorVersionRes } = await useHttp<any>('/get-update/sesame-orchestrator', {
106106
signal: AbortSignal.timeout(2000),
107107
})
108-
const { data: appManagerVersionRes } = await useHttp<any>('/get-update/sesame-app-manager', {
109-
signal: AbortSignal.timeout(2000),
110-
query: {
111-
current: config.appManagerVersion || '0.0.0',
112-
},
113-
})
108+
// const { data: appManagerVersionRes } = await useHttp<any>('/get-update/sesame-app-manager', {
109+
// signal: AbortSignal.timeout(2000),
110+
// query: {
111+
// current: config.appManagerVersion || '0.0.0',
112+
// },
113+
// })
114114
const { data: daemonVersionDump } = await useHttp<any>('/core/backends/execute', {
115115
signal: AbortSignal.timeout(2000),
116116
method: 'POST',
@@ -131,7 +131,7 @@ onMounted(async () => {
131131
},
132132
})
133133
orchestratorVersion.value = orchestratorVersionRes.value?.data
134-
appManagerVersion.value = appManagerVersionRes.value?.data
134+
// appManagerVersion.value = appManagerVersionRes.value?.data
135135
daemonVersion.value = daemonVersionRes.value?.data
136136
})
137137

0 commit comments

Comments
 (0)