Просмотр исходного кода

feat: add github release body to getVersion query

Nicolas Meienberger 2 лет назад
Родитель
Сommit
363b663525

+ 4 - 2
src/server/services/system/system.service.test.ts

@@ -66,10 +66,11 @@ describe('Test: getVersion', () => {
     jest.restoreAllMocks();
   });
 
-  it('It should return version', async () => {
+  it('It should return version with body', async () => {
     // Arrange
+    const body = faker.random.words(10);
     // @ts-expect-error Mocking fetch
-    fetch.mockImplementationOnce(() => Promise.resolve({ json: () => Promise.resolve({ name: `v${faker.random.numeric(1)}.${faker.random.numeric(1)}.${faker.random.numeric()}` }) }));
+    fetch.mockImplementationOnce(() => Promise.resolve({ json: () => Promise.resolve({ name: `v${faker.random.numeric(1)}.${faker.random.numeric(1)}.${faker.random.numeric()}`, body }) }));
 
     // Act
     const version = await SystemService.getVersion();
@@ -78,6 +79,7 @@ describe('Test: getVersion', () => {
     expect(version).toBeDefined();
     expect(version.current).toBeDefined();
     expect(semver.valid(version.latest)).toBeTruthy();
+    expect(version.body).toBeDefined();
   });
 
   it('Should return undefined for latest if request fails', async () => {

+ 7 - 3
src/server/services/system/system.service.ts

@@ -41,19 +41,23 @@ export class SystemServiceClass {
    *
    * @returns {Promise<{ current: string; latest: string }>} The current and latest version
    */
-  public getVersion = async (): Promise<{ current: string; latest?: string }> => {
+  public getVersion = async () => {
     try {
       let version = await this.cache.get('latestVersion');
+      let body = await this.cache.get('latestVersionBody');
 
       if (!version) {
         const data = await fetch('https://api.github.com/repos/meienberger/runtipi/releases/latest');
-        const release = (await data.json()) as { name: string };
+        const release = (await data.json()) as { name: string; body: string };
 
         version = release.name.replace('v', '');
+        body = release.body;
+
         await this.cache.set('latestVersion', version?.replace('v', '') || '', 60 * 60);
+        await this.cache.set('latestVersionBody', body || '', 60 * 60);
       }
 
-      return { current: TipiConfig.getConfig().version, latest: version?.replace('v', '') };
+      return { current: TipiConfig.getConfig().version, latest: version?.replace('v', ''), body };
     } catch (e) {
       Logger.error(e);
       return { current: TipiConfig.getConfig().version, latest: undefined };