Skip to content
Snippets Groups Projects
versions.ts 955 B
Newer Older
  • Learn to ignore specific revisions
  • function parseSemanticVersion(versionString): [number, number, number] {
    
      return versionString
        .replace('v', '')
        .split('.')
        .map(n => parseInt(n));
    }
    
    
    export function cmpSemanticVersion(
      versionStringA: string,
      versionStringB: string,
    ): number {
    
      let x = parseSemanticVersion(versionStringA);
      let y = parseSemanticVersion(versionStringB);
    
      return x[0] - y[0] || x[1] - y[1] || x[2] - y[2];
    }
    
    
    export async function getLatestVersion(): Promise<string> {
    
      let response = await fetch(
        'https://api.github.com/repos/actualbudget/actual/tags',
      );
      let json = await response.json();
      let tags = json.map(t => t.name).concat([`v${window.Actual.ACTUAL_VERSION}`]);
      tags.sort(cmpSemanticVersion);
    
      return tags[tags.length - 1];
    }
    
    
    export async function getIsOutdated(latestVersion: string): Promise<boolean> {
    
      let clientVersion = window.Actual.ACTUAL_VERSION;
      return cmpSemanticVersion(clientVersion, latestVersion) < 0;
    }