import { defineStore } from "pinia"; import { isObject, isVersion, type Version } from "@/types"; import { api } from "@/utils/Api"; interface VersionResponse { version: Version; } function isVersionResponse(arg: unknown): arg is VersionResponse { return isObject(arg) && isVersion((arg as VersionResponse).version); } interface VersionStoreState { version: Version; } export const useVersionStore = defineStore({ id: "version", state(): VersionStoreState { return { // Initialized in main.ts before mounting app. version: undefined as unknown as Version, }; }, getters: { getVersion(state: VersionStoreState): Version { return state.version; }, }, actions: { async refresh(): Promise<void> { const response = await api.get<VersionResponse>( "version", isVersionResponse ); this.version = response.version; }, }, });