avm99963 | 37601bc | 2022-02-21 10:36:45 +0100 | [diff] [blame] | 1 | import {getOptions} from '../common/optionsUtils.js'; |
Adrià Vilanova Martínez | 4e0cb18 | 2022-06-26 00:21:50 +0200 | [diff] [blame] | 2 | import {correctArrayKeys} from '../common/protojs.js'; |
avm99963 | 37601bc | 2022-02-21 10:36:45 +0100 | [diff] [blame] | 3 | |
| 4 | import PerForumStatsSection from './communityConsole/utils/PerForumStatsSection.js'; |
avm99963 | 37601bc | 2022-02-21 10:36:45 +0100 | [diff] [blame] | 5 | import {injectPreviousPostsLinksUnifiedProfile} from './utilsCommon/unifiedProfiles.js'; |
| 6 | |
| 7 | const profileViewRegex = /var view ?= ?(.+\]);/; |
| 8 | |
Adrià Vilanova Martínez | 89c5481 | 2022-06-06 13:32:29 +0200 | [diff] [blame] | 9 | getOptions(['history', 'perforumstats']).then(options => { |
avm99963 | 37601bc | 2022-02-21 10:36:45 +0100 | [diff] [blame] | 10 | if (options?.history) |
| 11 | injectPreviousPostsLinksUnifiedProfile(/* isCommunityConsole = */ false); |
| 12 | |
Adrià Vilanova Martínez | 89c5481 | 2022-06-06 13:32:29 +0200 | [diff] [blame] | 13 | if (options?.perforumstats) { |
avm99963 | 37601bc | 2022-02-21 10:36:45 +0100 | [diff] [blame] | 14 | try { |
| 15 | // Find chart |
| 16 | const chart = document.querySelector( |
| 17 | 'sc-tailwind-user_profile-user-profile ' + |
| 18 | '.scTailwindUser_profileUserprofilesection ' + |
| 19 | 'sc-tailwind-shared-activity-chart'); |
| 20 | if (!chart) throw new Error('Couldn\'t find existing chart.'); |
| 21 | |
| 22 | // Extract profile JSON information |
| 23 | const scripts = document.querySelectorAll('script'); |
| 24 | let profileView = null; |
| 25 | for (let i = 0; i < scripts.length; ++i) { |
| 26 | const matches = scripts[i].textContent.match(profileViewRegex); |
| 27 | if (matches?.[1]) { |
| 28 | profileView = JSON.parse(matches[1]); |
| 29 | break; |
| 30 | } |
| 31 | } |
| 32 | const profileViewC = {'1': correctArrayKeys(profileView)}; |
| 33 | console.log(profileViewC); |
| 34 | if (!profileView) throw new Error('Could not find user view data.'); |
| 35 | new PerForumStatsSection( |
| 36 | chart?.parentNode, profileViewC, |
| 37 | document.documentElement?.lang ?? 'en', |
| 38 | /* isCommunityConsole = */ false); |
| 39 | } catch (err) { |
| 40 | console.error('Error while injecting extra info: ', err); |
| 41 | } |
| 42 | } |
| 43 | }); |