-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfeed.js
More file actions
108 lines (96 loc) · 4.79 KB
/
feed.js
File metadata and controls
108 lines (96 loc) · 4.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
document.addEventListener("DOMContentLoaded", async function () {
// Changelog loader function
async function loadChangelog() {
try {
const response = await fetch('https://raw.githubusercontent.com/FreedomScoops/FreedomScoops/refs/heads/main/feed.xml');
if (!response.ok) throw new Error('Failed to load feed.xml');
const xmlText = await response.text();
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlText, 'application/xml');
const versions = xmlDoc.getElementsByTagName('version');
const changelogContent = document.getElementById('changelogContent');
changelogContent.innerHTML = '';
for (let i = 0; i < Math.min(versions.length, 4); i++) {
const version = versions[i];
const versionNumber = version.getElementsByTagName('number')[0].textContent;
const versionDate = version.getElementsByTagName('date')[0].textContent;
const shortMessage = version.getElementsByTagName('message')[0].textContent;
const fullMessage = version.getElementsByTagName('fullMessage')[0]?.textContent || shortMessage;
const changelogItem = document.createElement('div');
changelogItem.classList.add('changelog-item');
changelogItem.innerHTML = `
<h4>Version ${versionNumber}</h4>
<p><strong>Release Date:</strong> ${versionDate}</p>
<p>${shortMessage}</p>
`;
changelogItem.addEventListener('click', () => {
const modal = document.getElementById('newsModal');
const modalHeader = document.getElementById('modalHeader');
const modalBody = document.getElementById('modalBody');
modalHeader.textContent = `Version ${versionNumber} Details`;
modalBody.innerHTML = fullMessage;
modal.style.display = 'block';
setTimeout(() => modal.style.opacity = 1, 10);
const modalContent = document.querySelector('.modal-content');
setTimeout(() => modalContent.style.transform = 'scale(1)', 300);
});
changelogContent.appendChild(changelogItem);
setTimeout(() => changelogItem.classList.add('show'), i * 300);
}
} catch (error) {
document.getElementById('changelogContent').innerHTML = `<p>Error loading changelog: ${error.message}</p>`;
}
}
// GitHub commits loader function
async function loadGitHubCommits() {
try {
const response = await fetch('https://api.github.com/repos/freedomscoops/freedomscoops/commits');
if (!response.ok) throw new Error('Failed to load GitHub commits');
const commits = await response.json();
const githubCommitsContent = document.getElementById('githubCommitsContent');
githubCommitsContent.innerHTML = '';
for (let i = 0; i < Math.min(commits.length, 4); i++) {
const commit = commits[i];
const commitMessage = commit.commit.message;
const commitDate = new Date(commit.commit.author.date).toLocaleString();
const commitAuthor = commit.commit.author.name;
const commitUrl = commit.html_url;
const commitItem = document.createElement('div');
commitItem.classList.add('commit-item');
commitItem.innerHTML = `
<p><strong>Message:</strong> ${commitMessage}</p>
<p><strong>Author:</strong> ${commitAuthor}</p>
<p><strong>Date:</strong> ${commitDate}</p>
`;
// Make the commit item clickable
commitItem.addEventListener('click', () => {
window.open(commitUrl, '_blank'); // Open the commit URL in a new tab
});
githubCommitsContent.appendChild(commitItem);
setTimeout(() => commitItem.classList.add('show'), i * 300);
}
} catch (error) {
document.getElementById('githubCommitsContent').innerHTML = `<p>Error loading GitHub commits: ${error.message}</p>`;
}
}
// Load changelog and GitHub commits
loadChangelog();
loadGitHubCommits();
// Modal close events
document.getElementById('closeModal').addEventListener('click', () => {
const modal = document.getElementById('newsModal');
modal.style.opacity = 0;
const modalContent = document.querySelector('.modal-content');
modalContent.style.transform = 'scale(0.7)';
setTimeout(() => modal.style.display = 'none', 300);
});
window.addEventListener('click', (event) => {
const modal = document.getElementById('newsModal');
if (event.target === modal) {
modal.style.opacity = 0;
const modalContent = document.querySelector('.modal-content');
modalContent.style.transform = 'scale(0.7)';
setTimeout(() => modal.style.display = 'none', 300);
}
});
});