diff --git a/packages/repl/package.json b/packages/repl/package.json index 9c80a42..ab5eb75 100644 --- a/packages/repl/package.json +++ b/packages/repl/package.json @@ -31,6 +31,7 @@ "nanoid": "^5.0.9", "nanostores": "^0.11.3", "onigasm": "^2.2.5", + "semver": "^7.6.3", "solid-icons": "^1.1.0", "solid-js": "^1.9.4", "solid-sonner": "^0.2.8", diff --git a/packages/repl/src/components/Updater.tsx b/packages/repl/src/components/Updater.tsx index 5df0852..e7ca354 100644 --- a/packages/repl/src/components/Updater.tsx +++ b/packages/repl/src/components/Updater.tsx @@ -2,6 +2,7 @@ import { filesize } from 'filesize' import { workerInvoke, workerOn } from 'mtcute-repl-worker/client' import { createSignal, onMount } from 'solid-js' import { Spinner } from '../lib/components/ui/spinner.tsx' +import { $versions } from '../store/versions.ts' export interface UpdaterProps { onComplete: () => void @@ -14,7 +15,8 @@ export function Updater(props: UpdaterProps) { async function runUpdater() { setStep('Checking for updates...') - const updates = await workerInvoke('vfs', 'checkForUpdates') + const { updates, latestVersions } = await workerInvoke('vfs', 'checkForUpdates') + $versions.set(latestVersions) if (Object.keys(updates).length === 0) { props.onComplete() diff --git a/packages/repl/src/components/settings/AboutTab.tsx b/packages/repl/src/components/settings/AboutTab.tsx new file mode 100644 index 0000000..aeb7501 --- /dev/null +++ b/packages/repl/src/components/settings/AboutTab.tsx @@ -0,0 +1,60 @@ +import compare from 'semver/functions/compare' +import { SiGithub } from 'solid-icons/si' +import { Button } from '../../lib/components/ui/button.tsx' +import { $versions } from '../../store/versions.ts' + +export function AboutTab() { + const maxVersion = () => { + let maxVersion = '0.0.0' + for (const [pkg, version] of Object.entries($versions.get())) { + if (pkg === '@mtcute/tl') continue + if (compare(version, maxVersion) > 0) { + maxVersion = version + } + } + + return maxVersion + } + + return ( +
+ (running mtcute v + {maxVersion()} + , + layer + {' '} + {$versions.get()['@mtcute/tl'].split('.')[0]} + ) +
++ +
+