Skip to content

Commit 1e63bbb

Browse files
committed
fix: formatting
1 parent 559cdb4 commit 1e63bbb

File tree

1 file changed

+163
-157
lines changed

1 file changed

+163
-157
lines changed

src/pages/changelog/changelog.js

Lines changed: 163 additions & 157 deletions
Original file line numberDiff line numberDiff line change
@@ -9,38 +9,38 @@ import markdownItTaskLists from "markdown-it-task-lists";
99
import helpers from "utils/helpers";
1010

1111
export default async function Changelog() {
12-
const GITHUB_API_URL =
13-
"https://api.github.com/repos/Acode-Foundation/Acode/releases";
14-
const CHANGELOG_FILE_URL =
15-
"https://raw.githubusercontent.com/Acode-Foundation/Acode/main/CHANGELOG.md";
16-
const currentVersion = BuildInfo.version;
17-
18-
let selectedVersion = currentVersion;
19-
let selectedStatus = "current";
20-
const versionIndicatorRef = new Ref();
21-
const versionTextRef = new Ref();
22-
23-
const versionSelector = (
24-
<div className="changelog-version-selector" data-action="select-version">
25-
<span
26-
className={"status-indicator status-" + selectedStatus}
27-
ref={versionIndicatorRef}
28-
></span>
29-
<span ref={versionTextRef}>{selectedVersion}</span>
30-
</div>
31-
);
32-
33-
const $page = Page(strings["changelog"], {
34-
tail: versionSelector,
35-
});
36-
37-
const versionSelectorMenu = Contextmenu({
38-
top: "36px",
39-
right: "5px",
40-
toggler: versionSelector,
41-
transformOrigin: "top right",
42-
innerHTML: () => {
43-
return `
12+
const GITHUB_API_URL =
13+
"https://api.github.com/repos/Acode-Foundation/Acode/releases";
14+
const CHANGELOG_FILE_URL =
15+
"https://raw.githubusercontent.com/Acode-Foundation/Acode/main/CHANGELOG.md";
16+
const currentVersion = BuildInfo.version;
17+
18+
let selectedVersion = currentVersion;
19+
let selectedStatus = "current";
20+
const versionIndicatorRef = new Ref();
21+
const versionTextRef = new Ref();
22+
23+
const versionSelector = (
24+
<div className="changelog-version-selector" data-action="select-version">
25+
<span
26+
className={"status-indicator status-" + selectedStatus}
27+
ref={versionIndicatorRef}
28+
></span>
29+
<span ref={versionTextRef}>{selectedVersion}</span>
30+
</div>
31+
);
32+
33+
const $page = Page(strings["changelog"], {
34+
tail: versionSelector,
35+
});
36+
37+
const versionSelectorMenu = Contextmenu({
38+
top: "36px",
39+
right: "5px",
40+
toggler: versionSelector,
41+
transformOrigin: "top right",
42+
innerHTML: () => {
43+
return `
4444
<li action="current">
4545
<span class="text">Current Version (${currentVersion})</span>
4646
</li>
@@ -54,129 +54,135 @@ export default async function Changelog() {
5454
<span class="text">Full Changelog</span>
5555
</li>
5656
`;
57-
},
58-
});
59-
60-
const $content = <div className="md" id="changelog"></div>;
61-
$content.innerHTML = '<div class="loading">Loading changelog...</div>';
62-
$page.content = $content;
63-
app.append($page);
64-
65-
async function loadLatestRelease() {
66-
try {
67-
const releases = await fsOperation(`${GITHUB_API_URL}/latest`).readFile(
68-
"json",
69-
);
70-
selectedVersion = releases.tag_name.replace("v", "");
71-
selectedStatus = "latest";
72-
updateVersionSelector();
73-
return renderChangelog(releases.body);
74-
} catch (error) {
75-
$content.innerHTML =
76-
'<div class="error">Failed to load latest release notes</div>';
77-
}
78-
}
79-
80-
async function loadBetaRelease() {
81-
try {
82-
const releases = await fsOperation(GITHUB_API_URL).readFile("json");
83-
const betaRelease = releases.find((r) => r.prerelease);
84-
selectedVersion = betaRelease.tag_name.replace("v", "");
85-
selectedStatus = "prerelease";
86-
updateVersionSelector();
87-
return renderChangelog(betaRelease.body);
88-
} catch (error) {
89-
$content.innerHTML =
90-
'<div class="error">Failed to load beta release notes</div>';
91-
}
92-
}
93-
94-
async function loadFullChangelog() {
95-
try {
96-
const changeLogText =
97-
await fsOperation(CHANGELOG_FILE_URL).readFile("utf8");
98-
const cleanedText = changeLogText.replace(/^#\s*Change\s*Log\s*\n*/i, "");
99-
selectedVersion = "Changelogs.md";
100-
selectedStatus = "current";
101-
updateVersionSelector();
102-
return renderChangelog(cleanedText);
103-
} catch (error) {
104-
$content.innerHTML =
105-
'<div class="error">Failed to load full changelog</div>';
106-
}
107-
}
108-
109-
async function loadVersionChangelog() {
110-
try {
111-
const releases = await fsOperation(GITHUB_API_URL).readFile("json");
112-
const currentRelease = releases.find(
113-
(r) => r.tag_name.replace("v", "") === currentVersion,
114-
);
115-
selectedVersion = currentVersion;
116-
selectedStatus = "current";
117-
updateVersionSelector();
118-
if (currentRelease) {
119-
return renderChangelog(currentRelease.body);
120-
} else {
121-
return loadLatestRelease();
122-
}
123-
} catch (error) {
124-
$content.innerHTML =
125-
'<div class="error">Failed to load version changelog</div>';
126-
}
127-
}
128-
129-
function renderChangelog(text) {
130-
const md = markdownIt({ html: true, linkify: true });
131-
const REPO_URL = "https://github.com/Acode-Foundation/Acode";
132-
let processedText = text
133-
// Convert full PR URLs to #number format with links preserved in markdown
134-
.replace(/https:\/\/github\.com\/Acode-Foundation\/Acode\/pull\/(\d+)/g, '[#$1](https://github.com/Acode-Foundation/Acode/pull/$1)')
135-
// Convert existing #number references to links if they aren't already
136-
.replace(/(?<!\[)#(\d+)(?!\])/g, '[#$1](https://github.com/Acode-Foundation/Acode/pull/$1)')
137-
// Convert @username mentions to GitHub profile links
138-
.replace(/@(\w+)/g, '[@$1](https://github.com/$1)');
139-
140-
md.use(markdownItTaskLists);
141-
const htmlContent = md.render(processedText);
142-
$content.innerHTML = htmlContent;
143-
}
144-
145-
function updateVersionSelector() {
146-
versionTextRef.textContent = selectedVersion;
147-
versionIndicatorRef.className = "status-indicator status-" + selectedStatus;
148-
}
149-
150-
versionSelectorMenu.onclick = async function(e) {
151-
const action = e.target.closest("li")?.getAttribute("action");
152-
if (!action) return;
153-
versionSelectorMenu.hide();
154-
155-
switch (action) {
156-
case "current":
157-
await loadVersionChangelog();
158-
break;
159-
case "latest":
160-
await loadLatestRelease();
161-
break;
162-
case "beta":
163-
await loadBetaRelease();
164-
break;
165-
case "full":
166-
await loadFullChangelog();
167-
break;
168-
}
169-
};
170-
171-
// Load current version changelog by default
172-
loadVersionChangelog();
173-
174-
$page.onhide = function() {
175-
actionStack.remove("changelog");
176-
};
177-
178-
actionStack.push({
179-
id: "changelog",
180-
action: $page.hide,
181-
});
57+
},
58+
});
59+
60+
const $content = <div className="md" id="changelog"></div>;
61+
$content.innerHTML = '<div class="loading">Loading changelog...</div>';
62+
$page.content = $content;
63+
app.append($page);
64+
65+
async function loadLatestRelease() {
66+
try {
67+
const releases = await fsOperation(`${GITHUB_API_URL}/latest`).readFile(
68+
"json",
69+
);
70+
selectedVersion = releases.tag_name.replace("v", "");
71+
selectedStatus = "latest";
72+
updateVersionSelector();
73+
return renderChangelog(releases.body);
74+
} catch (error) {
75+
$content.innerHTML =
76+
'<div class="error">Failed to load latest release notes</div>';
77+
}
78+
}
79+
80+
async function loadBetaRelease() {
81+
try {
82+
const releases = await fsOperation(GITHUB_API_URL).readFile("json");
83+
const betaRelease = releases.find((r) => r.prerelease);
84+
selectedVersion = betaRelease.tag_name.replace("v", "");
85+
selectedStatus = "prerelease";
86+
updateVersionSelector();
87+
return renderChangelog(betaRelease.body);
88+
} catch (error) {
89+
$content.innerHTML =
90+
'<div class="error">Failed to load beta release notes</div>';
91+
}
92+
}
93+
94+
async function loadFullChangelog() {
95+
try {
96+
const changeLogText =
97+
await fsOperation(CHANGELOG_FILE_URL).readFile("utf8");
98+
const cleanedText = changeLogText.replace(/^#\s*Change\s*Log\s*\n*/i, "");
99+
selectedVersion = "Changelogs.md";
100+
selectedStatus = "current";
101+
updateVersionSelector();
102+
return renderChangelog(cleanedText);
103+
} catch (error) {
104+
$content.innerHTML =
105+
'<div class="error">Failed to load full changelog</div>';
106+
}
107+
}
108+
109+
async function loadVersionChangelog() {
110+
try {
111+
const releases = await fsOperation(GITHUB_API_URL).readFile("json");
112+
const currentRelease = releases.find(
113+
(r) => r.tag_name.replace("v", "") === currentVersion,
114+
);
115+
selectedVersion = currentVersion;
116+
selectedStatus = "current";
117+
updateVersionSelector();
118+
if (currentRelease) {
119+
return renderChangelog(currentRelease.body);
120+
} else {
121+
return loadLatestRelease();
122+
}
123+
} catch (error) {
124+
$content.innerHTML =
125+
'<div class="error">Failed to load version changelog</div>';
126+
}
127+
}
128+
129+
function renderChangelog(text) {
130+
const md = markdownIt({ html: true, linkify: true });
131+
const REPO_URL = "https://github.com/Acode-Foundation/Acode";
132+
let processedText = text
133+
// Convert full PR URLs to #number format with links preserved in markdown
134+
.replace(
135+
/https:\/\/github\.com\/Acode-Foundation\/Acode\/pull\/(\d+)/g,
136+
"[#$1](https://github.com/Acode-Foundation/Acode/pull/$1)",
137+
)
138+
// Convert existing #number references to links if they aren't already
139+
.replace(
140+
/(?<!\[)#(\d+)(?!\])/g,
141+
"[#$1](https://github.com/Acode-Foundation/Acode/pull/$1)",
142+
)
143+
// Convert @username mentions to GitHub profile links
144+
.replace(/@(\w+)/g, "[@$1](https://github.com/$1)");
145+
146+
md.use(markdownItTaskLists);
147+
const htmlContent = md.render(processedText);
148+
$content.innerHTML = htmlContent;
149+
}
150+
151+
function updateVersionSelector() {
152+
versionTextRef.textContent = selectedVersion;
153+
versionIndicatorRef.className = "status-indicator status-" + selectedStatus;
154+
}
155+
156+
versionSelectorMenu.onclick = async function (e) {
157+
const action = e.target.closest("li")?.getAttribute("action");
158+
if (!action) return;
159+
versionSelectorMenu.hide();
160+
161+
switch (action) {
162+
case "current":
163+
await loadVersionChangelog();
164+
break;
165+
case "latest":
166+
await loadLatestRelease();
167+
break;
168+
case "beta":
169+
await loadBetaRelease();
170+
break;
171+
case "full":
172+
await loadFullChangelog();
173+
break;
174+
}
175+
};
176+
177+
// Load current version changelog by default
178+
loadVersionChangelog();
179+
180+
$page.onhide = function () {
181+
actionStack.remove("changelog");
182+
};
183+
184+
actionStack.push({
185+
id: "changelog",
186+
action: $page.hide,
187+
});
182188
}

0 commit comments

Comments
 (0)