Skip to content

Commit 530d153

Browse files
authored
fix(HTB Academy): update dashboard stats selectors for new DOM (#10286)
* Fix(HTB Academy): update dashboard stats selectors for new DOM * fix(HTB Academy): simplified version of last commit * fix(HTB Academy): bumped version
1 parent aa69e46 commit 530d153

File tree

2 files changed

+26
-28
lines changed

2 files changed

+26
-28
lines changed

websites/H/HTB Academy/metadata.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
},
1212
"url": "academy.hackthebox.com",
1313
"regExp": "^https?[:][/][/]academy[.]hackthebox[.]com[/]",
14-
"version": "1.1.0",
14+
"version": "1.1.1",
1515
"logo": "https://cdn.rcd.gg/PreMiD/websites/H/HTB%20Academy/assets/logo.jpg",
1616
"thumbnail": "https://cdn.rcd.gg/PreMiD/websites/H/HTB%20Academy/assets/thumbnail.png",
1717
"color": "#40a832",

websites/H/HTB Academy/presence.ts

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,62 @@
11
const presence = new Presence({
22
clientId: '1200517025383075840',
33
})
4-
const browsingTimestamp = Math.floor(Date.now() / 1000)
5-
const { pathname } = document.location
64

75
presence.on('UpdateData', async () => {
6+
const { pathname } = document.location
7+
88
const presenceData: PresenceData = {
99
largeImageKey: 'https://cdn.rcd.gg/PreMiD/websites/H/HTB%20Academy/assets/logo.jpg',
10-
startTimestamp: browsingTimestamp,
1110
}
1211

1312
if (pathname === '/' || pathname === '/login') {
1413
presenceData.details = 'Breaching into the Academy'
1514
}
15+
1616
else if (pathname.includes('/dashboard')) {
1717
presenceData.details = 'Browsing the dashboard'
1818

19-
presenceData.state = `Off: ${document.querySelector('.red .progress')?.textContent} `
20-
+ `Def: ${document.querySelector('.blue .progress')?.textContent} `
21-
+ `Gen: ${document.querySelector('.green .progress')?.textContent}`
19+
const off = document.querySelector('.redPercent')?.textContent || '0'
20+
const def = document.querySelector('.bluePercent')?.textContent || '0'
21+
const gen = document.querySelector('.greenPercent')?.textContent || '0'
22+
23+
presenceData.state = `Off: ${off}% | Def: ${def}% | Gen: ${gen}%`
2224
}
25+
2326
else if (pathname.includes('/exams')) {
2427
presenceData.details = 'Browsing the exams'
2528
}
29+
2630
else if (pathname.includes('/paths')) {
2731
presenceData.details = 'Browsing paths'
2832
}
33+
2934
else if (pathname.includes('/modules')) {
3035
presenceData.details = 'Browsing modules'
3136
}
32-
else if (pathname.includes('/section')) {
33-
let module: HTMLElement | null
3437

35-
if (document.querySelector('.iterminal')) {
36-
module = document.querySelector(
37-
'#layout-wrapper > div.main-content > div > div:nth-child(2) > div > div > h4',
38-
)
39-
}
40-
else {
41-
module = document.querySelector(
42-
'#layout-wrapper > div.main-content > div > div:nth-child(1) > div > div > h4',
43-
)
44-
}
38+
else if (pathname.includes('/section')) {
39+
const moduleName = document.querySelector('.page-title.mb-0.font-size-18.letter-spacing-1-2')?.textContent
40+
const sectionElement = document.querySelector('.breadcrumb-item.active')
41+
const sectionName = sectionElement?.textContent?.trim() || 'Reading Section'
4542

46-
presenceData.details = `Reading Module: ${module?.textContent}`
47-
presenceData.state = `Section: ${
48-
document.querySelector('.training-module h1')?.textContent
49-
}`
43+
presenceData.details = `Reading Module: ${moduleName}`
44+
presenceData.state = `Section: ${sectionName}`
5045
}
46+
5147
else if (pathname.includes('/details')) {
48+
const title = document.querySelector('.page-title-box .page-title')?.textContent?.trim()
5249
presenceData.details = 'Reading details about module:'
53-
presenceData.state = `"${
54-
document.querySelector('.page-title-box .page-title')?.textContent
55-
}"`
50+
presenceData.state = title ? `"${title}"` : 'Unknown Module'
5651
}
52+
5753
else if (pathname.includes('/my-certificates')) {
58-
presenceData.details = 'Looking at their certificates'
54+
presenceData.details = 'Looking at certificates'
55+
presenceData.state = 'Admiration Mode'
5956
}
57+
6058
else if (pathname.includes('/my-badges')) {
61-
presenceData.details = 'Looking at their badges'
59+
presenceData.details = 'Looking at badges'
6260
}
6361

6462
presence.setActivity(presenceData)

0 commit comments

Comments
 (0)