diff --git a/esp/src/src-react/hooks/platform.ts b/esp/src/src-react/hooks/platform.ts index 8e90b4ab363..66dac5d9487 100644 --- a/esp/src/src-react/hooks/platform.ts +++ b/esp/src/src-react/hooks/platform.ts @@ -137,8 +137,14 @@ export function useCheckFeatures(): Features { timestamp }; } - -const fetchReleases = () => { +interface OctokitRelease { + id: number; + draft: boolean; + prerelease: boolean; + tag_name: string; + html_url: string; +} +const fetchReleases = (): Promise<{ data: OctokitRelease[] }> => { const octokit = new Octokit({}); return octokit.request("GET /repos/{owner}/{repo}/releases", { owner: "hpcc-systems", @@ -149,16 +155,12 @@ const fetchReleases = () => { } }); }; -type ReleasesPromise = ReturnType; -type ReleasesResponse = Awaited; -type Releases = ReleasesResponse["data"]; -type Release = Releases[number]; -const _fetchLatestReleases = (): Promise => { +const _fetchLatestReleases = (): Promise => { return fetchReleases().then(response => { - const latest: { [id: string]: Release } = response.data + const latest: { [releaseID: string]: OctokitRelease } = response.data .filter(release => !release.draft || !release.prerelease) - .reduce((prev, curr: Release) => { + .reduce((prev, curr: OctokitRelease) => { const versionParts = curr.tag_name.split("."); versionParts.length = 2; const partialVersion = versionParts.join("."); @@ -167,14 +169,14 @@ const _fetchLatestReleases = (): Promise => { } return prev; }, {}); - return Object.values(latest) as Releases; + return Object.values(latest); }).catch(err => { logger.error(err); - return [] as Releases; + return []; }); }; -let releasesPromise: Promise | undefined; -export const fetchLatestReleases = (): Promise => { +let releasesPromise: Promise | undefined; +export const fetchLatestReleases = (): Promise => { if (!releasesPromise) { releasesPromise = _fetchLatestReleases(); }