feat: add github release body to getVersion query

This commit is contained in:
Nicolas Meienberger 2023-04-10 11:45:36 +02:00
parent 64aef3d127
commit 4b46b44df0
2 changed files with 11 additions and 5 deletions

View file

@ -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 () => {

View file

@ -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 };