feat: version banner UI + GET /api/v1/version backend endpoint
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
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,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user