From 8c8cf180fad2ad6951ad7ce6b74e6c163fa01d18 Mon Sep 17 00:00:00 2001 From: AAGaming Date: Thu, 14 Jul 2022 22:51:55 -0400 Subject: Updater for decky-loader (#117) * Add an updater in settings for decky-loader * add chmod * remove junk comments --- .../components/settings/pages/general/Updater.tsx | 86 ++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 frontend/src/components/settings/pages/general/Updater.tsx (limited to 'frontend/src/components/settings/pages/general/Updater.tsx') diff --git a/frontend/src/components/settings/pages/general/Updater.tsx b/frontend/src/components/settings/pages/general/Updater.tsx new file mode 100644 index 00000000..264acca2 --- /dev/null +++ b/frontend/src/components/settings/pages/general/Updater.tsx @@ -0,0 +1,86 @@ +import { DialogButton, Field, ProgressBarWithInfo, Spinner, sleep } from 'decky-frontend-lib'; +import { useEffect, useState } from 'react'; +import { FaArrowDown } from 'react-icons/fa'; + +import { callUpdaterMethod, finishUpdate } from '../../../../updater'; + +interface VerInfo { + current: string; + remote: { + assets: { + browser_download_url: string; + created_at: string; + }[]; + name: string; + body: string; + prerelease: boolean; + published_at: string; + tag_name: string; + } | null; + updatable: boolean; +} + +export default function UpdaterSettings() { + const [versionInfo, setVersionInfo] = useState(null); + const [updateProgress, setUpdateProgress] = useState(-1); + const [reloading, setReloading] = useState(false); + useEffect(() => { + (async () => { + const res = (await callUpdaterMethod('get_version')) as { result: VerInfo }; + setVersionInfo(res.result); + })(); + }, []); + + return ( + {`Current version: ${versionInfo.current}\n${ + versionInfo.updatable ? `Latest version: ${versionInfo.remote?.tag_name}` : '' + }`} + ) + } + icon={ + !versionInfo ? ( + + ) : ( + + ) + } + > + {updateProgress == -1 ? ( + { + window.DeckyUpdater = { + updateProgress: (i) => { + setUpdateProgress(i); + }, + finish: async () => { + setUpdateProgress(0); + setReloading(true); + await finishUpdate(); + }, + }; + setUpdateProgress(0); + callUpdaterMethod('do_update'); + }} + > + Update + + ) : ( + + )} + + ); +} -- cgit v1.2.3