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