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
113import "./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+
265export 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}
4211export 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}
0 commit comments