import { ref } from 'vue' import { trackEvent } from '@/helpers/analytics' import { test_jre } from '@/helpers/jre.js' export default function useJavaTest() { const testingJava = ref(false) const javaTestResult = ref(null) let testDebounceTimer: ReturnType | null = null async function runJavaTest(path: string, version: number, track = true) { if (testDebounceTimer) { clearTimeout(testDebounceTimer) testDebounceTimer = null } if (!path) { javaTestResult.value = null return } testingJava.value = true try { javaTestResult.value = await test_jre(path, version) } catch { javaTestResult.value = false } testingJava.value = false if (track) { trackEvent('JavaTest', { path, success: javaTestResult.value }) } } function testJavaInstallationDebounced(path: string, version: number, delay = 600) { if (testDebounceTimer) clearTimeout(testDebounceTimer) if (!path) { javaTestResult.value = null return } testDebounceTimer = setTimeout(() => runJavaTest(path, version, false), delay) } async function testJavaInstallation(path: string, version: number, track = false) { await runJavaTest(path, version, track) } return { testingJava, javaTestResult, testJavaInstallationDebounced, testJavaInstallation, } }