Skip to content

Commit 9ae929d

Browse files
feat(Classic Footer): Enable classic footer on radar posts (#1927)
1 parent 96e7788 commit 9ae929d

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

src/features/classic_footer/index.js

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
import { keyToCss } from '../../utils/css_map.js';
22
import { dom } from '../../utils/dom.js';
3-
import { buildStyle, filterPostElements, postSelector } from '../../utils/interface.js';
4-
import { onNewPosts } from '../../utils/mutations.js';
3+
import { buildStyle, postSelector } from '../../utils/interface.js';
4+
import { pageModifications } from '../../utils/mutations.js';
55
import { timelineObject } from '../../utils/react_props.js';
66

77
const noteCountClass = 'xkit-classic-footer-note-count';
88

9-
const postOwnerControlsSelector = `${postSelector} ${keyToCss('postOwnerControls')}`;
10-
const footerContentSelector = `${postSelector} article footer ${keyToCss('footerContent')}`;
9+
const postOrRadarSelector = `:is(${postSelector}, aside ${keyToCss('radar')})`;
10+
const postOwnerControlsSelector = `${postOrRadarSelector} ${keyToCss('postOwnerControls')}`;
11+
const footerContentSelector = `${postOrRadarSelector} article footer ${keyToCss('footerContent')}`;
1112
const engagementControlsSelector = `${footerContentSelector} ${keyToCss('engagementControls')}`;
1213
const replyButtonSelector = `${engagementControlsSelector} button:has(svg use[href="#managed-icon__ds-reply-outline-24"])`;
13-
const closeNotesButtonSelector = `${postSelector} ${keyToCss('postActivity')} [role="tablist"] button:has(svg use[href="#managed-icon__ds-ui-x-20"])`;
14+
const closeNotesButtonSelector = `${postOrRadarSelector} ${keyToCss('postActivity')} [role="tablist"] button:has(svg use[href="#managed-icon__ds-ui-x-20"])`;
1415

1516
const locale = document.documentElement.lang;
1617
const noteCountFormat = new Intl.NumberFormat(locale);
@@ -71,15 +72,15 @@ export const styleElement = buildStyle(`
7172

7273
const onNoteCountClick = (event) => {
7374
event.stopPropagation();
74-
const postElement = event.currentTarget.closest(postSelector);
75+
const postElement = event.currentTarget.closest(postOrRadarSelector);
7576
const closeNotesButton = postElement?.querySelector(closeNotesButtonSelector);
7677

7778
closeNotesButton
7879
? closeNotesButton.click()
7980
: postElement?.querySelector(replyButtonSelector)?.click();
8081
};
8182

82-
const processPosts = (postElements) => filterPostElements(postElements).forEach(async postElement => {
83+
const processPosts = (postElements) => postElements.forEach(async postElement => {
8384
postElement.querySelector(`.${noteCountClass}`)?.remove();
8485

8586
const { noteCount } = await timelineObject(postElement);
@@ -93,10 +94,10 @@ const processPosts = (postElements) => filterPostElements(postElements).forEach(
9394
});
9495

9596
export const main = async function () {
96-
onNewPosts.addListener(processPosts);
97+
pageModifications.register(`${postOrRadarSelector} article`, processPosts);
9798
};
9899

99100
export const clean = async function () {
100-
onNewPosts.removeListener(processPosts);
101+
pageModifications.unregister(processPosts);
101102
$(`.${noteCountClass}`).remove();
102103
};

0 commit comments

Comments
 (0)