mirror of
https://github.com/SteamDeckHomebrew/decky-loader.git
synced 2026-07-11 03:52:02 +00:00
allow users to manually check for updates
This commit is contained in:
+11
-6
@@ -22,7 +22,8 @@ class Updater:
|
|||||||
self.updater_methods = {
|
self.updater_methods = {
|
||||||
"get_version": self.get_version,
|
"get_version": self.get_version,
|
||||||
"do_update": self.do_update,
|
"do_update": self.do_update,
|
||||||
"do_restart": self.do_restart
|
"do_restart": self.do_restart,
|
||||||
|
"check_for_updates": self.check_for_updates
|
||||||
}
|
}
|
||||||
self.remoteVer = None
|
self.remoteVer = None
|
||||||
try:
|
try:
|
||||||
@@ -63,14 +64,18 @@ class Updater:
|
|||||||
else:
|
else:
|
||||||
return {"current": "unknown", "updatable": False}
|
return {"current": "unknown", "updatable": False}
|
||||||
|
|
||||||
|
async def check_for_updates(self):
|
||||||
|
async with ClientSession() as web:
|
||||||
|
async with web.request("GET", "https://api.github.com/repos/SteamDeckHomebrew/decky-loader/releases", ssl=helpers.get_ssl_context()) as res:
|
||||||
|
remoteVersions = await res.json()
|
||||||
|
self.remoteVer = next(filter(lambda ver: ver["prerelease"] and ver["tag_name"].startswith("v") and ver["tag_name"].endswith("-pre"), remoteVersions), None)
|
||||||
|
logger.info("Updated remote version information")
|
||||||
|
return await self.get_version()
|
||||||
|
|
||||||
async def version_reloader(self):
|
async def version_reloader(self):
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
async with ClientSession() as web:
|
await self.check_for_updates()
|
||||||
async with web.request("GET", "https://api.github.com/repos/SteamDeckHomebrew/decky-loader/releases", ssl=helpers.get_ssl_context()) as res:
|
|
||||||
remoteVersions = await res.json()
|
|
||||||
self.remoteVer = next(filter(lambda ver: ver["prerelease"] and ver["tag_name"].startswith("v") and ver["tag_name"].endswith("-pre"), remoteVersions), None)
|
|
||||||
logger.info("Updated remote version information")
|
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
await sleep(60 * 60) # 1 hour
|
await sleep(60 * 60) # 1 hour
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ export default function UpdaterSettings() {
|
|||||||
const [versionInfo, setVersionInfo] = useState<VerInfo | null>(null);
|
const [versionInfo, setVersionInfo] = useState<VerInfo | null>(null);
|
||||||
const [updateProgress, setUpdateProgress] = useState<number>(-1);
|
const [updateProgress, setUpdateProgress] = useState<number>(-1);
|
||||||
const [reloading, setReloading] = useState<boolean>(false);
|
const [reloading, setReloading] = useState<boolean>(false);
|
||||||
|
const [checkingForUpdates, setCheckingForUpdates] = useState<boolean>(false);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
(async () => {
|
(async () => {
|
||||||
const res = (await callUpdaterMethod('get_version')) as { result: VerInfo };
|
const res = (await callUpdaterMethod('get_version')) as { result: VerInfo };
|
||||||
@@ -51,25 +52,36 @@ export default function UpdaterSettings() {
|
|||||||
>
|
>
|
||||||
{updateProgress == -1 ? (
|
{updateProgress == -1 ? (
|
||||||
<DialogButton
|
<DialogButton
|
||||||
disabled={
|
disabled={!versionInfo?.updatable || !versionInfo?.remote || checkingForUpdates}
|
||||||
!versionInfo?.updatable || !versionInfo?.remote || versionInfo.remote.tag_name == versionInfo.current
|
onClick={
|
||||||
|
versionInfo?.remote?.tag_name == versionInfo?.current
|
||||||
|
? async () => {
|
||||||
|
setCheckingForUpdates(true);
|
||||||
|
const res = (await callUpdaterMethod('check_for_updates')) as { result: VerInfo };
|
||||||
|
setVersionInfo(res.result);
|
||||||
|
setCheckingForUpdates(false);
|
||||||
|
}
|
||||||
|
: async () => {
|
||||||
|
window.DeckyUpdater = {
|
||||||
|
updateProgress: (i) => {
|
||||||
|
setUpdateProgress(i);
|
||||||
|
},
|
||||||
|
finish: async () => {
|
||||||
|
setUpdateProgress(0);
|
||||||
|
setReloading(true);
|
||||||
|
await finishUpdate();
|
||||||
|
},
|
||||||
|
};
|
||||||
|
setUpdateProgress(0);
|
||||||
|
callUpdaterMethod('do_update');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
onClick={async () => {
|
|
||||||
window.DeckyUpdater = {
|
|
||||||
updateProgress: (i) => {
|
|
||||||
setUpdateProgress(i);
|
|
||||||
},
|
|
||||||
finish: async () => {
|
|
||||||
setUpdateProgress(0);
|
|
||||||
setReloading(true);
|
|
||||||
await finishUpdate();
|
|
||||||
},
|
|
||||||
};
|
|
||||||
setUpdateProgress(0);
|
|
||||||
callUpdaterMethod('do_update');
|
|
||||||
}}
|
|
||||||
>
|
>
|
||||||
Update
|
{checkingForUpdates
|
||||||
|
? 'Checking'
|
||||||
|
: versionInfo?.remote?.tag_name == versionInfo?.current
|
||||||
|
? 'Check For Updates'
|
||||||
|
: 'Install Update'}
|
||||||
</DialogButton>
|
</DialogButton>
|
||||||
) : (
|
) : (
|
||||||
<ProgressBarWithInfo
|
<ProgressBarWithInfo
|
||||||
|
|||||||
Reference in New Issue
Block a user