Files
mdm-ordinis/ordinis-admin-ui/src/components/version/useAppVersion.ts
T
2026-05-10 16:50:50 +00:00

41 lines
1.4 KiB
TypeScript

import { useServerVersion } from '@/api/queries'
/**
* App version + update detection hook.
*
* <p>Returns:
* <ul>
* <li>{@code clientVersion}, {@code clientCommit}, {@code clientBuiltAt} —
* built-time injected via Vite {@code define} (см. vite.config.ts).</li>
* <li>{@code serverVersion} — polled из {@code /api/v1/version} каждые 5 мин.</li>
* <li>{@code updateAvailable} — true когда client.commit ≠ server.commit AND
* обе stamps known (не "unknown" и не undefined).</li>
* </ul>
*
* <p>Update detection conservative — игнорирует "unknown" commit (dev mode без
* git OR before-build-info), чтобы не показывать banner ложно.
*/
export function useAppVersion() {
const { data: server, isLoading } = useServerVersion()
const clientCommit = __APP_COMMIT__
const clientVersion = __APP_VERSION__
const clientBuiltAt = __APP_BUILT_AT__
const knownClient = clientCommit !== 'unknown' && clientCommit !== ''
const knownServer = Boolean(server?.commit) && server!.commit !== 'unknown'
const updateAvailable =
knownClient && knownServer && clientCommit !== server!.commit
return {
clientVersion,
clientCommit,
clientBuiltAt,
serverVersion: server?.version,
serverCommit: server?.commit,
serverTag: server?.tag,
updateAvailable,
isLoading,
}
}