Skip to content

Commit 132a096

Browse files
committed
Add download button
1 parent f55b303 commit 132a096

File tree

2 files changed

+87
-0
lines changed

2 files changed

+87
-0
lines changed

home/index.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,12 @@ features:
4141
<script setup>
4242
import './index.css'
4343
import vtuberLogo from './scripts/index.logo.vue'
44+
import GitHubReleases from './scripts/githubReleases.vue';
4445

4546
document.title = "Collapse Launcher - Advanced Game Launcher";
4647
</script>
48+
<GitHubReleases />
49+
4750

4851
&nbsp;
4952
&nbsp;

home/scripts/githubReleases.vue

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
<template>
2+
<div>
3+
<a
4+
v-if="latestRelease"
5+
:href="latestRelease.url"
6+
target="_blank"
7+
class="button padded-button"
8+
>
9+
Download Latest ({{ latestRelease.tag }})
10+
</a>
11+
<a
12+
v-if="latestPreRelease"
13+
:href="latestPreRelease.url"
14+
target="_blank"
15+
class="button padded-button"
16+
>
17+
Download Pre-Release ({{ latestPreRelease.tag }})
18+
</a>
19+
<p v-if="!latestRelease && !latestPreRelease">Loading releases...</p>
20+
</div>
21+
</template>
22+
23+
<script>
24+
export default {
25+
data() {
26+
return {
27+
latestRelease: null,
28+
latestPreRelease: null,
29+
};
30+
},
31+
async created() {
32+
const owner = "CollapseLauncher"; // Replace with your GitHub username
33+
const repo = "Collapse"; // Replace with your repository name
34+
35+
const releases = await this.fetchGitHubReleases(owner, repo);
36+
37+
this.latestRelease = releases.latestRelease;
38+
this.latestPreRelease = releases.latestPreRelease;
39+
},
40+
methods: {
41+
async fetchGitHubReleases(owner, repo) {
42+
try {
43+
const response = await fetch(`https://api.github.com/repos/${owner}/${repo}/releases`);
44+
const releases = await response.json();
45+
46+
const latestRelease = releases.find(release => !release.prerelease);
47+
const latestPreRelease = releases.find(release => release.prerelease);
48+
49+
return {
50+
latestRelease: latestRelease ? { tag: latestRelease.tag_name, url: latestRelease.html_url } : null,
51+
latestPreRelease: latestPreRelease ? { tag: latestPreRelease.tag_name, url: latestPreRelease.html_url } : null,
52+
};
53+
} catch (error) {
54+
console.error("Error fetching releases:", error);
55+
return { latestRelease: null, latestPreRelease: null };
56+
}
57+
},
58+
},
59+
};
60+
</script>
61+
62+
<style scoped>
63+
.padded-button {
64+
margin-left: 10px;
65+
margin-right: 10px;
66+
}
67+
68+
.button {
69+
display: inline-block;
70+
margin: 10px 10px;
71+
padding: 0.6em 1.2em;
72+
text-decoration: none;
73+
color: #fff;
74+
background-color: #3E63ED;
75+
border-radius: 20px;
76+
font-weight: 500;
77+
transition: background-color 0.3s ease;
78+
}
79+
80+
.button:hover {
81+
background-color: #5c73e7;
82+
color: #fff;
83+
}
84+
</style>

0 commit comments

Comments
 (0)