blob: d3995ea1a121f8f94c1628979dad160440cbb365 [file] [log] [blame]
Adrià Vilanova Martínez1f652522021-10-14 00:23:23 +02001import {escapeUsername} from '../../common/communityConsoleUtils.js';
2import {isOptionEnabled} from '../../common/optionsUtils.js';
3import {createExtBadge} from '../communityConsole/utils/common.js';
4
5var authuser = (new URL(location.href)).searchParams.get('authuser') || '0';
6
7export function getSearchUrl(query) {
8 var urlpart = encodeURIComponent('query=' + encodeURIComponent(query));
9 var authuserpart =
10 (authuser == '0' ? '' : '?authuser=' + encodeURIComponent(authuser));
11 return 'https://support.google.com/s/community/search/' + urlpart +
12 authuserpart;
13}
14
15export function injectPreviousPostsLinksUnifiedProfile(isCommunityConsole) {
16 var nameElement =
17 document.querySelector('.scTailwindUser_profileUsercardname');
18 if (nameElement === null) {
19 console.error('[previousposts] Can\'t find username.');
20 return;
21 }
22
23 var name = escapeUsername(nameElement.textContent);
24 var filter = '(creator:"' + name + '" | replier:"' + name + '") forum:any';
25 var url = getSearchUrl(filter);
26
27 var links = document.createElement('div');
28 links.classList.add('TWPT-user-profile__user-links');
29
30 var a = document.createElement('a');
31 a.classList.add('TWPT-user-profile__user-link', 'TWPT-user-link');
32 a.href = url;
33 a.target = '_parent';
34 a.setAttribute(
35 'data-stats-id', 'user-posts-link--tw-power-tools-by-avm99963');
36
37 let badge;
38 if (isCommunityConsole) {
39 badge = createExtBadge();
40 } else {
41 badge = document.createElement('span');
42 badge.classList.add('TWPT-badge');
43 badge.setAttribute(
44 'title', chrome.i18n.getMessage('inject_extension_badge_helper', [
45 chrome.i18n.getMessage('appName')
46 ]));
47
48 var badgeImg = document.createElement('img');
49 badgeImg.src =
50 'https://fonts.gstatic.com/s/i/materialicons/repeat/v6/24px.svg';
51
52 badge.appendChild(badgeImg);
53 }
54
55 a.appendChild(badge);
56
57 var span = document.createElement('span');
58 span.textContent = chrome.i18n.getMessage('inject_previousposts');
59
60 a.appendChild(span);
61 links.appendChild(a);
62
63 var userDetailsNode =
64 document.querySelector('.scTailwindUser_profileUsercarddetails');
65 if (userDetailsNode === null) {
66 console.error('[previousposts] Can\'t get user card details div.');
67 return;
68 }
69
70 userDetailsNode.parentNode.insertBefore(links, userDetailsNode.nextSibling);
71}
72
73export function injectPreviousPostsLinksUnifiedProfileIfEnabled(isCommunityConsole) {
74 isOptionEnabled('history').then(isEnabled => {
75 if (isEnabled) injectPreviousPostsLinksUnifiedProfile(isCommunityConsole);
76 });
77}