|
1 | 1 | const presence = new Presence({ |
2 | 2 | clientId: '1200517025383075840', |
3 | 3 | }) |
4 | | -const browsingTimestamp = Math.floor(Date.now() / 1000) |
5 | | -const { pathname } = document.location |
6 | 4 |
|
7 | 5 | presence.on('UpdateData', async () => { |
| 6 | + const { pathname } = document.location |
| 7 | + |
8 | 8 | const presenceData: PresenceData = { |
9 | 9 | largeImageKey: 'https://cdn.rcd.gg/PreMiD/websites/H/HTB%20Academy/assets/logo.jpg', |
10 | | - startTimestamp: browsingTimestamp, |
11 | 10 | } |
12 | 11 |
|
13 | 12 | if (pathname === '/' || pathname === '/login') { |
14 | 13 | presenceData.details = 'Breaching into the Academy' |
15 | 14 | } |
| 15 | + |
16 | 16 | else if (pathname.includes('/dashboard')) { |
17 | 17 | presenceData.details = 'Browsing the dashboard' |
18 | 18 |
|
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}%` |
22 | 24 | } |
| 25 | + |
23 | 26 | else if (pathname.includes('/exams')) { |
24 | 27 | presenceData.details = 'Browsing the exams' |
25 | 28 | } |
| 29 | + |
26 | 30 | else if (pathname.includes('/paths')) { |
27 | 31 | presenceData.details = 'Browsing paths' |
28 | 32 | } |
| 33 | + |
29 | 34 | else if (pathname.includes('/modules')) { |
30 | 35 | presenceData.details = 'Browsing modules' |
31 | 36 | } |
32 | | - else if (pathname.includes('/section')) { |
33 | | - let module: HTMLElement | null |
34 | 37 |
|
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' |
45 | 42 |
|
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}` |
50 | 45 | } |
| 46 | + |
51 | 47 | else if (pathname.includes('/details')) { |
| 48 | + const title = document.querySelector('.page-title-box .page-title')?.textContent?.trim() |
52 | 49 | 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' |
56 | 51 | } |
| 52 | + |
57 | 53 | else if (pathname.includes('/my-certificates')) { |
58 | | - presenceData.details = 'Looking at their certificates' |
| 54 | + presenceData.details = 'Looking at certificates' |
| 55 | + presenceData.state = 'Admiration Mode' |
59 | 56 | } |
| 57 | + |
60 | 58 | else if (pathname.includes('/my-badges')) { |
61 | | - presenceData.details = 'Looking at their badges' |
| 59 | + presenceData.details = 'Looking at badges' |
62 | 60 | } |
63 | 61 |
|
64 | 62 | presence.setActivity(presenceData) |
|
0 commit comments