52 lines
1.2 KiB
JavaScript
52 lines
1.2 KiB
JavaScript
import {useState, useEffect} from 'react';
|
|
|
|
import {showToast} from './../hooks/showToast';
|
|
|
|
export const useGithubUpdateChecker = () => {
|
|
const latestReleaseUrl =
|
|
'https://api.github.com/repos/rajarsheechatterjee/lnreader/releases/latest';
|
|
|
|
const [checking, setChecking] = useState(true);
|
|
const [latestRelease, setLatestRelease] = useState();
|
|
|
|
const checkForRelease = async () => {
|
|
let res = await fetch(latestReleaseUrl);
|
|
res = await res.json();
|
|
|
|
const release = {
|
|
tag_name: res.tag_name,
|
|
body: res.body,
|
|
downloadUrl: res.assets[0].browser_download_url,
|
|
};
|
|
|
|
setLatestRelease(release);
|
|
setChecking(false);
|
|
};
|
|
|
|
const isNewVersion = versionTag => {
|
|
let currentVersion = 'v1.1.6';
|
|
const regex = /[^\\d.]/;
|
|
|
|
let newVersion = versionTag.replace(regex, '');
|
|
currentVersion = currentVersion.replace(regex, '');
|
|
|
|
return newVersion !== currentVersion;
|
|
};
|
|
|
|
useEffect(() => {
|
|
checkForRelease().catch(e => {
|
|
showToast(`Could not connect to github:\n${`${e}`.split(':')[1].trim()}`);
|
|
// console.error(e);
|
|
});
|
|
}, []);
|
|
|
|
if (!checking) {
|
|
const data = {
|
|
latestRelease,
|
|
isNewVersion: isNewVersion(latestRelease.tag_name),
|
|
};
|
|
|
|
return data;
|
|
}
|
|
};
|