@@ -46,6 +46,7 @@ const downloadUrl = ref(releaseSeed.downloadUrl)
4646const releaseUrl = ref (releaseSeed .releaseUrl )
4747const releaseAssetName = ref (releaseSeed .assetName )
4848const releaseState = ref <' loading' | ' ready' | ' error' >(releaseSeed .state )
49+ const hasRuntimeRelease = ref (false )
4950
5051async function fetchLatestRelease() {
5152 releaseState .value = ' loading'
@@ -70,11 +71,15 @@ async function fetchLatestRelease() {
7071 downloadUrl .value = fallbackUrl
7172 releaseAssetName .value = ' '
7273 }
74+ hasRuntimeRelease .value = true
7375 releaseState .value = ' ready'
7476 } catch (err ) {
7577 console .warn (' [release]' , err )
78+ hasRuntimeRelease .value = false
7679 releaseState .value = ' error'
7780 downloadUrl .value = fallbackUrl
81+ releaseUrl .value = fallbackUrl
82+ releaseAssetName .value = ' '
7883 }
7984}
8085
@@ -281,13 +286,19 @@ watch(routeLang, (next) => {
281286const localized = computed (() => translations [lang .value ])
282287const features = computed (() => localized .value .features )
283288const steps = computed (() => localized .value .steps )
284- const releaseNotesTitleText = computed (() => localized .value .releaseNotesTitle (latestVersion .value ))
289+ const releaseNotesTitleText = computed (() =>
290+ localized .value .releaseNotesTitle (hasRuntimeRelease .value ? latestVersion .value : undefined )
291+ )
285292const releaseLinkLabel = computed (() =>
286- releaseState .value === ' ready' ? localized .value .releaseLinkReady : localized .value .releaseLoadingLink
293+ hasRuntimeRelease .value && releaseState .value === ' ready'
294+ ? localized .value .releaseLinkReady
295+ : localized .value .releaseLoadingLink
287296)
297+ const downloadHref = computed (() => (hasRuntimeRelease .value ? downloadUrl .value || fallbackUrl : fallbackUrl ))
298+ const releaseHref = computed (() => (hasRuntimeRelease .value ? releaseUrl .value || fallbackUrl : fallbackUrl ))
288299const downloadCta = computed (() => {
289300 const locale = localized .value
290- if (latestVersion .value ) return locale .downloadWithVersion (latestVersion .value )
301+ if (hasRuntimeRelease . value && latestVersion .value ) return locale .downloadWithVersion (latestVersion .value )
291302 return locale .downloadDefault
292303})
293304const releaseDateText = computed (() => {
@@ -413,7 +424,7 @@ onMounted(() => {
413424 {{ localized.heroLede }}
414425 </p >
415426 <div class =" hero-actions" >
416- <a class =" btn primary" :href =" downloadUrl " target =" _blank" rel =" noreferrer noopener" >
427+ <a class =" btn primary" :href =" downloadHref " target =" _blank" rel =" noreferrer noopener" >
417428 {{ downloadCta }}
418429 </a >
419430 <a class =" btn ghost" href =" https://github.com/coderDJing/bpm-sniffer" target =" _blank" rel =" noreferrer noopener" >
@@ -433,8 +444,8 @@ onMounted(() => {
433444 <small v-if =" releaseDateText" >{{ localized.releaseDatePrefix }}{{ releaseDateText }}</small >
434445 </div >
435446 <div >
436- <a :href =" releaseUrl " target =" _blank" rel =" noreferrer noopener" >{{ releaseLinkLabel }}</a >
437- <span v-if =" releaseAssetName" > · {{ releaseAssetName }}</span >
447+ <a :href =" releaseHref " target =" _blank" rel =" noreferrer noopener" >{{ releaseLinkLabel }}</a >
448+ <span v-if =" hasRuntimeRelease && releaseAssetName" > · {{ releaseAssetName }}</span >
438449 </div >
439450 </template >
440451 <template v-else-if =" releaseState === ' error' " >
0 commit comments