Skip to content

Commit 48a7c84

Browse files
refactor(hide translate comment): Improve hiding logic by using nested selectors
1 parent 3889a22 commit 48a7c84

3 files changed

Lines changed: 15 additions & 135 deletions

File tree

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1-
.yte-hide-translate-comment {
2-
display: none !important;
3-
}
1+
body.yte-hide-translate-comment {
2+
& ytd-tri-state-button-view-model.translate-button {
3+
display: none !important;
4+
}
5+
}
Lines changed: 10 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,12 @@
1-
import type { Nullable } from "@/src/types";
2-
3-
import {
4-
type EngagementPanelVisibility,
5-
observeCommentsPanelVisibilityChange,
6-
observeTranslateComment,
7-
translateButtonSelector
8-
} from "@/src/features/hideTranslateComment/utils";
9-
import { isNewYouTubeVideoLayout, modifyElementClassList, waitForAllElements, waitForElement, waitForSpecificMessage } from "@/src/utils/utilities";
1+
import { modifyElementClassList, waitForSpecificMessage } from "@/src/utils/utilities";
102

113
import "./index.css";
12-
export const commentsPanelSelector = "ytd-engagement-panel-section-list-renderer[target-id='engagement-panel-comments-section']";
13-
export const commentsHeaderSelector = "ytd-item-section-renderer.ytd-comments div#header div#leading-section";
14-
let translateCommentObserver: Nullable<MutationObserver> = null;
15-
let commentsPanelObserver: Nullable<MutationObserver> = null;
16-
type ObserverType = "commentsPanel" | "translateComment";
17-
export function cleanUpHideTranslateCommentObserver(observerType: ObserverType) {
18-
if (observerType === "translateComment") {
19-
translateCommentObserver?.disconnect();
20-
translateCommentObserver = null;
21-
} else {
22-
commentsPanelObserver?.disconnect();
23-
commentsPanelObserver = null;
24-
}
25-
}
4+
265
export async function disableHideTranslateComment() {
27-
cleanUpHideTranslateCommentObserver("commentsPanel");
28-
cleanUpHideTranslateCommentObserver("translateComment");
29-
const isNewVideLayout = isNewYouTubeVideoLayout();
30-
if (isNewVideLayout) {
31-
const commentsPanelElement = await waitForElement(commentsPanelSelector);
32-
if (
33-
commentsPanelElement &&
34-
(commentsPanelElement.getAttribute("visibility") as EngagementPanelVisibility) === "ENGAGEMENT_PANEL_VISIBILITY_EXPANDED"
35-
)
36-
toggleHideTranslateCommentButtonsVisibility(true);
37-
} else {
38-
await waitForAllElements([commentsHeaderSelector]);
39-
toggleHideTranslateCommentButtonsVisibility(true);
40-
}
6+
modifyElementClassList("remove", {
7+
className: "yte-hide-translate-comment",
8+
element: document.body
9+
});
4110
}
4211
export async function enableHideTranslateComment() {
4312
const {
@@ -46,31 +15,8 @@ export async function enableHideTranslateComment() {
4615
}
4716
} = await waitForSpecificMessage("options", "request_data", "content");
4817
if (!enable_hide_translate_comment) return;
49-
const isNewVideLayout = isNewYouTubeVideoLayout();
50-
if (isNewVideLayout) {
51-
const commentsPanelElement = await waitForElement(commentsPanelSelector);
52-
if (
53-
commentsPanelElement &&
54-
(commentsPanelElement.getAttribute("visibility") as EngagementPanelVisibility) === "ENGAGEMENT_PANEL_VISIBILITY_EXPANDED"
55-
)
56-
toggleHideTranslateCommentButtonsVisibility(false);
57-
const observer = observeCommentsPanelVisibilityChange();
58-
if (observer) setHideTranslateCommentObserver("commentsPanel", observer);
59-
} else {
60-
await waitForAllElements([commentsHeaderSelector]);
61-
toggleHideTranslateCommentButtonsVisibility(false);
62-
const observer = observeTranslateComment();
63-
if (observer) setHideTranslateCommentObserver("translateComment", observer);
64-
}
65-
}
66-
export function setHideTranslateCommentObserver(observerType: ObserverType, observer: MutationObserver) {
67-
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
68-
observerType === "translateComment" ? (translateCommentObserver = observer) : (commentsPanelObserver = observer);
69-
}
70-
71-
export function toggleHideTranslateCommentButtonsVisibility(visible: boolean) {
72-
const translateCommentButtons = document.querySelectorAll(translateButtonSelector);
73-
translateCommentButtons.forEach((button) =>
74-
modifyElementClassList(!visible ? "add" : "remove", { className: "yte-hide-translate-comment", element: button })
75-
);
18+
modifyElementClassList("add", {
19+
className: "yte-hide-translate-comment",
20+
element: document.body
21+
});
7622
}

src/features/hideTranslateComment/utils.ts

Lines changed: 0 additions & 68 deletions
This file was deleted.

0 commit comments

Comments
 (0)